메뉴 건너뛰기

Prof. Han, Joo-Hwan in MSE, YU

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. RemoteViewer에서 구현한 투과기술은?

 

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

 

현재는

 

5. RemoteViewer의 향후 발전 방향

 

현재는 윈도우 환경만 지원합니다만, 향후 다른 OS 환경에서도 사용할 수 있도록 기능을 확장할 예정입니다.

 

[iOS 용 RemoteViewer 작동 예] : App Store 에서 다운 및 설치 가능

[Android 용 RemoteViewer 작동 예] : 현재 성능 향상을 위한 기초작업이 진행중임.

-----------------------------------------------------------------------------------------------------------------------------------

 

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

방문: visitors / page views
오늘 :
20 / 42
어제 :
32 / 116
전체 :
831,250 / 5,322,416