더북(TheBook)

내부 호스트에 응답을 올바로 전달하려면, 외부에서 수신한 패킷을 어디로 전해줘야 할지 판단하는 메커니즘이 공유기에 있어야 한다. 매우 단순한 방법을 하나 생각해 보면, 매핑 테이블을 만들고 거기다가 발신지와 목적지 주소를 기록해 두면 어떨까. 이후 외부 IP 주소로 패킷을 받으면, 애초 그 주소로 보낸 발신지를 테이블에서 찾아 패킷의 주소를 정정하면 될 것 같다. 하지만 이 정도로도 부족한데, 여러 내부 호스트가 같은 외부 호스트로 패킷을 보내는 경우 또 문제가 생기기 때문이다. 외부 호스트 주소 하나에 여러 내부 호스트가 매핑되므로, 그중 어느 것인지 판단할 수 없다.

최신 공유기의 NAT 모듈은 네트워크 계층과 전송 계층의 추상화 경계를 넘나들며 이 문제에 대응한다. IP 헤더의 IP 주소뿐만 아니라, 전송 계층 헤더의 포트 번호까지 고쳐 쓰는 것이다. 이렇게 하면 앞서 매핑 메커니즘을 더 정교하게 만들 수 있다. 그림 2-20에 NAT 테이블에 이렇게 IP와 포트 둘 다 매핑하는 방식을 묘사하였는데, 이제 게임기는 서버로 보낸 패킷에 대한 응답을 무사히 받을 수 있다.

 

▲ 그림 2-20 NAT 라우터의 주소 및 포트 재기입

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