홀펀칭 질문입니다. 올려짐: 2007-10-15 18:51
--------------------------------------------------------------------------------
구글님과 gpg검색으로 홀펀칭을 만들어봤는데 제대로 되지 않아 질문드립니다.
1. 클라이언트들은 우선 서버에게 UDP로 핑메세지를 날립니다.(내부아이피를 전송)
2. 우선 서버는 공인IP로 각각 클라이언트의 내부/외부 아이피를 얻어옵니다.
3. 서버도 클라이언트들에게 퐁 메세지를 날립니다.
4. 주기적으로 핑퐁 메세지를 날려 NAT맵핑을 유지합니다.
5. 홀펀칭을 시도할때 각각 클라이언트들에게 상대방 내부/외부 아이피을 알려줍니다.
6. 각 클라이언트들의 상대방의 내부/외부 아이피로 핑 메세지를 날립니다.(0.2초 간격으로 10회)
7. 각 클라이언트들에게 퐁메세지가 오면 메세지 온 클라이언트를 홀펀칭 선공이라고 판단하고 list에 저장합니다.
이 상황에서 공인 IP에 있는 클라이언트와 NAT 클라이언트는 홀펀칭은 가능합니다.
지금 테스트는 같은 NAT안에 있는 두 클라이언트가 핑 메세지를 받지 못합니다.
NAT타입은 Port Restricted타입입니다.
예를 들어 A클라이언트는 내부아이피 192.168.0.10(포트: 1779) 외부아이피 121.141.76.130(포트 : 11550)
B클라이언트는 내부아이피 192.168.0.61(포트: 1764) 외부아이피 121.141.76.130(포트 : 1848)
이렇게 체크되고 있습니다.
현재 같은 NAT는 6번까지만 진행되고 퐁메세지를 오질 않습니다. 지금 제가 잘못이해하고 있는지 질문드립니다.
모두 즐프 되세요~
위로
나디아
가입: 2004년 8월 7일
올린 글: 58
같은 네트워크.... 올려짐: 2007-10-16 09:15
--------------------------------------------------------------------------------
두개의 클라이언트가 같은 비공인 네트워크 내부이고, 비공인쪽으로 서로 핑을 보냈는데
(비공인 바인드 아이피:비공인 바인드 포트)
정보를 받지 못한다면, 파이어월과 같은 문제가 아닐까요?
파이어월과 같은 외부 인자가 없다면 이론상으로 전혀 문제가 없어야 정상입니다.
그럼 꼭 성공하세요..
_________________
^___^
위로
비회원
손님
같은 nat 내에서... 올려짐: 2007-10-16 15:13
--------------------------------------------------------------------------------
같은 Nat 에서 공인 ip/port 로 통신할때는 안되는 nat 가 있습니다.(예를 들면 iptime 시리즈)
이때는 Nat 내의 내부 ip 로 서로 핑을 날려 주면 됩니다.
예를 들어 A클라이언트는 내부아이피 192.168.0.10(포트: 1779) 외부아이피 121.141.76.130(포트 : 11550)
B클라이언트는 내부아이피 192.168.0.61(포트: 1764) 외부아이피 121.141.76.130(포트 : 1848)
일떄는 19.168.0.10(포트:1779) 와 192.168.0.61(포트: 1764) 를 가지고 서로 통신하면 됩니다.
위로
SSys
가입: 2006년 2월 24일
올린 글: 6
올려짐: 2007-10-19 16:06
--------------------------------------------------------------------------------
나디아님 비회원님 감사합니다. 로직문제가 아니라 소켓이 여러개인데 엄한 포트에다 보내고 있었습니다.(코딩은 맨정신이 최고~) 또 마침 공유기가 iptime꺼라서 좋은것도 알게되었습니다. 하나 물어볼께 있는데요. 보통 클라이언트에서 UDP 포트 사용할때 바인드 하셔서 포트 지정하시고 사용하시나요? 아니면 바인드 안하시고 자동으로 할당되는 포트를 사용하시는지 궁금합니다. 모두 즐프되세요~
위로
아노아
가입: 2002년 2월 8일
올린 글: 214
소속: 모 회사 청소과.
올려짐: 2007-10-24 23:16
--------------------------------------------------------------------------------
일단 바인드해보고 바인드안되면 그냥 할당되는 포트사용합니다. :$ 아무래도 바인드를 해야 공유기 등을 통해서 특정 포트만 멥핑해주는 작업등이 되니까요