네트워크 주소 변환은 컴퓨터 네트워킹에서 쓰이는 용어로, IP 패킷의 TCP/UDP Port 숫자와 목적지 IP 주소 등을 재기록하면서 라우터를 통해 트래픽을 주고 받는 기술.
내부에서 사용되는 사설 IP는 내부에서는 사용 가능하나, 외부에서 사용하는 데는 제한이 있다. 이러한 내부용 IP를 노출하지 않고, 외부와 통신하기 위해 별도의 공인IP를 사용하는데, 이 때 변환 과정이 필요하다. 들어오고 나가는 패킷을 변화하는 과정에서 NAT가 사용되고, NAT 제어를 통해 패킷이 들어오고, 나가는 내역을 제어할 수 있다.
주로 기업이나 기관에서 내부망을 사용하는 PC에 사설 IP를 제공하고, 외부 인터넷에 연결하려고 할 때는 공인 IP 하나를 같이 사용하는 형태로 운영한다. NAT는 다수의 주소 변환 정보에 대해 IP 주소와 Port 번호로 구성된 NAT Forwarding Table을 보관하고 있고, 이에 맞게 주소 변환 서비스를 제공한다.
[NAT Table]

공인 IP는 같지만, 포트 번호를 다르게 할당하여 각각의 호스트를 구분짓는 구조이다. 회사의 대표 번호를 사용하면서, 내선 번호를 지정한 것과 유사한 시스템이다. 이를 통해, 외부로 통신을 내보내고, 이에 대해 받은 네트워크 응답을 다시 해당 호스트에 보내준다. 따라서, 사설 IP를 사용하는 호스트들이 외부에서 봤을 때에는 (웹 서버가 보았을 때) 같은 클라이언트같지만, 각각의 웹 서핑이 가능한 구조가 될 수 있다.
[127.0.0.1:9000 (첫 번째 호스트) -> 129.0.0.1:23 (Telnet, 외부 호스트) 접속 시나리오]
1. Private IP - 127.0.0.1 사용 호스트가 129.0.0.1 접속 원함
2. 라우터는 NAT 기술을 사용, 이 요청에 128.0.0.1 (공인 IP 가정)과 포트번호 8801 할당.
3. 요청은 인터넷을 통해 Telnet 서버 - 129.0.0.1에 도달
4. Telnet 서버는 요청의 클라이언트 IP를 128.0.0.1의 8801 포트로 인식하고, 응답한다.
5. Telnet 서버의 응답이 라우터에 도착한다. 라우터는 포트 번호 8801을 응답 패킷에서 인식한다.
6. 라우터는 127.0.0.1:9000 호스트에 할당된 포트임을 NAT 테이블에서 찾아 응답을 돌려줌.