관리 메뉴

HAMA 블로그

홀펀칭 기초 본문

Network

홀펀칭 기초

[하마] 이승현 (wowlsh93@gmail.com) 2015. 7. 14. 22:06

http://www.gamedevforever.com/47   <-- 실전에서 알아보는 홀펀칭 기법 

http://www.sysnet.pe.kr/2/0/1226 <-- 정말 쉽게 잘 설명된 홀펀칭 기초 


위의 홀펀칭 기초 싸이트에서 핵심사항.

1. 일반적인 NAS  를 사이에둔  클라이언트 - 서버간 통신 

hole_punch_1.png

클라이언트가 서버 측에 UDP 메시지를 전송할 것입니다. 이 과정에서 다음과 같은 연결 통로가 구성됩니다.

hole_punch_2.png
서버에서 공유기로 패킷을 보내면 공유기는 60010 포트로 들어온 데이터가 수신되어야 할 내부 IP 의 컴퓨터에 대한 정보 (192.168.50.10, 50010포트)를  가지고 있으므로 정상적으로 해당 컴퓨터로 UDP 패킷을 전송할 수 있게 되는 것입니다.

2. NAS  를 사이에둔  피어 TO 피어 간 통신 

"Hole Punching"에서는 공유기의 NAT 에서 유지되는 매핑 테이블의 도움을 받아 이뤄집니다. 
아이디어는 사실 매우 간단합니다. 즉, UDP 서버가 아니라 다른 컴퓨터에서 해당 공유기 IP 의 60010 포트로 데이터
를  전송하면 어떨까 하는 것입니다.

hole_punch_3.png
물론, 저 상황에서는 데이터를 보낸 측이 "124.137.26.36:12000" 주소가 아니기 때문에 공유기 측에서 버려집니다. 하지만, 저렇게 데이터를 보내는 와중에 클라이언트 측이 "100.100.100.100:15000" 주소로 데이터를 한번 전송해 주면 어떻게 될까요?

hole_punch_4.png

공유기 매핑 테이블에는 175.194.21.14:60010 포트에 대해 2가지 원격 주소지가 포함되어 데이터를 받을 수 있게 됩니다. 결과적으로, Private IP 를 가지고 있는 PC 임에도 불구하고 마치 공용 IP 에 연결할 수 있는 것처럼 데이터를 전달받을 수 있게 된 것입니다.

Comments