KR20130052240A - 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치 - Google Patents

네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20130052240A
KR20130052240A KR20110117587A KR20110117587A KR20130052240A KR 20130052240 A KR20130052240 A KR 20130052240A KR 20110117587 A KR20110117587 A KR 20110117587A KR 20110117587 A KR20110117587 A KR 20110117587A KR 20130052240 A KR20130052240 A KR 20130052240A
Authority
KR
South Korea
Prior art keywords
nat traversal
port
server
operable
nat
Prior art date
Application number
KR20110117587A
Other languages
English (en)
Inventor
신상호
김수봉
심효선
이중환
임명균
최진현
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR20110117587A priority Critical patent/KR20130052240A/ko
Priority to EP12847003.6A priority patent/EP2777240A4/en
Priority to PCT/KR2012/009162 priority patent/WO2013069927A1/en
Priority to US13/674,566 priority patent/US20130124735A1/en
Publication of KR20130052240A publication Critical patent/KR20130052240A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2582NAT traversal through control of the NAT server, e.g. using universal plug and play [UPnP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/26Network addressing or numbering for mobility support

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

네트워크 주소 변환기(Network Address Translator: NAT) 통과 기법을 프로비저닝하기 위한 기기 동작 방법은, 네트워크와 연결을 수행하는 과정과, 상기 연결된 네트워크를 통해, 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능하지를 판단하는 과정과, 상기 다수의 NAT 통과 기법들 중 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 과정을 포함하여, 기기간 연결 설정 시간을 줄일 수 있는 이점이 있습니다.

Description

네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PROVISIONING NETWORK ADDRESS TRANSLATOR TRAVERSAL METHODS}
본 발명은 일반적으로 무선통신 시스템에 관한 것으로, 특히 네트워크 주소 변환기(Network Address Translator: NAT)가 탑재된 AP(Access Point) 또는 라우터를 기반으로 구성된 서브 넷에 연결된 제1 피어(peer) 기기와 다른 서브 넷의 제2 피어(peer) 기기 사이 직접 데이터 통신이 필요할 경우, 연결 설정 시간 (connection setup time)을 줄이기 위한 방법 및 장치에 관한 것이다.
현재 다양한 기기(스마트 TV, 컴퓨터, 노트북, 스마트 가전기기 등등)들이 가정집에서 사용되고 있다. 특히, 이러한 다양한 기기들은 인터넷과 연결되어 사용자에게 다양한 서비스를 제공하고 있다. 따라서, 이러한 다양한 기기들은 인터넷과 연결되기 위해서는 각각 IP 주소를 할당받아야 한다.
하지만, IP 자원이 제한적이고 사용자의 입장에서 비용 증가 등의 이유로 NAT(Network Address Translator) 방식의 IP 공유기가 많이 이용되고 있다. 공유기를 사용하게 되면 하나의 공인(Public) IP 주소를 이용해서 다수의 기기들이 인터넷망(혹은 IP 네트워크)에 연결될 수 있기 때문에, 소규모 기업이나 가정에서 많이 사용되고 있다. 상기 NAT는 사설 IP 주소를 사용하는 로컬 네트워크(혹은 서브 넷)와 글로벌 네트워크를 연결해 주는 장치로써, 로컬 네트워크에서 생성된 패킷의 발신지 주소/포트를 변환하여 로컬 네트워크와 글로벌 네트워크 간의 통신을 가능하게 해준다.
한편, 서브 넷에 연결되어 제1 기기(device)가 다른 서브 넷에 연결되어 있는 제2 기기 사이 직접 데이터 전송(즉, 제1 기기와 제2 기기가 서버를 이용하지 않는 기기간 데이터 전송을 의미함)을 위한 여러 가지 기법들이 개발되었다. 이 기법들을 NAT 통과(traversal) 기법이라 부른다. 서브 넷을 구성하기 위한 라우터 또는 AP에 탑재된 NAT에 적용되는 NAT 통과 기법이 다를 수 있다.
종래에, 상기 제1 기기 혹은 상기 제2 기기 사이 직접 데이터전송을 위해서, 상기 제1 기기 혹은 상기 제2 기기는 다수의 NAT 통과 기법 중 한 가지 NAT 통과 기법으로 데이터전송을 시도해서 연결이 되지 않으면, 중계(relay)를 사용해서(즉, 서버를 통한 기기간 통신) 연결을 하거나, 기기 간 직접 통신이 꼭 필요한 경우에는 상기 다수의 NAT 통과 기법들로 데이터전송을 시도해보고 모두 실패하면 중계기를 이용하여 데이터전송을 시도한다.
한가지 NAT 통과 기법으로 기기 간 연결이 되는지 안 되는지를 정확히 판단하려면 어느 정도(timeout 값) 지연이 발생한다. 따라서, 네트워크 상황에 따라 연결 성공 시간이 변하기 때문에 정확한 판단을 위해서는 지연(수백 msec에서 초 단위까지)이 커질 수 있다. 하지만, 하나의 NAT 통과 기법으로 기기 간 연결이 성공하면 좋지만 모든 NAT 통과 기법을 사용하여도 기기 간 연결이 실패할 경우에는 결국 중계기(혹은 서버)를 통해 기기 간 연결이 이루어져 한다. 그러므로, 기기 간 연결 설정 시간이 길어진다. 예를 들어, 원격지에 있는 서버에서 사진을 다운로드하는 경우에 종래 NAT 통과 기법을 이용하여 연결을 시도할 시 수 초 후에 파일 전송이 시작될 수 있다.
상술한 바와 같이, 현재 대부분의 기기들은 IP 주소의 부족으로 하나의 공인 IP 주소를 가지고 여러 기기를 공유하여 사용합니다. 이를 위해 AP 또는 라우터를 사용해서 서브 넷을 구성해서 사용을 한다. 이 기기들끼리 콘텐츠를 공유하는 서비스를 제공하기 위해서는 중계 혹은 서버를 사용해서 콘텐츠를 공유할 수 있지만, 서버 운용비를 축소하기 위해 가능한 직접 연결을 시도한다. 따라서, 직접 연결 성공률을 높이기 위해 가능한 많은 NAT 통과(traversal) 기법을 사용하게 되는데 많은 NAT 통과 기법이 시도될수록 연결 성공 시간이 지연이 된다.
따라서, 서브 넷에 연결된 제1 기기와 다른 서브 넷의 기기 사이 직접 데이터통신이 필요할 경우, 기기 사이의 연결 설정 시간(connection setup time)을 줄이기 위한 방법 및 장치가 필요하다.
본 발명의 목적은 NAT 통과(traversal) 기법을 프로비저닝하기 위한 방법 및 장치를 제공함에 있다.
본 발명은 다른 목적은 서로 다른 NAT 기법을 이용하는 서브 넷들 사이 직접 연결을 할 시 연결 설정 시간을 줄이기 위한 방법 및 장치를 제공함에 있다.
상기한 목적들을 달성하기 위한 본 발명의 제 1 견지에 따르면, 네트워크 주소 변환기(Network Address Translator: NAT) 통과 기법을 프로비저닝하기 위한 기기 동작 방법에 있어서, 네트워크와 연결을 수행하는 과정과, 상기 연결된 네트워크를 통해, 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능하지를 판단하는 과정과, 상기 다수의 NAT 통과 기법들 중 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 과정을 포함하는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 2 견지에 따르면, 기기 간 데이터 전송을 위한 방법에 있어서, 데이터 전송 이벤트가 발생할 시, 기저장된 동작가능한 NAT 통과 기법들 중 하나를 선택하는 과정과, 상기 선택된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 과정을 포함하는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 3 견지에 따르면,기기 간 데이터 전송을 위한 방법에 있어서, 데이터 전송 이벤트가 발생할 시, 상대방 기기의 동작가능한 NAT 통과 기법에 대한 정보를 획득하는 과정과, 상기 상대방 기기의 동작가능한 NAT 통과 기법에 관한 정보와 상기 기기의 동작가능한 NAT 통과 기법에 관한 정보를 기반으로, 하나의 동작가능한 NAT 통과 기법을 결정하는 과정과, 상기 결정된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 과정을 포함하는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 4 견지에 따르면, 네트워크 주소 변환기(Network Address Translator: NAT) 통과 기법을 프로비저닝하기 위한 장치에 있어서, 네트워크와 연결을 수행하고, 상기 연결된 네트워크를 통해, 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능하지를 판단하는 제어부와, 상기 다수의 NAT 통과 기법들 중 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 메모리를 포함하는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 5 견지에 따르면, 기기 간 데이터 전송을 위한 방법에 있어서, 데이터 전송 이벤트가 발생할 시, 기저장된 동작가능한 NAT 통과 기법들 중 하나를 선택하는 제어부와, 상기 선택된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 인터페이스부를 포함하는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 6 견지에 따르면, 기기 간 데이터 전송을 위한 방법에 있어서, 데이터 전송 이벤트가 발생할 시, 상대방 기기의 동작가능한 NAT 통과 기법에 대한 정보를 획득하고, 상기 상대방 기기의 동작가능한 NAT 통과 기법에 관한 정보와 상기 기기의 동작가능한 NAT 통과 기법에 관한 정보를 기반으로, 하나의 동작가능한 NAT 통과 기법을 결정하는 제어부와, 상기 결정된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 인터페이스부를 포함하는 것을 특징으로 한다.
상술한 바와 같이, 서로 다른 NAT 기법을 이용하는 서브 넷들 사이 데이터전송이 시작되기 전에, 상기 서브 넷에 속한 기기가 미리 어느 NAT 통과 기법이 동작하는지를 프로비저닝함으로써, 기기간 연결 설정 시간을 줄일 수 있는 이점이 있다.
또한, 기기간 직접 통신을 수행하기 전에, 미리 어느 NAT 통과 기법이 동작하는 지를 테스트함으로써, 정확한 NAT 통과 기법을 선택하여 사용할 수 있다.
도 1은 본 발명의 실시 예에 따른 NAT 통과 기법 프로비저닝을 위한 네트워크 토폴로지(topology)를 도시하고 있다.
도 2는 본 발명의 실시 예에 따른 NAT 통과 기법 동작 여부를 확인하기 위한 기기 동작 흐름도를 도시하고 있다.
도 3은 본 발명의 제1 실시 예에 따른 기기 간 직접 데이터 전송을 수행하기 위한 기기 동작 흐름도를 도시하고 있다.
도 4는 본 발명의 제2 실시 예에 따른 기기 간 직접 데이터 전송을 수행하기 위한 기기 동작 흐름도를 도시하고 있다.
도 5는 본 발명에 따른 NAT 통과 기법 중 IGD(Internet Gateway Device) 포트 매핑(port mapping) 예를 도시하고 있다.
도 6은 본 발명에 따른 NAT 통과 기법 중 UDP(User Datagram Protocol) 홀 펀칭(hole punching) 예를 도시하고 있다.
도 7은 본 발명에 따른 NAT 통과 기법 중 TCP(Transport Control Protocol) 홀 펀칭 예를 도시하고 있다.
도 8은 본 발명의 실시 예에 따른 IGD 포트 매핑 테스트 절차를 도시하고 있다.
도 9는 본 발명에 따른 특별한 포트가 제한된 형태의 AP와 그리고 정상적인 포트가 제한된 형태의 AP를 갖는 경우의 UDP 홀 펀칭 실패를 도시하고 있다.
도 10은 본 발명의 실시 예에 따른 UDP 홀 펀칭 테스트 절차를 도시하고 있다.
도 11은 본 발명의 실시 예에 따른 TCP 홀 펀칭 테스트 절차를 도시하고 있다.
도 12는 본 발명의 실시 예에 따른 시뮬레이션 환경을 도시하고 있다.
도 13은 본 발명의 실시 예에 따른 NAT 통과 기법을 프로비저닝하기 위한 장치를 도시하고 있다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 본 발명은 네트워크 주소 변환기(Network Address Translator: NAT) 통과(traversal) 기법을 프로비저닝하기 위한 방법 및 장치에 관해 설명하기로 한다.
이하, 당업자에게 잘 알려진 다수의 NAT 통과 기법들 중 어떤 NAT 통과 기법으로 동작할지를 미리 확인하는 기법을, NAT 통과 기법 프로비저닝(provisioning)이라 칭한다.
본 발명에서, 기기는 어떤 NAT 통과 기법으로 동작할지 미리 결정한 후, 상기 기기는 타깃 기기와 파일전송이 필요할 때, 상기 해당 기기는 실패 없이 즉시 상기 기결정된 NAT 통과 기법을 사용하여 파일전송을 시작할 수 있다. 따라서, 동작하지 않는 NAT 통과 기법들을 이용하여 파일전송을 시도하려 하지 않기 때문에, NAT 통과 기법 프로비저닝(provisioning)은 연결설정(connection setup) 시간을 줄여 줄 수 있다. 상기 기기는 컴퓨터, 스마트폰, 스마트 TV 같은 인터넷 검색을 할 수 있는 기기를 의미한다.
도 1은 본 발명의 실시 예에 따른 NAT 통과 기법 프로비저닝을 위한 네트워크 토폴로지(topology)를 도시하고 있다.
상기 도 1을 참조하면, 기기 간 직접 데이터 전송이 수행되기 전에, 기기들(100, 102)은 각각 서버(110, 112, 114)와 시그널링 절차를 통해 미리 NAT 통과 기법 동작 여부 확인한다. 이때, 상기 기기들(100, 102)은 각각 NAT(104, 106)를 통해 인터넷망(108)에 연결된다. 상기 NAT(104, 106)는 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷망(108)에 패킷을 내보내고(outgoing), 그리고 공인 IP 주소를 사설 IP 주소로 변환하여 인터넷망(108)으로부터 유입되는(incoming) 패킷을 상기 기기들(100, 102)로 전달한다.
한편, NAT(104)와 기기(100)는 하나의 서브 넷을 구성하고 마찬가지로 NAT(106)와 기기(102)도 또 다른 하나의 서브 넷을 구성한다.
본 발명에서, 제1 기기(100)와 제2 기기(102)가 서로 다른 서브 넷에 연결되어 직접 데이터 전송을 시도하기 전에, 즉 초기에 제1 기기(100)와 제2 기기(102)는 각각 해당 서버와 시그널링 절차를 통해 NAT 통과 기법 동작 여부를 확인한다. 상기 NAT 통과 기법으로 IGD port mapping, UDP hole punching, TCP hole punching 등이 이용되고 있다.
상기 NAT 통과 기법 동작 여부를 확인하기 위한 서버(110, 112, 114)는 NAT(104, 106)의 밖(outside)에 설치되며, 구현에 따라 상기 서버는 인터넷망을 통해 기기와 연결되거나 혹은 해당 NAT에 연결될 수 있다.
예를 들어, (a)의 경우처럼, 기기(100, 102)는 인터넷망(108)을 통해 연결되는 서버(110)를 통해 NAT 통과 기법 동작 여부를 확인할 수 있고, 이후, 동작가능한 NAT 통과 기법으로 기기(100)와 기기(102) 사이 직접 데이터 전송을 수행할 수 있다.
또 다른 구현으로, (b)의 경우처럼, 상기 NAT 통과 기법 동작 여부를 확인하기 위한 서버(112, 114)는 각각 NAT(104, 106)에 연결되어 동작할 수 있다. 즉, 기기(100)는 제1 서버(112)를 통해 상기 NAT 통과 기법 동작 여부를 확인하고, 기기(102)는 제2 서버(114)를 통해 상기 NAT 통과 기법 동작 여부를 확인한다.
도 2는 본 발명의 실시 예에 따른 NAT 통과 기법 동작 여부를 확인하기 위한 기기 동작 흐름도를 도시하고 있다.
상기 도 2를 참조하면, 200단계에서 기기에 전원이 켜지면(power on), 202단계로 진행하여 상기 기기는 NAT를 장착한 AP를 통해 네트워크 연결을 수행한다.
이후, 상기 기기는 204단계에서, 연결된 네트워크를 통해 미리 지정된 또는 광고된(advertised) STUN(Simple Traversal of User Datagram Protocol[UDP] Through Network Address Translators[NATs]) 서버(도 1의 110, 112, 114)와의 시그널링 절차(도 5 내지 도 10에 도시된 NAT 통과 절차)을 통해 NAT 통과 기법인 IGD TCP port mapping, UDP hole punching(port prediction 포함), TCP hole punching 중 어느 기법이 자신이 속한 NAT 상에서 동작하는지를 미리 파악한다. 이하, 204단계를 NAT 통과 기법 프러비져닝이라 칭한다.
이후, 상기 기기는 206단계에서 자신이 연결되어 있는 NAT가 동작하는 NAT 통과 기법에 대한 정보를 저장한다. 한편, 상기 STUN 서버도 상기 기기가 동작할 수 있는 NAT 통과 기법에 대한 정보를 저장할 수 있다.
이후, 본 발명의 절차를 종료한다.
도 3은 본 발명의 제1 실시 예에 따른 기기 간 직접 데이터 전송을 수행하기 위한 기기 동작 흐름도를 도시하고 있다.
상기 도 3을 참조하면, 제1 기기는 300단계에서 제2 기기와 서버를 통해 데이터 전송을 하지 않고 상기 제2 기기와 직접 데이터 전송을 시도할 시, 302단계로 진행하여 기저장된 동작가능한 NAT 통과 기법 중 하나를 선택한다. 즉, 상기 제1 기기는 상기 제2 기기와 직접 데이터 전송을 시도할 경우, 미리 확인된 NAT 통과 기법으로 바로 통신을 시도한다.
이후, 상기 제1 기기는 304단계에서 선택된 NAT 통과 기법을 이용하여 상기 제2 기기와 직접 데이터 전송을 수행한다.
이후, 본 발명의 절차를 종료한다.
한편, 제1 기기에서 동작하는 NAT 통과 기법이 TCP port mapping과 TCP hole punching의 경우에, 상기 제2 기기가 속한 NAT의 속성에 상관없이 상기 제1 기기가 속한 NAT에서만 지원되면 통신이 가능하므로 바로 통신을 시도하며, 상기 제2 기기가 속한 NAT의 속성이 UDP hole punching인 경우 특정 NAT에는 상기 제1 기기가 속한 NAT만 지원되더라도 통신이 안 되기 때문에 미리 상기 제2 기기로부터 혹은 서버를 활용하여 상기 제2 기기에 지원되는 NAT 통과 기법을 전달받아 UDP hole punching이 지원되는 것을 확인한 후 시도를 하면 더욱 정확성을 높일 수 있다.
도 4는 본 발명의 제2 실시 예에 따른 기기 간 직접 데이터 전송을 수행하기 위한 기기 동작 흐름도를 도시하고 있다.
상기 도 4를 참조하면, 제1 기기는 402단계에서 제2 기기와 데이터전송을 시도할 시, 404단계로 진행하여 상기 제2 기기가 연결된 NAT가 동작하는 NAT 통과 기법에 관한 정보를 서버로부터 수신한다.
이후, 제1 기기는 406단계에서 수신된 제2 기기의 NAT 통과 기법에 관한 정보를 기반으로, 사용할 NAT 통과 기법을 결정한다. 예를 들어, 상기 수신된 제2 기기의 NAT 통과 기법과 상기 제1 기기의 NAT 통과 기법을 비교하여 직접 데이터 전송에 사용할 NAT 통과 기법을 결정한다.
이후, 상기 제1 기기는 408단계에서 결정된 NAT 통과 기법을 이용하여 상기 제2 기기와 직접 데이터 전송을 수행한다.
이후, 본 발명의 절차를 종료한다.
도 5는 본 발명에 따른 NAT 통과 기법 중 IGD(Internet Gateway Device) 포트 매핑(port mapping) 예를 도시하고 있다.
상기 도 5를 참조하면, 인터넷 게이트웨이 기기(Internet Gateway Device: IGD)는 클라이언트들이 NAT를 통과하는 것(traverse)을 도와주는 UPnP 기기이고, 요즘 시장에서 대부분 AP(Access Point)들은 IGD를 지원한다. IGD는 NAT를 통과하기 위해 몇 개의 UPnP 액션(action)들을 지원하고, UPnP 액션들 중 포트 매핑 액션(Port Mapping action)은 포트 매핑을 생성하는데 이용된다. 예를 들어, peer1은 로컬 IP 주소, 로컬 포트 그리고 글로벌 포트(ip1:p1:g1) 설정을 갖도록 포트 매핑을 위한 UPnP 액션 명령어를 전송한다(500). 그 다음에, 상기 peer1가 peer2와 통신을 수행할 시 상기 peer2에 상기 peer1의 공인 IP 주소와 글로벌 포트(IP1:g1) 정보가 통보된다(501). 이후, AP1는 상기 peer2로부터 글로벌 포트(g1)로 패킷을 수신하면 이때 상기 글로벌 포트(g1)와 매핑된 IP 주소 및 로컬 포트(ip1:p1)로 패킷들을 포워딩한다(502).
도 6은 본 발명에 따른 NAT 통과 기법 중 UDP(User Datagram Protocol) 홀 펀칭(hole punching) 예를 도시하고 있다.
상기 도 6을 참조하면, UDP 홀 펀칭은 NAT의 디폴트 기능이다. NAT 내에 있는 클라이언트(혹은 기기)가 NAT의 밖의 타깃 기기에 UDP 패킷을 보내면 포트 매핑은 생성되고, AP가 매핑된 글로벌 포트로 NAT의 밖의 기기로부터 UDP 패킷을 수신할 때, 상기 수신된 UDP 패킷은 매핑된 기기의 로컬 포트로 포워딩된다.
NAT가 full cone 타입의 NAT이면, 어떤 디바이스로부터 유입되는 패킷은 포트에서 로컬 기기로 포워딩된다. full cone 타입의 NAT는 내부의 기기들이 외부로 패킷을 보낼 때 로컬 IP 주소 및 포트는 모두 동일한 글로벌 IP 주소 및 포트로 매핑하여 패킷을 내보낸다. 이러한 full cone 타입의 NAT 특징을 사용해서, 기기가 미리 서버(일반적으로, STUN 서버)를 사용하여 매핑을 생성하여, NAT의 밖의 어떤 기기로부터 모든 패킷을 수신할 수 있다.
예를 들어, peer1은 STUN 서버에 STUN 요청을 전송하고(601단계) STUN 서버는 peer1에 STUN 응답을 전송하면(602단계) 포트 매핑이 생성된다. 이후, STUN 서버에 의해, peer1의 공인 IP 주소 및 글로벌 포트(IP1:g1)가 통보될 수도 있다(603단계). 마찬가지로, peer2는 STUN 서버에 STUN 요청을 전송하고(604단계) STUN 서버는 peer2에 STUN 응답을 전송하면(605단계) 포트 매핑이 생성된다. 이후, STUN 서버에 의해, peer2의 공인 IP 주소 및 글로벌 포트(IP2:g2)가 통보될 수도 있다(606단계).
하지만, 포트가 제한된 NAT(port restricted NAT)는 목적지의 주소에 따라 NAT에 매핑되는 포트가 달라지므로, 유입되는(incoming) 패킷의 소스 IP 주소 및 포트가 타깃 IP 주소 및 포트와 동일한지를 확인한다. 주소가 제한된 NAT(address restricted NAT)는 소스 주소만을 확인하고 포트를 확인하지 않는다.
예를 들어, peer2가 607단계에서 로컬 포트 p2를 통해 peer1에 STUN request를 전송한다. 이때, AP1가 STUN request를 수신할 때, peer1과 AP1 사이에 포트 매핑이 되어 있지 않다면, AP1에서 peer1으로 STUN request가 전달되지 않는다.
이후, peer1가 608단계에서 로컬 포트 p1를 통해 peer2에 STUN request를 전송한다. 이때, AP2가 STUN request를 수신할 때, peer2와 AP2 사이에 607단계의 STUN request 전송으로 포트 매핑이 생성되어 있으므로, AP2에서 peer2로 STUN request가 전달될 수 있다.
이후, peer2는 609단계에서의 peer1의 STUN request에 대한 응답(STUN response)를 peer1으로 전송한다.
따라서, peer1과 peer2 사이 데이터 전송이 가능해진다(610단계).
한편, NAT의 종류가 대칭(symmetric) NAT이면, 목적지의 주소와 포트에 따라 NAT에 매핑되는 포트가 달라지므로, 소스 IP 주소 및 포트가 동일하더라도, 다른 글로벌 포트가 각각의 타깃 IP 주소 및 포트에 할당된다. 그러므로, 다른 피어(peer) 기기와 통신하기 위해서 STUN 서버로부터 통보되는 상기 글로벌 포트를 사용할 수 없다.
따라서, 피어 기기가 대칭형 NAT의 뒤에 있으면, 다른 피어 기기는 직접 서로 통신하기 위해 주소가 제한된(address restricted) NAT 혹은 full cone 타입의 NAT 안에 있을 필요가 있다.
상술한 바와 같이, 대칭형(symmetric) NAT는 소스 IP 주소와 포트가 동일할 때라도 다른 타깃 IP 주소와 포트에 대한 새로운 포트 매핑을 생성한다. 새로운 글로벌 포트를 할당할 때, 몇몇 NAT들은 규칙에 따라 포트 번호를 늘린다. 상기 규칙을 알 수 있다면, 새로운 타깃이 갖는 다음 UDP 연결(next UDP connection)을 위해 할당될 포트를 예측할 수 있다. 이하 포트 예측에 의한 UDP 홀 펀칭이라 칭한다. 기본적인 동작은 정상(normal) UDP 홀 펀칭과 동일하다. 상기의 예에 있어서, 새로운 포트를 할당할 때 AP1이 '1'을 증가하는 대칭형(symmetric) NAT를 가지고 있다면, IP1:g1 대신: IP1:(g1+1)을 통지한다.
도 7은 본 발명에 따른 NAT 통과 기법 중 TCP(Transport Control Protocol) 홀 펀칭 예를 도시하고 있다.
상기 도 7을 참조하면, 포트 매핑은 UDP 접속을 위해서뿐만 아니라 TCP 접속을 위해서도 생성된다.
예를 들면, peer1의 공인 IP 주소 및 글로벌 포트(IP1:g1)가 peer2에 통보되고(700단계), peer2의 공인 IP 주소 및 글로벌 포트(IP2:g2)가 peer1에 통보된다(701단계).
그 다음에, peer2가 peer1의 공인 IP 주소 및 글로벌 포트(IP1:g1)를 기반으로 TCP SYN 패킷을 peer1으로 전송한다(702단계). 하지만, 이때, peer1과 AP1 사이 포트매핑이 생성되기 전이 때문에 peer2으로부터의 TCP SYN 패킷은 AP1에서 peer1으로 전달되지 않는다.
이후, peer1이 peer2의 공인 IP 주소 및 글로벌 포트(IP2:g2)를 기반으로 TCP SYN 패킷을 peer2로 전송한다(703단계). 이때, peer2과 AP2 사이 포트 매핑은 702단계에서 생성되었기 때문에 peer1으로부터의 TCP SYN 패킷은 AP2에서 peer2로 전달된다. peer1이 TCP SYN 패킷을 peer2로 전송할 때 peer1과 AP1 사이 포트 매핑이 생성된다.
이후, peer2는 peer1의 공인 IP 주소 및 글로벌 포트(IP1:g1)를 기반으로 TCP ACK 패킷(TCP SYN에 대한 응답 패킷)을 peer1으로 전송한다(704단계). 이때, peer2로부터의 TCP ACK 패킷은 g1에 매핑된 로컬 포트 p1으로 전달된다.
마찬가지로, peer1은 peer2의 공인 IP 주소 및 글로벌 포트(IP2:g2)를 기반으로 TCP ACK 패킷(TCP SYN에 대한 응답 패킷)을 peer2로 전송한다(705단계). 이때, peer1로부터의 TCP ACK 패킷은 g2에 매핑된 로컬 포트 p2로 전달된다.
그러나, 대부분 AP들은(또는 NAT)는 TCP 접속 협상 상태(TCP connection negotiation state)를 확인한다. 즉, TCP SYN이 AP를 통해 타깃 기기에 보내지면, 그 다음 글로벌 포트에 대한 TCP SYN/ACK를 예상해서 어떤 다른 TCP SYN 패킷을 포함하는 TCP 패킷을 거절한다. 따라서, 이런 종류의 AP들에서 타깃 기기(아래의 예에 peer1)로부터의 제2의 TCP SYN가 AP들에 의해 드롭되어(dropped) TCP 접속이 설정되지 않는다.
도 5의 IGD 포트 매핑 기법에서, 비록 AP들에 설치되는 대부분 IGD가 포트 매핑 기능을 지원하더라도, 또는 비록 그들이 UPnP 액션을 지원한다는 것을 광고하더라도, 몇몇 IGD들은 제대로 동작하지 않는다. 그러한 AP에서 IGD 포트 매핑 방법을 시도하려는 시간낭비를 피하기 위해, 포트 매핑 기능이 정확히 동작하는지를 확인할 필요가 있다. IGD 포트 매핑 기법이 동작하는지를 확인하는 절차를 하기 도 8과 같다.
도 8은 본 발명의 실시 예에 따른 IGD 포트 매핑 테스트 절차를 도시하고 있다.
상기 도 8을 참조하면, 먼저, pee1은 IGD(혹은 AP1)에 UPnP 포트 매핑 액션을 보내서 UPnP 포트 매핑을 수행한다(801단계). 이때, pee1과 AP1 사이에 로컬 IP 주소, 로컬 포트, 글로벌 포트가 매핑된다(ip1:p1:g1). 이때, 동일한 포트 번호를 사용하여 글로벌 포트 p에 로컬 포트 g1를 매핑할 수 있다.
이후, pee1은 로컬 포트(p1) 대신 로컬 포트(p2)로, pee1의 요청을 전송한 목적지 주소 및 포트와 다른 목적지 주소 및 포트로 응답을 전송하도록 지시하는 STUN 요청을 상기 STUN 서버에 전송한다. 이때, 상기 STUN 서버는 제1 IP 주소 및 제1 포트(IP_NIC1:P1)(이하, 청취포트(listening port)라 칭함)를 통해 STUN 요청을 수신한다.
이후, 상기 STUN 서버는 제2 IP 주소 및 제2 포트(IP_NIC2:P2)(이하, 응답포트(response port)라 칭함)를 통해 STUN 응답을 pee1으로 전송한다.
이때, 포트 매핑이 AP1에서 성공적으로 수행된다면, peer1은 로컬 포트 p1를 통해서 peer2로부터 STUN 응답을 수신한다. peer1이 타임아웃 내에 STUN 응답을 수신할 없으면 정확히 포트들을 매핑할 수 없다는 것을 의미한다. 이 경우에는 AP1에서 IGD 포트 매핑 NAT 통과 방법을 지원하지 않는다고 결정한다.
앞에 상술한 바와 같이, 양쪽의 클라이언트가 대칭형 AP를 사용하지 않는다면, UDP 홀 펀칭을 사용하여 NAT를 통과한다.
그러나, 외부로부터 유입되는 패킷들을 수신할 때, symmetric behavior를 가지고 동작하는 다른 NAT가 존재한다. 상기 AP는 외부 포트로써 목적지 포트(port1) 그리고 내부 포트로써 어떤 램던한 포트를 사용하여 매핑(mapping1)을 생성한다.
도 9는 본 발명에 따른 상기와 같은 특별한 동작을 하는 포트가 제한된 형태의 AP(AP1)와 그리고 정상적인 포트가 제한된 형태의 AP(AP2)를 갖는 경우의 UDP 홀 펀칭 실패를 도시하고 있다.
상기 도 9를 참조하면, peer1은 STUN 서버에 STUN 요청을 전송하고(900단계) STUN 서버는 peer1에 STUN 응답을 전송하면(902단계) 포트 매핑이 생성된다. 이후, peer1의 공인 IP 주소 및 글로벌 포트(IP1:g1)가 peer2에 통보될 수도 있다(903단계). 마찬가지로, peer2는 STUN 서버에 STUN 요청을 전송하고(904단계) STUN 서버는 peer2에 STUN 응답을 전송하면(905단계) 포트 매핑이 생성된다. 이후, peer2의 공인 IP 주소 및 글로벌 포트(IP2:g2)가 peer1에 통보될 수도 있다(906단계).
한편, 상기 AP1이 peer2로부터 STUN request를 수신할 때, 상기 AP1은 새로운 매핑(IP2:g2:g1→ip1:p3)을 생성한다(907단계). 그때 STUN request는 p3에 전달되고 peer2는 로컬 포트 p1에서만 패킷을 청취하고 있기 때문에, peer2은 STUN request를 수신하지 않는다. peer1이 peer2(IP2:g2)에 STUN request를 보낼 때, IP2:g2:g1은 이미 ip1:p3에 할당되어져 있고 새로운 매핑(IP2:g2:g3→ip1:p1)이 할당된다. AP2이 IP1:g3으로부터 패킷을 수신할 때, AP가 포트가 제한된(port-restricted) NAT를 가지고 있고 IP1:g1으로부터 패킷만이 ip2:p2에 전달되기 때문에, 상기 패킷은 거절된다(908단계). 따라서, 두 peer는 서로 직접 통신을 할 수 없게 된다.
따라서, 그러한 AP에서 UDP 홀 펀칭을 시도하는 시간을 낭비하는 것을 피하기 위해서, 도 10의 절차에 따라 AP가 미리 유입되는(incoming) UDP 패킷에 대해 매핑을 생성할지를 확인한다.
도 10은 본 발명의 실시 예에 따른 UDP 홀 펀칭 테스트 절차를 도시하고 있다.
상기 도 10을 참조하면, peer1은 STUN 서버에 STUN 요청을 전송하고(1000단계) STUN 서버로부터 STUN 응답을 수신(1002단계)함으로써, ip1:p1를 위한 매핑된 주소(IP1:g1)을 얻는다. ip1은 로컬 IP 주소, p1은 로컬 포트, IP1은 공인 IP 주소, g1은 글로벌 포트이다.
이후, peer1은 1004단계에서, NAT 외부로부터 IP1:g1로 유입되는 UDP를 생성하기 위해, 로컬 포트 p2를 사용하여 STUN 서버의 청취 포트(listening port)(IP_NIC1:P1)로 STUN request를 전송한다. 이때, STUN request는 상기 peer1의 요청을 전송한 목적지의 주소 및 포트와 다른 주소 및 포트로 STUN 응답을 전송하도록 지시하는 정보를 포함한다.
이후, STUN 서버는 1006단계에서 STUN response를 다른 네트워크 인터페이스 (IP_NIC2)로부터 상기 요청된 주소(IP1:g1)로 전송한다. AP1가 STUN response를 수신할 때, 주소(IP_NIC2:P2)에 대한 매핑이 없고 몇몇 AP들이 임의의 로컬 포트를 사용하여 (IP_NIC2:P2, g1)를 위한 매핑을 생성하기 때문에, 대부분 AP들은 패킷을 버린다.
이후, peer1은 1008단계에서 로컬 포트 p1으로부터 STUN 서버(IP_NIC2:P2)에 STUN request를 전송한다. 이때 AP1가 STUN request를 수신할 때, 그때 매핑을 생성하려고 할 것이다. 여기서, 매핑은 (IP_NIC2:P2, g1)를 위한 매핑이 이미 이전 단계에서 생성됐다면, 이 이후에 다른 글로벌 포트가 로컬 주소 ip1:p1에 할당될 것이다. 상기 매핑이 이전 단계에서 생성되지 않았다면, 동일한 포트 번호(g1)가 새로운 매핑에서 글로벌 포트로써 사용된다. 그러므로, 이전 STUN response의 매핑된 주소와 현재 STUN response의 매핑된 주소를 비교하여, UDP 홀 펀칭이 동작하는지를 결정할 수 있다.
이후, STUN 서버는 1010단계에서 peer1가 1008단계가 전송한 STUN request에 대해 STUN response을 전송한다.
상기 도 7에서 상술한 바와 같이, 몇몇 AP들만이 TCP 홀 펀칭을 지원한다. 대부분 AP들은 유입되는 TCP SYN 패킷을 버린다. 미리, 상기 타깃 포트가 유출되는(outgoing) TCP SYN 패킷을 통해 이미 로컬 포트가 매핑되어지더라도, AP들이 TCP 홀 펀칭을 지원하는지를 확인하는 것이 필요하다.
도 11은 본 발명의 실시 예에 따른 TCP 홀 펀칭 테스트 절차를 도시하고 있다.
상기 도 11을 참조하면, 먼저, peer1은 확인된 TCP 홀 펀칭 필드(이 목적을 위해 새로운 필드를 생성할 필요가 있음) 그리고 글로벌 테스트 포트(g1)를 이용해서, STUN 서버에 STUN 요청을 전송한다(1100단계). 이후, 로컬 테스트 포트(p1)를 통해 TCP SYN 패킷을 전송한다(1102단계). 실제 구현에 있어서, 로컬 테스트 포트를 갖는 bind() 함수를 호출한 후 connect() 함수를 호출할 필요가 있다. 이때, STUN 서버는 TCP 홀 펀칭 테스트의 시작을 인지하고 글로벌 테스트 포트(g1)로 TCP SYN 패킷을 되돌려 보낸다(1104단계). STUN 포트로부터의 TCP SYN 패킷이 AP에 의해 전달되면, 그 다음에 AP1이 TCP 홀 펀칭을 지원하는 것을 의미한다.
이후, peer1은 p1 포트로 1104단계의 TCP SYN 패킷에 대한 TCP ACK 패킷을 STUN 서버로 전송하고(1106단계), STUN 서버도 1102단계의 peer1으로부터의 TCP SYN 패킷에 대한 TCP ACK 패킷을 peer1으로 전송한다(1108단계). 다시 말해, connect() 함수는 TCP 협상(negotiation)의 나머지를 끝마치고 성공적으로 리턴된다.
도 12는 본 발명의 실시 예에 따른 시뮬레이션 환경을 도시하고 있다.
상기 도 12를 참조하면, 6개의 AP들(AP1 내지 AP6)이 스위치와 연결되어 있고, 또한 스위치에 턴(TURN) 서버, XMPP(Extensible Messaging and Presence Protocol) 서버, 그리고 STUN 서버가 연결된다. 그리고, 각각의 AP 하단에는 기기가 접속되어 있다.
각각의 AP은 하기 표 1과 같이 NAT 통과 기법이 가능하다.
AP1 AP2 AP3 AP4 AP5 AP6
NAT type Full Cone PortRest. PortRest. Symmetric PortRest. PortRest.
IGD PM 0 0 0 0 0 x
UDP HP 0 0 x N/A 0 0
TCP HP x x x X 0 0
PortRest는 Port Restricted Cone 타입의 NAT를 의미하고, Full Cone은 Full Cone 타입의 NAT이고, Symmetric은 Symmetric 타입의 NAT을 의미한다. 그리고, IGD PM은 IGD Port mapping를 이용하는 NAT 통과 기법이고, UDP HP는 UDP hole punching를 이용하는 NAT 통과 기법이고, TCP는 TCP hole punching를 이용하는 NAT 통과 기법을 의미한다.
상기 도 12의 시뮬레이션 환경에서, IGD가 동작할 때, AP들간 동작가능한 NAT 통과 기법은 하기 <표 2>와 같습니다.
AP1 AP2 AP3 AP4 AP5 AP6
AP1 IGD PM IGD PM IGD PM IGD PM IGD PM UDP HP
AP2 - IGD PM IGD PM IGD PM IGD PM IGD PM
AP3 - - IGD PM IGD PM IGD PM IGD PM
AP4 - - - IGD PM IGD PM IGD PM
AP5 - - - - IGD PM IGD PM
AP6 - - - - - UDP HP
상기 도 12의 시뮬레이션 환경에서, IGD가 동작하지 않을 때, AP들간 동작가능한 NAT 통과 기법은 하기 <표 3>와 같습니다.
AP1 AP2 AP3 AP4 AP5 AP6
AP1 UDP HP UDP HP Relay Relay UDP HP UDP HP
AP2 - UDP HP Relay Relay UDP HP UDP HP
AP3 - - Relay Relay TCP HP TCP HP
AP4 - - - Relay TCP HP TCP HP
AP5 - - - - UDP HP UDP HP
AP6 - - - - - UDP HP
도 13은 본 발명의 실시 예에 따른 NAT 통과 기법을 프로비저닝하기 위한 장치를 도시하고 있다.
상기 도 13을 참조하면, 기기는 제어부(1300), 메모리(1302), 인터페이스부(1304)를 포함하여 구성된다. 기기는 종류에 따라 추가적인 기능블록이 더 추가될 수 있다. 예를 들어, 스마트 TV 같은 디지털 TV 수신을 위한 기능블럭이 더 추가될 수 있고, 스마트폰 같은 카메라모듈, 음성인지를 위한 기능블럭 등등이 더 추가될 수 있다.
상기 제어부(1300)는 연결된 네트워크를 통해 미리 지정된 또는 광고된 STUN 서버와의 시그널링 절차(도 5 내지 도 10에 도시된 NAT 통과 절차)을 통해 동작가능한 NAT 통과 기법(예, IGD TCP port mapping, UDP hole punching(port prediction 포함), TCP hole punching 등등)를 확인하여, 그 결과를 메모리(1302)에 제공한다.
상기 메모리(1302)는 상기 제어부(1300)로부터 제공받은 동작가능한 NAT 통과 기법에 관한 정보를 저장하고, 상기 제어부(1300)의 요청에 따라, 상기 저장된 동작가능한 NAT 통과 기법에 관한 정보를 상기 제어부(1300)로 제공한다.
상기 인터페이스부(1304)는 기기와 AP사이의 무선인터페이스를 제공한다. 예를 들어, 상기 인터페이스부(1304)는 IEEE 802.11 표준에 기반하여 기기와 AP 사이 통신을 할 수 있게 해준다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
202: 네트워크 연결 단계
204: NAT 통과 기법을 프러비젼닝하는 단계
206: 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 단계

