Skip to content

UDP hole punching

홀 펀칭 (Hole Punching): 정확한 명칭은 STUN (Simple Traversal of User Datagram Protocol Through Network Address Translators)

공유기라는 녀석이 라우터의 특성도 함께 가지고 있어 Routing Table 을 작성하기 위해 P2P 통신을 목적으로, 사전에 상대방과 패킷을 주고받고 하여 각자의 공유기에 Routing Table 을 작성하는 것을 홀 펀칭이라고 한다.

UDP 홀펀칭은 클라이언트가 NAT 밑에 있더라도, 랑데뷰 서버를 통해 두 클라이언트간 P2P 다이렉트 세션 형성을 가능하게 해준다.

About

A4 용지 파일을 정리할때 구멍을 뚫는 펀칭도구를 홀펀칭이라고 부르지요? 말그대로 NAT로 인해 막혀있는 홀(포트)를 네트워크 패킷이 지나갈 수 있게 뚫는 것입니다.

NAT

다음 네 가지 종류가 있다.

Full-cone NAT
PC에서 UDP 데이터를 공유기 밖으로 보낼 때 해당 PC의 IP와 포트 정보를 공유기가 기억하고 공유기의 포트와 맵핑을 해줌.
공유기의 해당 포트로 데이터가 오면 출발지 IP와 포트 정보를 상관하지 않고 해당 PC에 포워딩을 해줌.
(Address)-restricted-cone NAT
PC에서 UDP 데이터를 공유기 밖으로 보낼 때 해당 PC의 IP와 포트 정보, 목적지 IP를 기억하고 공유기의 포트와 맵핑을 해줌.
공유기의 해당 포트로 데이터가 오면 출발지 IP정보를 비교하여 공유기에 기록된 목적지 IP와 같으면 해당 PC에 포워딩을 해줌.
Port-restricted cone NAT
PC에서 UDP 데이터를 공유기 밖으로 보낼 때 해당 PC의 IP와 포트 정보, 목적지 IP, Port 를 기억하고 공유기의 포트와 맵핑을 해줌.
공유기의 해당 포트로 데이터가 오면 출발지 IP 정보를 비교하여 공유기에 기록된 목적지 IP, Port 가 같으면 해당 PC에 포워딩을 해줌.
Symmetric NAT
PC에서 UDP 데이터를 공유기 밖으로 보낼 때 해당 PC의 IP와 포트 정보, 목적지 IP, Port 를 기억하고 공유기의 포트와 맵핑을 해줌.
만약 목적지 IP나 Port 번호가 바뀌면 새로운 포트로 맵핑해줌.
공유기의 해당 포트로 데이터가 오면 출발지 IP 정보를 비교하여 공유기에 기록된 목적지 IP, Port 가 같으면 해당 PC에 포워딩을 해줌.

자세한 내용은 NAT 항목 참조.

See also

Favorite site

References


  1. GameDevForever_-_Hole_punching_in_Practice..pdf 

  2. Elky.tistory.com_-_Hole_Punching.pdf 

  3. Egloos_-sweeper-_Hole_Punching.pdf