내부네트워크에 있는 클라이언트는 이 연결이 어떤 포트로 변경되서 나갈지 예측할수 없기 때문입니다.
제가 생각했던 방법이 있는데...
우선 중앙 서버가 있고 특정 포트와 bind한후 중앙 서버에 패킷을 보내서 외부포트번호를 알아낸후 소켓을 닫은후 다시 그 포트번호로 bind한후 listen하는 방법이였습니다.
하지만..
구현된 NAT가 같은 포트번호에 대해서 계속 같은 외부 포트번호를 할당해 줄지 보장이 안되기 때문에... -ㅁ-;;
msn메신저 사용해 보면 서로 다른 네트워크의 내부 ip끼리 파일 주고 받기가 가능한데.. 이거는 순수 p2p가 아니고 중간에 서버를 거치더군요...
또한 이러한 방법의 라이브러리도 있다고 하더군요. (win32용)
그리고...
girneter wrote:
일단 양측이 공인 ip 서버에 접속해서
최소한의 정보인 ip 와 client port pair 를 상대방에게 알려줘야만
그 이후에 직접 연결을 맺고
p2p 를 할 수 있을겁니다.
내부 ip에 있는 클라이언트는 자신의 외부 ip와 외부port는 알 방법이 없을 텐데요... 그래서 여타 p2p공유 프로그램이 내부ip에서 작동이 안되는거구...
상식적으로...
확실한건 다른 분들이 답변해 주시겠지만,
상식적으로 사설 ip 와 사설 ip 가 바로 connection 을
맺는건 불가능합니다.
외부에 공인 ip 를 가진 서버가 반드시 있어야겠지요.
일단 양측이 공인 ip 서버에 접속해서
최소한의 정보인 ip 와 client port pair 를 상대방에게 알려줘야만
그 이후에 직접 연결을 맺고
p2p 를 할 수 있을겁니다.
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
불가능할것 같네요....우선 NAT가 구현 방식에 따라 포트번호가
불가능할것 같네요....
우선 NAT가 구현 방식에 따라 포트번호가 바뀌는 방법이 다양하기 때문에...
내부네트워크에 있는 클라이언트는 이 연결이 어떤 포트로 변경되서 나갈지 예측할수 없기 때문입니다.
제가 생각했던 방법이 있는데...
우선 중앙 서버가 있고 특정 포트와 bind한후 중앙 서버에 패킷을 보내서 외부포트번호를 알아낸후 소켓을 닫은후 다시 그 포트번호로 bind한후 listen하는 방법이였습니다.
하지만..
구현된 NAT가 같은 포트번호에 대해서 계속 같은 외부 포트번호를 할당해 줄지 보장이 안되기 때문에... -ㅁ-;;
msn메신저 사용해 보면 서로 다른 네트워크의 내부 ip끼리 파일 주고 받기가 가능한데.. 이거는 순수 p2p가 아니고 중간에 서버를 거치더군요...
또한 이러한 방법의 라이브러리도 있다고 하더군요. (win32용)
그리고...
내부 ip에 있는 클라이언트는 자신의 외부 ip와 외부port는 알 방법이 없을 텐데요... 그래서 여타 p2p공유 프로그램이 내부ip에서 작동이 안되는거구...
VPN 쓰시면 되요. VPN 터널링으로 하면, 사설 - 공인망 - 사설 이렇게 연결됨
VPN 쓰시면 되요. VPN 터널링으로 하면, 사설 - 공인망 - 사설 이렇게 연결됨
vpn이나 webrtc의 stun / turn 등을
vpn이나 webrtc의 stun / turn 등을 이용해 영상 및 데이터를 p2p로 전송 할 수 있습니다.
당연히 사설IP <----> 사설IP는 중계서버고 꼭 필요합니다.
댓글 달기