![](/zbxe/layouts/mr_layouts_1st/images/default/blank.gif)
글 수 48
2014.08.08 14:01:08 (*.134.169.166)
24580
NAT란 Network Address Translation의 약자로 주소를 변환시켜 주는 기술을 뜻합니다.
우리가 흔히 사용하는 공유기도 NAT기능을 주로 하는 장치입니다.
NAT의 종류는 주로 통용되는 용어로는 다음 4가지가 있습니다.
- Full Cone
- Restricted Cone
- Port Restricted Cone
- Symmetric
우리가 사용하는 공유기는 대부분 Port Restricted Cone 방식을 사용합니다.
Full Cone은 다음과 같습니다.
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](http://forum.falinux.com/zbxe/files/attach/images/406384/945/795/391cf48b06e6f3204f263a64bf07d69c.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](http://forum.falinux.com/zbxe/files/attach/images/406384/945/795/46020606e6c90ff507ef399253488010.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](http://forum.falinux.com/zbxe/files/attach/images/406384/945/795/131c5817c43183e392cdfe7e8c30feaf.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하게 됩니다.