네트워크 홀펀칭
2021-07-26
P2P 통신을 할 경우, NAT 때문에 UDP 홀펀칭이라는 기법을 사용한다.
공유기를 사용할 경우, 공유기의 NAT 기능으로 인해 IP/Port 가 변환되게 되는데 이는 P2P 통신을 할 수 없게 만든다.
내(192.168.0.1:100) 가 공유기를 거쳐 192.168.0.1:100 => 100.0.0.2:200 로 변환되고 상대방(200.0.0.1:100) 과 통신을 하는 것인데,
192.168.0.1:100 의 주소가 NAT 를 거치게 되면 어떤 IP/Port 로 변환될지 모르기 때문에 상대방과 직접 통신이 불가하다.
그래서 중개서버를 거쳐서 미리 IP/Port 를 변환 시키고 이를 통해 상대방과 통신하는 것을 네트워크 홀펀칭이라고 한다.
내(192.168.0.1:100) 가 공유기를 거쳐 192.168.0.1:100 => 100.0.0.2:200 으로 변환된 주소로 중개서버(300.0.0.1:3) 와 통신을 한다.
상대방(200.0.0.1:100) 도 공유기를 거쳐 192.168.0.1:100 => 200.0.0.2:200 으로 변환된 주소로 중개서버(300.0.0.1.:4) 와 통신을 한다.
이렇게 NAT 로 변환된 주소가 생겼기 때문에, 나(100.0.0.2:200)와 상대방(200.0.0.2:200)은 통신을 할 수 있게 된다.
참고
- [UDP 홀펀칭 Hole Punching] - NAT 그리고 P2P 1/2](https://cjwoov.tistory.com/5)