메뉴 건너뛰기

한주환 교수 : ^_^Prof. Han, Joo-Hwan : ^_^

What is NAT?

1. NAT(Network Address Translation) 란?

 

NAT(Network Address Translation)는 아래 그림에서 보여주는 바와 같이 사설(내부) 네트워크 주소(10.0.x.x, 192.168.x.x,172.x.x.x 등)를 공인(외부) 네트워크 주소(예를 들면 157.55.1.10:port번호 등으)로 변환해 주는 라우터(router)의 기술 임. 우리가 가정에서 사용하는 공유기가 바로 이러한 NAT 역할을 수행합니다.

 

PC1 의 사설IP는 10.0.0.2:1025이지만, Router의 NAT를 거치면서 공인IP 157.55.1.10:2000 으로 변환되어서 인터넷으로 나가게 되는 데, 바로 이 기능을 NAT라고 부름. 

 

2. 왜 NAT(네트워크 주소변환)이 필요한가?

 

i) 첫째 공인(외부) IP 주소가 모자라기 때문에 하나의 공인 IP에 여러 개의 사설(내부) IP를 연결해 쓰기 위해

ii) 두번째 기업/기관 내부의 네트워크를 외부로 부터 보호하기 위한 보안의 목적

 

3. NAT Traversal (NAT 투과기술) 이란?

 

사설 IP 주소를 가지는 두 단말(PC) 간에 통신(이를 P2P 통신이라고 부름)이 가능하도록 하는 기술이 NAT Traversal 임.

NAT Traversal 기술은 크게 3가지입니다.

​i) Hole Punching (직접 연결)

ii) Connection Reversal (역방향 연결)

iii) Relaying (중계 연결)

 

 

직접 연결(Hole Punching) 방법은 단말간 통신을 하고자 하는 두 단말 모두 사설IP를 가지고 있는 경우, 외부에 있는 공인IP를 가진 연결서버(Matching Server)로 각각 접속하여 사설IP 정보와 공인 IP 정보를 상호 제공 및 교환하고 이 과정을 통해 획득된 상대측 단말 정보를 이용 직접 접속을 통해 연결을 이루는 방법입니다.

 

역방향 연결(Connection Reversal) 방법은 P2P 통신을 하고자 하는 두 단말 중 하나는 공인 IP 주소를 가지는 경우에 사설IP를 가진 단말이 공인IP를 가진 단말로 접속하는 연결방법 입니다.

 

중계 연결(Relaying) 방법은 사설 IP 주소를 가지는 두 단말 간에 직접 통신을 할 수 없다면, 공인 IP 주소를 가지는 외부의 중계 서버(Relay Server)를 통해 두 단말 간에 데이터를 주고받는 방식입니다.

 

4. NetServ에서 구현한 투과기술은?

 

본 프로그램에서는 위의 글 3항에서 언급한 3가지 단말 간 연결기술을 모두 구현하여 원격PC를 제어할 수 있게 만든 응용프로그램으로, 사설IP를 가지고 있든 방화벽 내에 있든 두 단말 간의 연결을 확실하게 보장하는 원격제어 데스크톱 프로그램 입니다. 특히, 원격제어 프로그램에서 광범위하게 사용하는 UDP 펀칭기술 Q뿐만 아니라 TCP Hole Punching 기술을 동시에 사용하는 응용프로그램입니다.

 

현재는

 

 

NAT Traversal means connecting 2 computers behind 2 different NAT and/or firewalls.

 

To establish a P2P connection,  using hole punching,  between two computers behind 2 different firewalls, first you need to obtain and exchange their public IPs and ports. Then each of the computers "tries" to connect to the other endpoint (IP:port) and, if you are lucky, they "traverse" the NATs and get connected (you know, your firewall/NAT lets you use private IPs while having a public one). But you need a central server to coordinate the process. A server that each client computer connects to and it is used to obtain and interchange their IPs.

Our own server (called Introducer) could play this role