Claims (20)

  1. 네트워크 주소 변환기(Network Address Translator: NAT) 통과 기법을 프로비저닝하기 위한 기기 동작 방법에 있어서,
    네트워크와 연결을 수행하는 과정과,
    상기 연결된 네트워크를 통해, 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능한지를 판단하는 과정과,
    상기 다수의 NAT 통과 기법들 중 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 과정을 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능한지를 판단하는 과정은,
    로컬 IP 주소, 제1 로컬 포트, 글로벌 포트를 설정하도록 포트 매핑 명령을 NAT를 장착한 AP(Access Point)에 전송하는 과정과,
    제2 로컬 포트를 통해, 요청 메시지를 상기 서버에 전송하는 과정과, 상기 요청 메시지는 상기 서버가 상기 요청 메시지에 대한 응답메시지를 다른 IP 주소와 다른 포트를 통해 전송하도록 지시하는 정보를 포함하며,
    상기 매핑된 제1 로컬 포트를 통해, 상기 서버로부터의 응답메시지 수신 여부에 따라, IGD port mapping NAT 통과 기법이 동작가능한지를 결정하는 과정을 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능한지를 판단하는 과정은,
    제1 로컬 포트를 통해, 제1 요청 메시지를 상기 서버로 전송하고 상기 서버로부터 제1 응답메시지를 수신하여, 상기 제1 로컬 포트 및 로컬 IP 주소와 매핑된 공인 IP 주소 및 글로벌 포트에 대한 정보를 획득하는 과정과,
    제2 로컬 포트를 통해, 제2 요청 메시지를 상기 서버에 전송하는 과정과, 상기 제2 요청 메시지는 상기 서버가 제2 응답메시지를 다른 IP 주소와 다른 포트를 통해 전송하도록 지시하는 정보를 포함하며,
    상기 매핑된 제1 로컬 포트를 통해, 상기 서버로부터의 제2 응답메시지 수신하는 과정과,
    상기 제1 응답메시지의 매핑된 주소와 상기 제2 응답메시지의 매핑된 주소를 비교하여, UDP hole punching NAT 통과 기법이 동작가능한지를 결정하는 과정을 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능한지를 판단하는 과정은,
    TCP hole punching임을 지시하는 지시자와 테스트 글로벌 포트를 가지는 요청메시지를 상기 서버에 전송하는 과정과,
    상기 로컬 테스트 포트를 이용하여, TCP SYN 패킷을 상기 서버에 전송하는 과정과,
    상기 서버로부터 상기 테스트 글로벌 포트를 통해 TCP SYN 패킷을 수신했는지에 따라, TCP hole punching NAT 통과 기법이 동작가능한지를 결정하는 과정을 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 NAT 통과 기법은 IGD port mapping, UDP hole punching, TCP hole punching 중 하나인 것을 특징으로 하는 방법.
  6. 기기 간 데이터 전송을 위한 방법에 있어서,
    데이터 전송 이벤트가 발생할 시, 기저장된 동작가능한 NAT 통과 기법들 중 하나를 선택하는 과정과,
    상기 선택된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 과정을 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 기저장된 동작가능한 NAT 통과 기법들은,
    상기 데이터 전송 전에, 서버를 통해 다수의 NAT 통과 기법들 각각에 대해 데이터 전송이 가능한지 테스트를 걸쳐 성공한 NAT 통과 기법인 것을 특징으로 하는 방법.
  8. 제6항에 있어서,
    상기 NAT 통과 기법은 IGD port mapping, UDP hole punching, TCP hole punching 중 하나인 것을 특징으로 하는 방법.
  9. 기기 간 데이터 전송을 위한 방법에 있어서,
    데이터 전송 이벤트가 발생할 시, 상대방 기기의 동작가능한 NAT 통과 기법에 대한 정보를 획득하는 과정과,
    상기 상대방 기기의 동작가능한 NAT 통과 기법에 관한 정보와 상기 기기의 동작가능한 NAT 통과 기법에 관한 정보를 기반으로, 하나의 동작가능한 NAT 통과 기법을 결정하는 과정과,
    상기 결정된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 과정을 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 동작가능한 NAT 통과 기법들은,
    상기 데이터 전송 전에, 서버를 통해 다수의 NAT 통과 기법들 각각에 대해 데이터 전송이 가능한지 테스트를 걸쳐 성공한 NAT 통과 기법인 것을 특징으로 하는 방법.
  11. 제9항에 있어서,
    상기 NAT 통과 기법은 IGD port mapping, UDP hole punching, TCP hole punching 중 하나인 것을 특징으로 하는 방법.
  12. 네트워크 주소 변환기(Network Address Translator: NAT) 통과 기법을 프로비저닝하기 위한 장치에 있어서,
    네트워크와 연결을 수행하고,
    상기 연결된 네트워크를 통해, 서버를 이용하여 다수의 NAT 통과 기법들에 대해 동작가능하지를 판단하는 제어부와,
    상기 다수의 NAT 통과 기법들 중 동작가능한 NAT 통과 기법에 관한 정보를 저장하는 메모리를 포함하는 것을 특징으로 하는 장치.
  13. 제12항에 있어서,
    상기 제어부는,
    로컬 IP 주소, 제1 로컬 포트, 글로벌 포트를 설정하도록 포트 매핑 명령을 NAT를 장착한 AP(Access Point)에 전송하고,
    제2 로컬 포트를 통해, 요청 메시지를 상기 서버에 전송하고, 상기 요청 메시지는 상기 서버가 상기 요청 메시지에 대한 응답메시지를 다른 IP 주소와 다른 포트를 통해 전송하도록 지시하는 정보를 포함하며,
    상기 매핑된 제1 로컬 포트를 통해, 상기 서버로부터의 응답메시지 수신 여부에 따라, IGD port mapping NAT 통과 기법이 동작가능한지를 결정하는 것을 특징으로 하는 장치.
  14. 제12항에 있어서,
    상기 제어부는,
    제1 로컬 포트를 통해, 제1 요청 메시지를 상기 서버로 전송하고 상기 서버로부터 제1 응답메시지를 수신하여, 상기 제1 로컬 포트 및 로컬 IP 주소와 매핑된 공인 IP 주소 및 글로벌 포트에 대한 정보를 획득하고,
    제2 로컬 포트를 통해, 제2 요청 메시지를 상기 서버에 전송하고, 상기 제2 요청 메시지는 상기 서버가 제2 응답메시지를 다른 IP 주소와 다른 포트를 통해 전송하도록 지시하는 정보를 포함하며,
    상기 매핑된 제1 로컬 포트를 통해, 상기 서버로부터의 제2 응답메시지 수신하고,
    상기 제1 응답메시지의 매핑된 주소와 상기 제2 응답메시지의 매핑된 주소를 비교하여, UDP hole punching NAT 통과 기법이 동작가능한지를 결정하는 것을 특징으로 하는 장치.
  15. 제12항에 있어서,
    상기 제어부는,
    TCP hole punching임을 지시하는 지시자와 테스트 글로벌 포트를 가지는 요청메시지를 상기 서버에 전송하고,
    상기 로컬 테스트 포트를 이용하여, TCP SYN 패킷을 상기 서버에 전송하고,
    상기 서버로부터 상기 테스트 글로벌 포트를 통해 TCP SYN 패킷을 수신했는지에 따라, TCP hole punching NAT 통과 기법이 동작가능한지를 결정하는 것을 특징으로 하는 장치.
  16. 제12항에 있어서,
    상기 NAT 통과 기법은 IGD port mapping, UDP hole punching, TCP hole punching 중 하나인 것을 특징으로 하는 장치.
  17. 기기 간 데이터 전송을 위한 방법에 있어서,
    데이터 전송 이벤트가 발생할 시, 기저장된 동작가능한 NAT 통과 기법들 중 하나를 선택하는 제어부와,
    상기 선택된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 인터페이스부를 포함하는 것을 특징으로 하는 장치.
  18. 제17항에 있어서,
    상기 기저장된 동작가능한 NAT 통과 기법들은,
    상기 데이터 전송 전에, 서버를 통해 다수의 NAT 통과 기법들 각각에 대해 데이터 전송이 가능한지 테스트를 걸쳐 성공한 NAT 통과 기법인 것을 특징으로 하는 장치.
  19. 기기 간 데이터 전송을 위한 방법에 있어서,
    데이터 전송 이벤트가 발생할 시, 상대방 기기의 동작가능한 NAT 통과 기법에 대한 정보를 획득하고,
    상기 상대방 기기의 동작가능한 NAT 통과 기법에 관한 정보와 상기 기기의 동작가능한 NAT 통과 기법에 관한 정보를 기반으로, 하나의 동작가능한 NAT 통과 기법을 결정하는 제어부와,
    상기 결정된 동작가능한 NAT 통과 기법을 이용하여, 기기간 데이터 전송을 수행하는 인터페이스부를 포함하는 것을 특징으로 하는 장치.
  20. 제19항에 있어서,
    상기 동작가능한 NAT 통과 기법들은,
    상기 데이터 전송 전에, 서버를 통해 다수의 NAT 통과 기법들 각각에 대해 데이터 전송이 가능한지 테스트를 걸쳐 성공한 NAT 통과 기법인 것을 특징으로 하는 장치.
