KR102666587B1 - 피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법 - Google Patents

피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법 Download PDF

Info

Publication number
KR102666587B1
KR102666587B1 KR1020190063535A KR20190063535A KR102666587B1 KR 102666587 B1 KR102666587 B1 KR 102666587B1 KR 1020190063535 A KR1020190063535 A KR 1020190063535A KR 20190063535 A KR20190063535 A KR 20190063535A KR 102666587 B1 KR102666587 B1 KR 102666587B1
Authority
KR
South Korea
Prior art keywords
peer
terminal
address
network
access
Prior art date
Application number
KR1020190063535A
Other languages
English (en)
Other versions
KR20200137344A (ko
Inventor
윤희태
안호성
김영광
Original Assignee
삼성에스디에스 주식회사
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020190063535A priority Critical patent/KR102666587B1/ko
Publication of KR20200137344A publication Critical patent/KR20200137344A/ko
Application granted granted Critical
Publication of KR102666587B1 publication Critical patent/KR102666587B1/ko

Links

Classifications

    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Abstract

피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법이 제공된다. 일 실시예에 따른 단말은, 피어-투-피어 서버로부터, 피어-투-피어 네트워크에 기 접속한 하나 이상의 타 단말의 접속 주소를 획득하고, 상기 접속 주소를 이용하여 상기 하나 이상의 타 단말로 접속 주소 확인 요청을 송신하는 요청 모듈; 상기 하나 이상의 타 단말로부터 수신되는 접속 주소를 이용하여 상기 단말의 접속 주소 목록을 생성하는 접속 주소 목록 생성 모듈; 및 생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록하는 등록 모듈을 포함한다.

Description

피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법{PEER-TO-PEER COMMUNICATION DEVICE AND METHOD FOR PEER-TO-PEER COMMUNICATION THEREOF}
개시되는 실시예들은 다중 NAT(Network Address Translation) 환경에서의 피어-투-피어(Peer-to-Peer) 통신 기술과 관련된다.
피어-투-피어(Peer-to-Peer, 줄여서 'P2P'라 칭함)란 중앙 서버의 연계 없이 네트워크에 참여한 각 단말들이 서로 동등한 입장에서 통신을 하는 네트워크를 의미한다. 피어-투-피어 통신을 위해서는 각 단말들이 서로 상대방의 네트워크 주소를 알아야 한다.
그러나 단말이 복수의 네트워크 어드레스 변환기(NAT; Network Address Translator)의 내부에 존재하는 다중 NAT 환경의 경우, 상대방의 네트워크 주소를 알아도 통신이 불가능한 경우가 발생한다. 예를 들어, 다중 NAT 환경에서 특정 NAT 내부의 단말이 동일한 NAT 내부에 위치한 다른 단말의 공인 주소(IP address)로 패킷을 전송할 경우, NAT의 패킷 라우팅 특성에 따라 해당 패킷이 제대로 전달되지 않는 경우가 발생한다. 따라서 다중 NAT 환경에서 NAT의 특성과 관계없이 원활하게 피어-투-피어 통신을 가능하게 하기 위한 방법이 필요하게 되었다.
한국공개특허 KR10-2008-0077915 A (2008.08.26.)
개시되는 실시예들은 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 NAT의 패킷 라우팅 특성과 관계없이 피어-투-피어 통신을 가능하게 하기 위한 기술적인 수단을 제공하기 위한 것이다.
예시적인 실시예에 따르면, 피어-투-피어 네트워크에 진입한 단말에서, 피어-투-피어 서버로부터, 상기 네트워크에 기 접속한 하나 이상의 타 단말의 접속 주소를 획득하는 단계; 획득된 상기 타 단말의 접속 주소를 이용하여 상기 하나 이상의 타 단말로 접속 주소 확인 요청을 송신하는 단계; 상기 하나 이상의 타 단말로부터 수신되는 접속 주소를 이용하여 상기 단말의 접속 주소 목록을 생성하는 단계; 및 생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록하는 단계를 포함하는, 피어-투-피어 네트워크에서의 접속 주소 등록 방법이 제공된다.
상기 타 단말의 접속 주소는, 상기 타 단말의 사설 주소(private address)일 수 있다.
상기 접속 주소 목록을 생성하는 단계는, 상기 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 획득한 공인 주소와 상이한 경우 상기 접속 주소를 상기 접속 주소 목록에 추가하도록 구성될 수 있다.
다른 예시적인 실시예에 따르면, 피어-투-피어 네트워크에 접속한 제1 단말에서, 피어-투-피어 서버로부터 상기 네트워크에 접속한 제2 단말의 접속 주소 목록을 획득하는 단계; 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 선택하는 단계; 및 선택된 접속 주소를 이용하여 상기 제2 단말로 접속 요청 메시지를 송신하는 단계를 포함하며, 상기 접속 주소 목록은, 상기 제2 단말의 사설 주소 및 상기 제2 단말이 속한 네트워크 어드레스 변환기(NAT)에 의하여 상기 사설 주소에 맵핑된 하나 이상의 변환 주소를 포함하는, 피어-투-피어 통신 방법이 제공된다.
삭제
상기 제1 단말은, 상기 제2 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지를 수신할 때까지, 상기 선택하는 단계 및 상기 접속 요청 메시지를 송신하는 단계를 반복 수행할 수 있다.
다른 예시적인 실시예에 따르면, 피어-투-피어 서버로부터, 피어-투-피어 네트워크에 기 접속한 하나 이상의 타 단말의 접속 주소를 획득하고, 상기 접속 주소를 이용하여 상기 하나 이상의 타 단말로 접속 주소 확인 요청을 송신하는 요청 모듈; 상기 하나 이상의 타 단말로부터 수신되는 접속 주소를 이용하여 상기 단말의 접속 주소 목록을 생성하는 접속 주소 목록 생성 모듈; 및 생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록하는 등록 모듈을 포함하는 피어-투-피어 통신 단말이 제공된다.
상기 타 단말의 접속 주소는, 상기 타 단말의 사설 주소(private address)일 수 있다.
상기 접속 주소 목록 생성 모듈은, 상기 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 획득한 공인 주소와 상이한 경우 상기 접속 주소를 상기 접속 주소 목록에 추가할 수 있다.
상기 피어-투-피어 통신 단말은, 상기 피어-투-피어 서버로부터, 상기 피어-투-피어 네트워크 내 접속 상대 단말의 접속 주소 목록을 획득하고, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 선택하는 접속 주소 선택 모듈; 및 선택된 접속 주소를 이용하여 상기 상대 단말로 접속 요청 메시지를 송신하는 접속 모듈을 더 포함할 수 있다.
상기 상대 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지가 수신되지 않는 경우, 상기 접속 주소 선택 모듈은, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 재선택하고, 상기 접속 모듈은, 재선택된 접속 주소를 이용하여 상기 상대 단말로 상기 접속 요청 메시지를 송신할 수 있다.
개시되는 실시예들에 따르면, 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 하나 이상의 NAT가 내부 주소로부터 전송된 패킷을 다른 내부 주소로 전달하지 않은 패킷 라우팅 특성을 가진 경우에도 이와 관계없이 원활하게 피어-투-피어 통신을 수행할 수 있다.
도 1은 다중 네트워크 어드레스 변환기(NAT) 환경의 피어-투-피어(P2P) 통신 네트워크를 예시한 예시도
도 2는 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 단말 간의 접속 과정을 예시한 예시도
도 3은 도 2에 도시된 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 NAT가 내부 주소로부터 송신된 패킷을 다른 내부 주소로 전달하지 않는 속성을 가진 경우의 단말 간의 접속 과정을 예시한 예시도
도 4는 일 실시예에 따른 피어-투-피어 네트워크에서의 접속 주소 등록 방법(400)을 설명하기 위한 흐름도
도 5는 도 4에 도시된 접속 주소 등록 방법을 예시하여 설명하기 위한 예시도
도 6은 피어-투-피어 네트워크에 접속한 제1 단말이 제2 단말과 피어-투-피어 통신을 수행하기 위한 방법(600)을 설명하기 위한 흐름도
도 7은 도 6에 도시된 피어-투-피어 통신 방법을 예시하여 설명하기 위한 예시도
도 8은 일 실시예에 따른 피어-투-피어 통신 단말(800)을 설명하기 위한 블록도
도 9는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 다중 네트워크 어드레스 변환기(NAT) 환경의 피어-투-피어(P2P) 통신 네트워크를 예시한 것이다. 도시된 바와 같이, 피어-투-피어 통신을 위한 단말들은 하나 이상의 NAT 내부에 존재할 수 있다.
예컨대, 도 1에 도시된 예시도에서 단말 A는 NAT1, NAT2 및 NAT3를 포함하는 3개의 NAT 내부에 존재하고, 단말 B는 2개의 NAT2 및 NAT3를 포함하는 2개의 NAT 내부에, 단말 C와 단말 D는 각각 NAT 3 및 NAT 4의 내부에 존재한다. 그리고 단말 E 및 피어-투-피어 서버는 NAT 내부가 아닌 인터넷 망에 존재한다.
이와 같은 환경에서, 각각의 NAT는 단말과 피어-투-피어 서버 간의 통신을 위해 각 단말에 서로 다른 네트워크 주소를 할당한다. 개시되는 실시예에서 상기 네트워크 주소는 IP 기반의 패킷 통신을 위한 IP 및 포트를 의미한다. 예를 들어 단말 A의 경우, NAT1 내부의 사설 주소(private address)는 A0, NAT1이 A0에 할당한 맵핑 주소(mapping address)는 A1, NAT2가 A1에 할당한 맵핑 주소는 A2, NAT3가 A2에 할당한 맵핑 주소는 각각 A3가 된다. 이때 A3는 단말 A의 공인 주소(public address)가 된다. 단말 A에서 피어-투-피어 서버로 패킷을 전송하는 경우, NAT1은 단말 A가 송신한 패킷의 헤더의 송신 주소를 A0에서 A1으로 변환한다. 마찬가지로 NAT2 및 NAT3 또한 상기 변환된 송신 주소를 각각 A2 및 A3으로 재변환한다. 따라서 최종적으로 피어-투-피어 서버는 송신 주소로 A3가 기록된 패킷을 수신하게 되며, 이와 같은 일반적인 피어-투-피어 통신 절차를 통해 피어-투-피어 서버는 단말 A의 공인 주소인 A3를 알게 된다. 즉 단말 A와 피어-투-피어 서버는 단말 A에서 획득한 사설 주소 A0와 피어-투-피어 서버에서 획득한 공인 주소인 A3를 상호 교환하는 절차를 통해 두 개의 주소를 알 수 있게 된다
또한 이와 동일한 절차에 의해 피어-투-피어 서버는 단말 B의 사설 주소 및 공인 주소인 B0, B2를, 단말 C의 사설 주소 및 공인 주소인 C0, C1를, 단말 D의 사설 주소 및 공인 주소인 D0, D1을 각각 획득하게 된다. 공인망에 존재하는 단말 E의 경우 별도의 사설 주소가 없으므로 피어-투-피어 서버는 E0의 정보만을 획득하게 된다.

도 2는 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 단말 간의 접속 과정을 예시한 것이다. 도 2에 도시된 피어-투-피어 통신 네트워크에서, 단말 A는 NAT1 및 NAT2를 포함하는 2개의 NAT 내부에 존재하고, 단말 B는 NAT2 내부에 위치한다. 또한 단말 A의 사설 주소는 A0, NAT1에서 맵핑한 주소는 A1, NAT2에서 맵핑한 주소는 A2이고, 단말 B의 사설 주소는 B0, NAT2에서 맵핑한 주소는 B1이다. 이와 같은 환경에서 단말 B에서 단말 A로 접속하는 과정을 살펴보면 다음과 같다. NAT의 종류(type)에 따라 일부 동작이 상이할 수 있으나 설명의 편의를 위해 모든 NAT의 종류는 풀 콘(full cone) 타입으로 가정한다.
삭제
단말 A와의 접속을 위하여, 단말 B는 피어-투-피어 서버로부터 단말 A의 공인 주소인 A2를 획득하고, 획득된 공인 주소로 접속 요청 패킷을 송신한다(①). 이 경우 NAT2는 A2에 맵핑된 주소인 A1으로 상기 접속 요청 패킷을 전달하고(②), 마찬가지로 NAT1은 A1에 맵핑된 사설 주소인 A0로 상기 접속 패킷을 전달한다(③). 이와 같은 과정을 거쳐 단말 B는 단말 A로 접속 요청 패킷을 정상적으로 전달할 수 있다.
도 3은 도 2에 도시된 다중 NAT 환경의 피어-투-피어 통신 네트워크에서 NAT가 내부 주소로부터 송신된 패킷을 다른 내부 주소로 전달하지 않는 속성을 가진 경우의 단말 간의 접속 과정을 예시한 것이다.
도 3에 도시된 예시도는 도 2와 동일한 구조의 피어-투-피어 통신 네트워크이나, NAT가 내부 주소로부터 송신된 다른 내부 주소로 전달하지 않는 속성을 가진다는 점 만이 상이하다. 이 경우, 도 2와 동일하게 단말 B는 피어-투-피어 서버로부터 단말 A의 공인 주소인 A2를 획득하고, 획득된 공인 주소로 접속 요청 패킷을 송신한다(①). 그러나 NAT2는 상기 접속 요청 패킷의 송신 주소인 B0가 NAT2의 외부가 아닌 NAT2의 내부에서 송신된 패킷임을 인지하고, 해당 패킷을 A1로 전달하지 않고 삭제한다. 따라서 이와 같은 상황에서 단말 B는 피어-투-피어 서버를 거치지 않고는 단말 A로 패킷을 전달할 수 없게 된다.
이와 같은 환경에서도 원활하게 단말간 피어-투-피어 통신을 수행하기 위하여, 개시되는 실시예에서는 피어-투-피어 네트워크에 접속한 신규 단말이 네트워크에 기 접속한 타 단말로 자신의 네트워크 주소를 확인하기 위한 메시지를 전송하도록 구성된다. 이를 좀 더 상세히 설명하면 다음과 같다.
도 4는 일 실시예에 따른 피어-투-피어 네트워크에서의 접속 주소 등록 방법(400)을 설명하기 위한 흐름도이다. 도시된 흐름도는 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 컴퓨팅 장치, 예를 들어 피어-투-피어 네트워크에 진입한 단말에 의해 수행될 수 있다. 도시된 흐름도에서는 상기 방법 또는 과정을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 402에서, 피어-투-피어 네트워크에 새로이 진입한 신규 진입 단말은, 피어-투-피어 서버로부터 상기 네트워크에 기 접속한 하나 이상의 타 단말의 접속 주소를 획득한다. 이때 상기 타 단말의 접속 주소는, 타 단말의 사설 주소(private address)이다.
단계 404에서, 신규 진입 단말은 402 단계에서 획득한 타 단말의 접속 주소를 이용하여 피어-투-피어 네트워크 내의 타 단말로 접속 주소 확인 요청을 송신한다.
단계 406에서, 신규 진입 단말은 하나 이상의 타 단말로부터 수신되는 접속 주소를 이용하여 신규 진입 단말의 접속 주소 목록을 생성한다.
단계 408에서, 신규 진입 단말은 상기 406 단계에서 생성된 접속 주소 목록을 피어-투-피어 서버에 등록한다.
도 5는 일 실시예에 따른 피어-투-피어 네트워크에서의 접속 주소 등록 과정에서, 네트워크에 신규 진입한 단말이 타 단말의 접속 주소를 획득하고 이로부터 접속 주소 목록을 생성하는 과정을 설명하기 위한 예시도이다. 도시된 예시도에서는 단말 A가 피어-투-피어 네트워크에 신규 진입한 것으로 가정하였다.
피어-투-피어 네트워크에 새로이 진입한 단말 A는 피어-투-피어 서버로 접속 주소 확인 요청을 송신하고 상기 요청에 대한 응답으로서 자신의 공인 주소인 A3를 획득한다. 또한, 단말 A는 피어-투-피어 서버로부터 네트워크에 기 접속한 단말 B, C, D, E의 사설 주소를 획득한다.
이후, 단말 A는 획득된 상기 단말 B, C, D, E의 사설 주소를 이용하여 단말 B, C, D, E 각각으로 접속 주소 확인 요청을 송신한다. 도 5에 도시된 바와 같이, NAT2 내부에 존재하는 단말 B, NAT3 내부에 존재하는 단말 C의 경우 단말 A와 동일 네트워크 하에 위치한 단말이므로 상기 접속 주소 확인 메시지의 전달이 가능하다. 그리고 단말 E의 경우 퍼블릭 네트워크인 인터넷 망에 존재하므로 마찬가지로 접속 주소 확인 메시지의 전달이 가능하다. 그러나 단말 D의 경우 단말 A와는 독립된 네트워크인 NAT4의 내부에 존재하므로 상기 접속 주소 확인 메시지의 전달이 불가능하다.
상기 접속 주소 확인 요청을 수신한 단말 B, C, E는 각각 상기 접속 주소 확인 요청에 따라 단말 A의 접속 주소를 단말 A로 회신한다. 이 경우 단말 B는 A1를, 단말 C는 A2를, 단말 E는 A3를 각각 단말 A의 접속 주소로서 회신한다. 그러면 단말 A는 수신된 접속 주소들로부터 접속 주소 목록을 생성한다. 상기 접속 주소 목록에는 자신의 사설 주소인 A0와 함께 피어-투-피어 서버로부터 획득한 자신의 공인 주소인 A3, 단말 B로부터 획득한 A1, 단말 C로부터 획득한 A2가 포함될 수 있다. 단말 E로부터 획득한 A3는 자신이 기 획득한 공인 주소와 동일하므로 중복되는 주소는 재차 접속 주소 목록에 포함될 필요가 없다. 즉, 단말 A는 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 기 획득한 공인 주소와 상이한 경우에만 상기 접속 주소를 상기 접속 주소 목록에 추가할 수 있다.
이와 같은 과정을 거쳐 단말 A는 자신의 접속 주소 목록인 (A0, A1, A2, A3)를 피어-투-피어 서버에 등록한다. 마찬가지로 단말 B는 (B0, B1, B2)를, 단말 C는 (C0, C1)을, 단말 D는 (D0, D1)을 각각 피어-투-피어 서버에 등록할 수 있다.
도 6은 피어-투-피어 네트워크에 접속한 각 단말들이 자신의 접속 주소 목록을 피어-투-피어 서버에 등록한 상태에서, 제1 단말이 제2 단말과 피어-투-피어 통신을 수행하기 위한 방법(600)을 설명하기 위한 흐름도이다.
단계 602에서, 피어-투-피어 네트워크에 접속한 제1 단말은, 피어-투-피어 서버로부터 상기 네트워크에 접속한 제2 단말의 접속 주소 목록을 획득한다. 전술한 바와 같이, 상기 접속 주소 목록은 상기 제2 단말의 사설 주소 및 상기 제2 단말이 속한 네트워크 어드레스 변환기(NAT)에 의하여 상기 사설 주소에 맵핑된 하나 이상의 변환 주소를 포함할 수 있다.
삭제
단계 604에서, 제1 단말은 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 선택한다.
단계 606에서, 제1 단말은 상기 604 단계에서 선택된 접속 주소를 이용하여 상기 제2 단말로 접속 요청 메시지를 송신한다.
단계 608에서, 제1 단말은 상기 제2 단말로부터 상기 접속 요청 메시지에 대한 응답이 수신되는지 여부를 판단한다. 예를 들어, 제1 단말은 상기 접속 요청 메시지의 송신 후 일정 시간 동안 상기 응답 메시지의 수신을 대기할 수 있다. 상기 판단 결과 상기 접속 요청 메시지에 대한 응답이 수신되지 않는 경우, 제1 단말은 접속 주소 목록에 포함된 접속 주소 중 다른 주소를 선택하여 상기 접속 요청 메시지를 재송신한다. 즉, 제1 단말은 제2 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지를 수신할 때까지, 상기 604 단계 및 606 단계를 반복 수행한다.
이와 달리, 상기 제2 단말로부터 응답 메시지를 수신하는 경우, 단계 610에서 제1 단말은 제2 단말과 접속에 성공한 것으로 판단하고 제2 단말과 메시지를 송수신을 개시하게 된다.
도 7은 도 6에 도시된 피어-투-피어 통신 방법을 예시하여 설명하기 위한 예시도이다. 도시된 예시도에서는, 단말 C가 단말 A로 접속을 시도하는 것으로 가정하였다.
도 7에 도시된 예시도에서 단말 A는 NAT1, NAT2 및 NAT3를 포함하는 3개의 NAT 내부에 존재하고, 단말 C는 NAT 3의 내부에 존재한다. 이 경우 도 4에 도시된 과정을 통해 피어-투-피어 서버는 단말 A의 접속 주소 목록인 (A0, A1, A2, A3) 및 단말 B의 접속 주소 목록인 (C0, C1)을 각각 저장 및 관리한다.
이와 같은 환경에서 단말 A로의 접속을 위하여, 단말 C는 피어-투-피어 서버로부터 단말 A의 접속 주소 목록인 (A0, A1, A2, A3)를 획득한다. 이후 단말 C는 상기 접속 주소 목록에 포함된 단말 A의 접속 주소 중 하나를 선택하여 단말 A로 접속 요청 메시지를 송신한다.
삭제
만약 단말 C가 A3로 상기 메시지를 송신한 경우에는 NAT3의 패킷 라우팅 특성에 따라 접속 요청 메시지의 전송 성공 여부가 달라진다. 즉, 만약 NAT3가 내부 주소로부터 온 패킷을 다른 내부 주소로 전달하지 않는 특성을 가지고 있는 경우, 단말 C는 A3를 통하여 단말 A로 접속 주소 요청을 송신할 수 없다. 그러나 단말 C가 A2를 통하여 상기 메시지를 송신할 경우에는 상기 접속 요청 메시지를 단말 A로 전달하는 것이 가능하다. 일 실시예에서, 단말 C는 상기 접속 주소 목록에 기록된 주소와 자신의 사설 주소를 서로 비교하고, 자신의 사설 주소와 동일한 네트워크에 해당하는 주소인 A2를 선택하여 상기 접속 요청 메시지를 전달하도록 구성될 수도 있다.
이와 같이, 개시되는 실시예들에 따를 경우 피어-투-피어 서버에서 각 단말들의 사설 주소/공인 주소 뿐 아니라, 다중 NAT에서 맵핑된 맵핑 주소를 모두 파악하여 관리함으로써, 다중 NAT 환경에서 NAT의 패킷 라우팅 특성과 관계 없이 단말들 간의 접속을 원활히 수행할 수 있다.
도 8은 일 실시예에 따른 피어-투-피어 통신 단말(800)을 설명하기 위한 블록도이다. 도시된 바와 같이, 일 실시예에 따른 피어-투-피어 통신 단말(800)은 요청 모듈(802), 접속 주소 목록 생성 모듈(804), 등록 모듈(806), 접속 주소 선택 모듈(808) 및 접속 모듈(810)을 포함한다.
요청 모듈(802)은 피어-투-피어 서버로부터, 피어-투-피어 네트워크에 기 접속한 하나 이상의 타 단말의 접속 주소를 획득하고, 상기 접속 주소를 이용하여 상기 하나 이상의 타 단말로 접속 주소 확인 요청을 송신한다. 이때 상기 타 단말의 접속 주소는, 상기 타 단말의 사설 주소(private address)일 수 있다.
접속 주소 목록 생성 모듈(804)은 상기 하나 이상의 타 단말로부터 수신되는 접속 주소를 이용하여 상기 단말의 접속 주소 목록을 생성한다. 접속 주소 목록 생성 모듈(804)은, 상기 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 획득한 공인 주소와 상이한 경우 상기 접속 주소를 상기 접속 주소 목록에 추가할 수 있다.
등록 모듈(806)은 생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록한다.
접속 주소 선택 모듈(808)은 피어-투-피어 서버로부터, 상기 피어-투-피어 네트워크 내 접속 상대 단말의 접속 주소 목록을 획득하고, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 선택한다.
접속 모듈(810)은 선택된 접속 주소를 이용하여 상기 상대 단말로 접속 요청 메시지를 송신한다. 만약 상기 상대 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지가 수신되지 않는 경우, 접속 주소 선택 모듈(808)은, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 재선택하고, 접속 모듈(810)은, 재선택된 접속 주소를 이용하여 상기 상대 단말로 상기 접속 요청 메시지를 송신하게 된다.
도 9는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 본 발명의 실시예들에 따른 피어-투-피어 통신 단말 장치(800)일 수 있다. 컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(102)와 연결될 수도 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위 뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
800: 피어-투-피어 통신 단말
802: 요청 모듈
804: 접속 주소 목록 생성 모듈
806: 등록 모듈
808: 접속 주소 선택 모듈
810: 접속 모듈

Claims (10)

  1. 피어-투-피어 네트워크에 진입한 제1 단말에서, 피어-투-피어 서버로부터, 상기 네트워크에 기 접속한 타 단말의 사설 주소를 획득하는 단계;
    획득된 상기 타 단말의 사설 주소를 이용하여 상기 타 단말로 상기 제1 단말의 접속 주소 확인 요청을 송신하는 단계;
    상기 타 단말로부터 수신되는 상기 제1 단말의 접속 주소를 이용하여 상기 제1 단말의 접속 주소 목록을 생성하는 단계; 및
    생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록하는 단계를 포함하고,
    상기 제1 단말 및 상기 타 단말은 내부 주소로부터 송신된 패킷을 다른 내부 주소로 전달하지 않는 제1 네트워크 어드레스 변환기 내부에 존재하고,
    상기 제1 단말은, 상기 제1 네트워크 어드레스 변환기의 하위에 존재하는 제2 네트워크 어드레스 변환기 내부에 존재하고,
    상기 타 단말은 상기 제2 네트워크 어드레스 변환기 외부에 존재하고,
    상기 제1 단말의 접속 주소는 상기 제2 네트워크 어드레스 변환기가 상기 제1 단말에 할당한 매핑 주소인,
    피어-투-피어 네트워크에서의 접속 주소 등록 방법.
  2. 청구항 1에 있어서,
    상기 타 단말의 접속 주소는, 상기 타 단말의 사설 주소(private address)인, 피어-투-피어 네트워크에서의 접속 주소 등록 방법.
  3. 청구항 1에 있어서,
    상기 접속 주소 목록을 생성하는 단계는, 상기 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 획득한 공인 주소와 상이한 경우 상기 접속 주소를 상기 접속 주소 목록에 추가하도록 구성되는, 피어-투-피어 네트워크에서의 접속 주소 등록 방법.
  4. 피어-투-피어 네트워크에 접속한 제1 단말에서, 피어-투-피어 서버로부터, 상기 네트워크에 접속한 제2 단말의 접속 주소 목록을 획득하는 단계;
    상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 접속 주소를 선택하는 단계; 및
    선택된 상기 접속 주소를 이용하여 상기 제2 단말로 접속 요청 메시지를 송신하는 단계
    를 포함하며,
    상기 제1 단말 및 상기 제2 단말은 내부 주소로부터 송신된 패킷을 다른 내부 주소로 전달하지 않는 제1 네트워크 어드레스 변환기 내부에 존재하고,
    상기 제2 단말은, 상기 제1 네트워크 어드레스 변환기의 하위에 존재하는 제2 네트워크 어드레스 변환기 내부에 존재하고,
    상기 제1 단말은 상기 제2 네트워크 어드레스 변환기 외부에 존재하고,
    상기 접속 주소 목록은 상기 제2 네트워크 어드레스 변환기가 상기 제2 단말에 할당한 매핑 주소를 포함하는, 피어-투-피어 통신 방법.
  5. 청구항 4에 있어서,
    상기 제1 단말은, 상기 제2 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지를 수신할 때까지, 상기 선택하는 단계 및 상기 접속 요청 메시지를 송신하는 단계를 반복 수행하는, 피어-투-피어 통신 방법.
  6. 피어-투-피어 통신 단말에 있어서,
    피어-투-피어 서버로부터, 피어-투-피어 네트워크에 기 접속한 타 단말의 사설 주소를 획득하고, 상기 사설 주소를 이용하여 상기 타 단말로 상기 피어-투-피어 통신 단말의 접속 주소 확인 요청을 송신하는 요청 모듈;
    상기 타 단말로부터 수신되는 상기 피어-투-피어 통신 단말의 접속 주소를 이용하여 상기 피어-투-피어 통신 단말의 접속 주소 목록을 생성하는 접속 주소 목록 생성 모듈; 및
    생성된 상기 접속 주소 목록을 상기 피어-투-피어 서버에 등록하는 등록 모듈을 포함하고,
    상기 피어-투-피어 통신 단말 및 상기 타 단말은 내부 주소로부터 송신된 패킷을 다른 내부 주소로 전달하지 않는 제1 네트워크 어드레스 변환기 내부에 존재하고,
    상기 피어-투-피어 통신 단말은, 상기 제1 네트워크 어드레스 변환기의 하위에 존재하는 제2 네트워크 어드레스 변환기 내부에 존재하고,
    상기 타 단말은 상기 제2 네트워크 어드레스 변환기 외부에 존재하고,
    상기 피어-투-피어 통신 단말의 접속 주소는 상기 제2 네트워크 어드레스 변환기가 상기 피어-투-피어 통신 단말에 할당한 매핑 주소인, 피어-투-피어 통신 단말.
  7. 청구항 6에 있어서,
    상기 타 단말의 접속 주소는, 상기 타 단말의 사설 주소(private address)인, 피어-투-피어 통신 단말.
  8. 청구항 6에 있어서,
    상기 접속 주소 목록 생성 모듈은, 상기 타 단말로부터 수신되는 접속 주소가 상기 피어-투-피어 서버로부터 획득한 공인 주소와 상이한 경우 상기 접속 주소를 상기 접속 주소 목록에 추가하는, 피어-투-피어 통신 단말.
  9. 청구항 6에 있어서,
    상기 피어-투-피어 서버로부터, 상기 피어-투-피어 네트워크 내 접속 상대 단말의 접속 주소 목록을 획득하고, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 선택하는 접속 주소 선택 모듈; 및
    선택된 접속 주소를 이용하여 상기 상대 단말로 접속 요청 메시지를 송신하는 접속 모듈을 더 포함하는, 피어-투-피어 통신 단말.
  10. 청구항 9에 있어서,
    상기 상대 단말로부터 상기 접속 요청 메시지에 대한 응답 메시지가 수신되지 않는 경우,
    상기 접속 주소 선택 모듈은, 상기 접속 주소 목록에 포함된 복수의 접속 주소 중 어느 하나의 주소를 재선택하고,
    상기 접속 모듈은, 재선택된 접속 주소를 이용하여 상기 상대 단말로 상기 접속 요청 메시지를 송신하는, 피어-투-피어 통신 단말.
KR1020190063535A 2019-05-30 피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법 KR102666587B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190063535A KR102666587B1 (ko) 2019-05-30 피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190063535A KR102666587B1 (ko) 2019-05-30 피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법

Publications (2)

Publication Number Publication Date
KR20200137344A KR20200137344A (ko) 2020-12-09
KR102666587B1 true KR102666587B1 (ko) 2024-05-17

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101049912B1 (ko) * 2009-02-24 2011-07-19 (주)닥터소프트 네트워크 시스템 간의 접속 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101049912B1 (ko) * 2009-02-24 2011-07-19 (주)닥터소프트 네트워크 시스템 간의 접속 방법

Similar Documents

Publication Publication Date Title
CN111343092B (zh) 基于边缘计算的通信方法、装置、介质及电子设备
JP5817299B2 (ja) アドレス変換装置、通信システム及びアドレス変換方法
CN100469022C (zh) 一种检测网络类型的方法及系统
JP5948647B2 (ja) ネットワーク・アドレスを変換するシステムおよび方法
US8650326B2 (en) Smart client routing
US8458298B2 (en) Failover in an internet location coordinate enhanced domain name system
US8902743B2 (en) Distributed and scalable network address translation
JP4771553B2 (ja) IPv6パケットをトンネリングする方法、システム、及びコンピュータ・プログラム
CN103108089B (zh) 网络系统的连线建立管理方法及其相关系统
JP2003163678A (ja) 仮想ネットワーク名の解決方法
US9143421B2 (en) Network system capable of implementing stun with the assistance of two network devices and method thereof
US20130346591A1 (en) Clientless Cloud Computing
KR20110114564A (ko) Stun을 사용하여 생성된 세션의 정책 서비스 시스템 아키텍처
CN102984290A (zh) 用于多重同时连接的对称网络地址转换器的穿越
JP5458688B2 (ja) 一意性保証支援プログラム、サービス提供システム、及び一意性保証実現方法
JP2024504006A (ja) サービス統合におけるデータ伝送方法、装置、機器及びコンピュータープログラム
WO2017028398A1 (zh) 通信处理方法和装置
WO2023050933A1 (zh) 确定失陷主机的方法及装置
CN112351115B (zh) 对称型nat设备的端口预测方法及装置
US20150095469A1 (en) Identifier-based communication method using application program interface
CN104488240A (zh) 一种会话管理方法、地址管理方法及相关装置
CN101459650A (zh) 业务路由方法、业务路由器、客户端设备及业务网络系统
KR102666587B1 (ko) 피어-투-피어 통신 단말 장치 및 상기 장치에서의 피어-투-피어 통신 방법
US8326919B1 (en) Network address translation auto-discovery in data storage networks
CN110677512B (zh) 一种地址解析方法及装置