NAT란 Network Address Translation의 약자로 주소를 변환시켜 주는 기술을 뜻합니다.

우리가 흔히 사용하는 공유기도 NAT기능을 주로 하는 장치입니다.


NAT의 종류는 주로 통용되는 용어로는 다음 4가지가 있습니다.


  • Full Cone
  • Restricted Cone
  • Port Restricted Cone
  • Symmetric

우리가 사용하는 공유기는 대부분 Port Restricted Cone 방식을 사용합니다.


Full Cone은 다음과 같습니다.

Full Cone.png

Client는 Server의 5.5.5.5:30000로 request를 보냈을 때 Server가

  • 5.5.5.5:30000을 통해서 response를 보냈을 때 받을 수 있습니다.
  • 5.5.5.5:40000을 통해서 response를 보냈을 때 받을 수 있습니다. (그림에는 없습니다.)
  • 6.6.6.6:30000을 통해서 response를 보냈을 때 받을 수 있습니다. (그림에는 없습니다.)
  • 6.6.6.6:40000을 통해서 response를 보냈을 때 받을 수 있습니다.
즉, request를 보낼 때 remote address / remote port와 response를 받을 때 remote address / remote port 모두 다르더라도 NAT는 Client로 연결합니다. 

또한 NAT는 Server의 address 및 port와 무관하게 Client의 address 및 port와 mapping되는 port를 할당하여 사용합니다.


Restricted Cone은 다음과 같습니다.
Restricted Cone.png  
Client는 Server의 5.5.5.5:30000로 request를 보냈을 때 Server가
  • 5.5.5.5:30000을 통해서 response를 보냈을 때 받을 수 있습니다.
  • 5.5.5.5:40000을 통해서 response를 보냈을 때 받을 수 있습니다.
  • 6.6.6.6:30000을 통해서 response를 보냈을 때 받을 수 없습니다.
즉, request를 보낼 때 remote address와 response를 받을 때 remote address가 같을 경우에만 NAT는 Client로 연결합니다.

또한 NAT는 Full Cone과 마찬가지로 Server의 address 및 port와 무관하게 Client의 address 및 port와 mapping되는 port를 할당하여 사용합니다.


Port Restricted Cone은 다음과 같습니다.
Port Restricted Cone.png
Client는 Server의 5.5.5.5:30000로 request를 보냈을 때 Server가
  • 5.5.5.5:30000을 통해서 response를 보냈을 때 받을 수 있습니다.
  • 6.6.6.6:30000을 통해서 response를 보냈을 때 받을 수 없습니다.
  • 5.5.5.5:40000을 통해서 response를 보냈을 때 받을 수 없습니다.
즉, request를 보낼 때 remote address와 response를 받을 때 remote address 혹은 remote port가 다르면 연결하지 않습니다.

또한 NAT는 Full Cone과 마찬가지로 Server의 address 및 port와 무관하게 Client의 address 및 port와 mapping되는 port를 할당하여 사용합니다.



Symmetric은 다음과 같습니다.
Symmetric.png
Client는 Server의 5.5.5.5:30000로 request를 보냈을 때 Server가
  • 5.5.5.5:30000을 통해서 response를 보냈을 때 받을 수 있습니다.
  • 6.6.6.6:30000을 통해서 response를 보냈을 때 받을 수 없습니다.
  • 5.5.5.5:40000을 통해서 response를 보냈을 때 받을 수 없습니다.
즉, request를 보낼 때 remote address와 response를 받을 때 remote address 혹은 remote port가 다르면 연결하지 않습니다.

Port Restricted Cone과는 다르게 NAT는 Server의 address 혹은 port가 다르면 Client의 address 및 port와 mapping되는 port를 새로 할당하여 사용합니다.
위의 그림에서 보다시피 Client는 동일하게 1.1.1.1:10000을 사용하여 request를 보냈으나, Server의 address 및 port가
  • 5.5.5.5:30000일 경우에는 NAT는 2.2.2.2:10000으로 변환하였습니다.
  • 6.6.6.6:40000일 경우에는 NAT는 2.2.2.2:20000으로 변환하였습니다.
그림에는 나와있지 않지만, 5.5.5.5:40000 혹은 6.6.6.6:30000으로 request를 보낼 때는 또 다른 port를 Client에 mapping하게 됩니다.