KR20110117587A 2011-11-11 2011-11-11 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치 KR20130052240A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR20110117587A KR20130052240A (ko) 2011-11-11 2011-11-11 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치
EP12847003.6A EP2777240A4 (en) 2011-11-11 2012-11-02 METHOD AND DEVICE FOR PROVIDING TRANSVERSAL PROCEDURES OF A NETWORK ADDRESS TRANSMITTER
PCT/KR2012/009162 WO2013069927A1 (en) 2011-11-11 2012-11-02 Method and apparatus for provisioning network address translator traversal methods
US13/674,566 US20130124735A1 (en) 2011-11-11 2012-11-12 Method and apparatus for provisioning network address translator traversal methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20110117587A KR20130052240A (ko) 2011-11-11 2011-11-11 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20130052240A true KR20130052240A (ko) 2013-05-22

Family

ID=48281741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20110117587A KR20130052240A (ko) 2011-11-11 2011-11-11 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치

Country Status (4)

Country Link
US (1) US20130124735A1 (ko)
EP (1) EP2777240A4 (ko)
KR (1) KR20130052240A (ko)
WO (1) WO2013069927A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108515B2 (en) * 2013-03-01 2018-10-23 Sony Interactive Entertainment LLC Remotely testing electronic devices using messaging and presence protocol
US9674301B2 (en) 2013-09-10 2017-06-06 Rogers Communications Inc. Home gateway devices and methods for facilitating connections between customer premises equipment devices and servers
JP6308295B2 (ja) * 2014-04-23 2018-04-11 富士通株式会社 通信装置、サーバ、通信システム及び通信方法
US10419497B2 (en) * 2015-03-31 2019-09-17 Bose Corporation Establishing communication between digital media servers and audio playback devices in audio systems
CN105306620B (zh) * 2015-11-13 2016-08-24 吴华瑜 一种数据的传输控制系统
CN107135149B (zh) * 2017-06-30 2021-06-15 上海掌门科技有限公司 一种用于推荐社交用户的方法与设备
CN111314481B (zh) * 2020-02-27 2021-08-24 腾讯科技(深圳)有限公司 一种数据传输方法、装置、设备以及可读存储介质
CN111600968B (zh) * 2020-03-31 2022-07-05 普联技术有限公司 P2p网络中nat打洞方法、装置、设备及可读存储介质
CN114143818B (zh) * 2021-11-29 2024-03-12 四川虹美智能科技有限公司 智能设备的批量测试方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058973B1 (en) * 2000-03-03 2006-06-06 Symantec Corporation Network address translation gateway for local area networks using local IP addresses and non-translatable port addresses
WO2003083692A1 (en) * 2002-03-27 2003-10-09 First Virtual Communications System and method for traversing firewalls with protocol communications
JP4269226B2 (ja) * 2003-11-14 2009-05-27 ソニー株式会社 情報通信システムおよび方法、情報処理装置および方法、プログラム並びに記録媒体
JP3999785B2 (ja) * 2005-01-20 2007-10-31 株式会社フラクタリスト 通信方法
US7912046B2 (en) * 2005-02-11 2011-03-22 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US20070233879A1 (en) * 2005-10-07 2007-10-04 Steven Woods System and method for advertisement identification, selection, and distribution involving a peer-to-peer network
WO2007048344A1 (fr) * 2005-10-28 2007-05-03 Huawei Technologies Co., Ltd. Procede d’etablissement de la connexion poste a poste, procede, dispositif et systeme de realisation de nat de traversee de communication reseau
US8437757B2 (en) * 2006-06-30 2013-05-07 Nokia Corporation Systems for providing peer-to-peer communications
US7706373B2 (en) * 2006-11-01 2010-04-27 Nuvoiz, Inc. Session initiation and maintenance while roaming
US7801059B2 (en) * 2007-04-20 2010-09-21 Panasonic Corporation IP communication apparatus and NAT type determination method by the same
US8656017B2 (en) * 2007-05-16 2014-02-18 Microsoft Corporation Peer-to-peer collaboration system with edge routing
US8631155B2 (en) * 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
US7933273B2 (en) * 2007-07-27 2011-04-26 Sony Computer Entertainment Inc. Cooperative NAT behavior discovery
TWI441493B (zh) * 2007-11-27 2014-06-11 Ind Tech Res Inst 網路位址轉換的系統與方法
WO2009083872A2 (en) * 2007-12-20 2009-07-09 Koninklijke Philips Electronics N.V. Methode of connecting a voice over internet protocol terminal to a remote server
JP4705656B2 (ja) * 2008-04-22 2011-06-22 エヌ・ティ・ティ・コミュニケーションズ株式会社 アドレス変換装置、アドレス変換プログラム
JP5239618B2 (ja) * 2008-08-19 2013-07-17 沖電気工業株式会社 アドレス変換装置、方法及びプログラム、並びにノード
CN101355568B (zh) * 2008-09-03 2011-07-13 中兴通讯股份有限公司 一种静态pat支持绑定路由器接口的方法及系统
US7881231B2 (en) * 2009-02-13 2011-02-01 Microsoft Corporation Detection of home network configuration problems
US20110082941A1 (en) * 2009-10-06 2011-04-07 Electronics And Telecommunications Research Institute Method of providing direct communication in internet protocol network
US8606884B2 (en) * 2010-09-21 2013-12-10 Taesung Kim System and method for web hosting behind NATs
TWI448129B (zh) * 2011-11-09 2014-08-01 D Link Corp According to the behavior of the network address translator to establish a transmission control protocol connection method

