글 수 48
2014.08.08 14:01:08 (*.134.169.166)
25182
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은 다음과 같습니다.
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은 다음과 같습니다.
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은 다음과 같습니다.
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하게 됩니다.