더북(TheBook)

먼저 호스트 A는 게임 서버를 개설할 의도를 IP 4.6.5.10의 중개 서버(호스트 N)에 알리는 패킷을 보낸다. 패킷이 라우터 A를 거쳐 갈 때, 라우터 A는 NAT 테이블에 항목을 만들고 공인 IP를 발신자 주소로, 그리고 발신자 포트를 임의의 숫자 60000번으로 할당하여 재기입한다. 그다음 수정한 패킷을 호스트 N으로 보내는데, 호스트 N이 이걸 받으면 플레이어 A가 공인 IP 주소 18.19.20.21:60000의 호스트 A에 멀티플레이어 게임 서버를 띄워두었다는 사실을 기억해 둔다.

다음 호스트 B는 플레이어 A의 게임에 참가하고 싶다고 호스트 N에 알리는 패킷을 보낸다. 패킷이 라우터 B를 거쳐 갈 때, 라우터 B 역시 NAT 테이블을 갱신하고 패킷을 재기입하여 호스트 N에 보낸다. 호스트 N이 패킷을 받으면 공인 IP 12.12.6.5:62000의 호스트 B가 호스트 A에 접속하려 한다는 사실을 알게 된다.

이 시점에 호스트 N은 라우터 A를 거쳐 호스트 A에 전달하기 위한 공인 IP와 포트 정보를 알고 있는데, 이 정보를 호스트 B에 응답으로 보내면 호스트 B가 호스트 A에 직접 연결할 수 있을 것 같기도 하다. 하지만 앞서 언급한 바와 같이, 대부분 라우터는 패킷의 발신자를 검사하여 원래의 발신자가 아닌 경우에는 차단한다. 라우터 A는 이 포트를 통해 들어오는 패킷 중 오로지 호스트 N의 것만 통과시킨다. 호스트 B가 이 포트로 호스트 A에 접속하려 하면 라우터 A는 그 포트로 호스트 B와 통신한 적이 없으므로 패킷을 막아버린다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.