Also Published As

Publication number Publication date
WO2013069927A1 (en) 2013-05-16
EP2777240A4 (en) 2015-06-17
EP2777240A1 (en) 2014-09-17
US20130124735A1 (en) 2013-05-16

Similar Documents

Publication Publication Date Title
KR20130052240A (ko) 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치
KR100901790B1 (ko) IPv4 네트워크 기반 IPv6 서비스 제공시스템에서의 제어 터널 및 다이렉트 터널 설정 방법
USRE47566E1 (en) NAT traversal for mobile network devices
US8650312B2 (en) Connection establishing management methods for use in a network system and network systems using the same
US9049122B2 (en) Bandwidth probing messages
KR20120071121A (ko) 가상 터널 라우터와 ip 카메라 관리서버 및 위치 기반 ip 카메라 서비스 방법
JP2008072203A (ja) 中継サーバ
US8457111B2 (en) Voice communication method and system in ubiquitous robotic companion environment
JP2005033250A (ja) 中継装置とポートフォワード設定方法
JP2008258917A (ja) 同一nat配下通信制御システム、nat装置、同一nat配下通信制御方法、及びプログラム
CN114598532B (zh) 连接建立方法、装置、电子设备和存储介质
US20080198851A1 (en) Information processing system including information processing apparatus and terminals, and information processing method for the same
US20080046571A1 (en) Pervasive inter-domain dynamic host configuration
US9369523B2 (en) Method for exchanging network messages in distributed manner
WO2008069504A1 (en) Method for configuring control tunnel and direct tunnel in ipv4 network-based ipv6 service providing system
JP2007329791A (ja) ゲートウェイ装置
KR101586058B1 (ko) Nat환경을 고려한 피투피 통신 연결 장치 및 이를 이용한 피투피 통신 연결 방법
KR20050042581A (ko) 사설 ip를 사용하는 통신 단말장치의 udp패킷 통신방법 및 시스템
EP3264724B1 (en) Method and apparatus for sending, transferring and acquiring capability
US10693673B2 (en) Method and apparatus for routing data to cellular network
JP2010157857A (ja) Vpn接続装置、パケット制御方法、及びプログラム
JP5768550B2 (ja) 通信端末および通信制御方法
CN116781670A (zh) 云服务访问方法、虚拟服务装置、系统、电子设备及介质
JP2012019361A (ja) 通信装置、サーバ装置、通信システム、通信方法、および集積回路
KR20200075677A (ko) 소프트웨어 정의 네트워크 기반 WebRTC 서비스 제공 시스템 및 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid