Backend/Network

NAT

petitCoding 2012. 4. 12. 11:22

NAT (Network Addres Translation)

 

 

NAT은 말 그대로 네트워크상에서 주소를 변환하는 방법 (또는 시스템)을 의미한다.

우리가 사용하는 IP는 공인 IP, 사설 IP 등이 있는데, 보통 사내망에서는 사설 IP를 사용하고, 외부로 나갈 때 공인 IP로 빠져나가게 된다.

 

그런데 이런 일이 자동적으로 이루어 질리는 없을테고.. 바로 이 때 사용하는 것이 NAT이다.

 

일반적으로 회사에서는 사설 IP를 하나 또는 그 이상의 공인 IP로 사상(매핑) 시켜 패킷을 내보낸다.

그래서 외부에서 봤을 때는 사용자의 Source IP가 사설 IP가 아닌 공인 IP로 보이게 되는 것이다.

 

따라서 외부에서 이 공인 IP로 응답할 때에도, NAT은 이 공인 IP를 다시 원래의 사설 IP로 변환하여 내부 사용자에게 응답을 전달해 준다. (신기하죠잉~?)

 

공인 IP를 여러 개 할당 받을 필요 없이, 사설 IP를 사용함으로써 공인 IP의 사용 갯수를 줄여주는 효과가 있는 것이다.!! (공인IP는 한정되어 있기 때문이죵~)

 

그림으로 이해하기 쉽게 설명해 보면 요렇게!!

 

 

 

 

 

 

NAT는 여러가지  방식으로 IP를 매핑 시켜 주는데,

 

정해진 갯수만큼의 공인 IP를 가지고 순차적으로 사설 IP에게 매핑해 주거나,

정적으로 공인 IP와 사설 IP를 1:1 매핑해 놓고 데이터를 전송하거나,  

여러 개의 사설 IP들을 동일한 하나의 IP 주소로 매핑하는 등등의  다양한 방법들이 존재한다.

 

 

이를 위해서 당연히 NAT는 현재 어떤 IP가 어떤 IP로 바뀌었는지, 그리고 들어온 패킷이 어떤 IP로 나가야 하는지 등등에 관한 정보를 모두 기억하고 있어야 하는 것이다!! > _<

 

정리를 하면서 검색해 보니 리눅스 에서도 iptables를 이용한 NAT기능이 가능하다고 한다~

반응형

'Backend > Network' 카테고리의 다른 글

TLS 프로토콜 정리.  (0) 2012.04.12
OSI MODEL  (0) 2012.04.12
서브넷  (0) 2012.04.12
TCP Handshake  (0) 2012.04.12
FTP - 두 번째.  (0) 2012.04.12