PAT의 기본 구조 및 NAT와의 차이
NAT(Network Address Translation)는 IP 패킷의 헤더 정보를 수정하여 한 주소 공간을 다른 공간으로 매핑하는 기술입니다. 기본 NAT는 private IP를 1:1로 public IP에 대응시키므로 동시에 통신할 수 있는 내부 호스트 수가 보유한 public IP 개수로 제한됩니다.
PAT(Port Address Translation), 또는 NAPT(Network Address Port Translation)는 이를 확장하여 transport layer의 port 번호까지 변환합니다. 따라서 여러 internal host가 하나의 public IP와 서로 다른 port 조합으로 외부 통신을 수행할 수 있습니다. 이는 RFC 2663과 RFC 1631에서 정의된 표준 기술입니다.
PAT의 동작 원리 및 세션 추적 메커니즘
PAT 디바이스는 각 세션을 내부 IP + 내부 port + 외부 IP + 외부 port + protocol(TCP/UDP) 조합으로 추적합니다. 내부 호스트가 외부로 요청을 시작하면, PAT 디바이스는 이 튜플 정보를 translation table(또는 NAT mapping table)에 기록하고, 외부로 나가는 패킷의 source IP와 source port를 public IP와 동적 할당 port로 변환합니다. 응답 패킷이 들어올 때 이 table을 역조회하여 원래 내부 호스트로 정확히 라우팅합니다.
실무 제약사항 및 설계 고려사항
포트 고갈 한계: 이론적으로 하나의 public IP당 최대 64k개(65,535개) 동시 port 조합이 가능하지만, 실제로는 ephemeral port 범위(보통 1024~65535) 중 일부만 사용되고, 세션 타임아웃으로 인한 메모리 누적 관리가 필요합니다. 단방향 통신 초기화 제약: PAT는 내부에서 먼저 연결을 시작해야 translation table entry가 생성되므로, 외부에서 내부로의 unsolicited 패킷 수신을 원할 시 static port forwarding 설정이 필수입니다. 프로토콜 호환성: TCP와 UDP는 port 번호로 구분 가능하지만, ICMP나 기타 protocol은 별도 변환 로직이 필요합니다.