KR100703065B1 - 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법 - Google Patents

다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법 Download PDF

Info

Publication number
KR100703065B1
KR100703065B1 KR1020060104344A KR20060104344A KR100703065B1 KR 100703065 B1 KR100703065 B1 KR 100703065B1 KR 1020060104344 A KR1020060104344 A KR 1020060104344A KR 20060104344 A KR20060104344 A KR 20060104344A KR 100703065 B1 KR100703065 B1 KR 100703065B1
Authority
KR
South Korea
Prior art keywords
client
information
hole punching
relay server
session
Prior art date
Application number
KR1020060104344A
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 KR1020060104344A priority Critical patent/KR100703065B1/ko
Application granted granted Critical
Publication of KR100703065B1 publication Critical patent/KR100703065B1/ko
Priority to PCT/KR2007/005275 priority patent/WO2008051028A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/56Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities
    • 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/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 NAT(Network Address Translation) 제어 시스템에 관한 것으로, 더욱 상세하게는 다자간의 UDP(User Datagram Protocol) 통신 세션 설정을 통한 양방향 음성통화 서비스를 위한 NAT 제어 시스템 및 그 방법에 관한 것이다. 본 발명은 다자간 음성통화 서비스를 위한 NAT(Network Address Translation) 제어 시스템에 있어서, 제1 클라이언트로부터 제1 세션 설정 요청(connection request) 정보 또는 제1 홀 펀칭 정보를 수신하고, 제2 클라이언트로부터 제2 세션 설정 요청 정보 또는 제2 홀 펀칭 정보를 수신하며, 상기 제1 컨녁션 리퀘스트 정보 또는 상기 제2 세션 설정 요청을 릴레이 서버로 전송하는 메인 서버(main server); 및 상기 메인 서버로부터 상기 제1 세션 설정 요청 정보 또는 제2 세션 설정 요청 정보를 수신하여 상기 제1 클라이언트 및 상기 제2 클라이언트와 통신 세션을 유지하고, 상기 제1 클라이언트에게 상기 제2 홀 펀칭 정보를 릴레이하고, 동시에 상기 제2 클라이언트에게 상기 제1 홀 펀칭 정보를 릴레이하는 프로세스를 수행하여 상기 제1 클라이언트와 상기 제2 클라이언트 사이에 UDP 통신 세션을 설정하는 릴레이 서버(relay server)를 포함하고, 상기 릴레이 서버는 상기 제1 홀 펀칭 프로세스 수행을 실패하는 경우 상기 제1 클라이언트와 상기 제2 클라이언트 간 통신 세션을 릴레이하는 것을 특징으로 하는 NAT 제어 시스템이 제공되고, 또한 메인 서버가 부하없이 원활한 음성통화 서비스가 제공된다.
NAT(Network Address Translation), UDP(User Datagram Protocol), UDP 홀 펀칭(hole punching), 릴레이 서버, 세션 설정

Description

다자간 양방향 음성통화 서비스를 위한 NAT 제어 시스템 및 그 방법{NETWORK ADDRESS TRANSLATION CONTROL SYSTEM AND METHOD FOR PROVIDING MULTILATERAL-BIDIRECTIONAL AUDIO COMMUNICATION SERVICE}
도 1은 종래의 다자간 음성통화 시스템 및 그 제어방법을 도시한 것이다.
도 2는 본 발명의 일실시예에 따른 다자간 음성통화 서비스를 제공하는 NAT 제어 시스템과 그 구성 요소들 사이에 유디피 홀 펀칭(UDP hole punching) 프로세스를 거치기 전의 UDP 세션이 설정되어 있는 상태를 도시한 것이다.
도 3는 본 발명의 일실시예에 따른 제1 클라이언트와 제2 클라이언트 사이의 제1 유디피 홀 펀칭(UDP hole punching) 프로세스를 통한 다자간 음성통화 서비스가 제공되는 NAT 제어 시스템 및 제어 과정을 설명하기 위해 도시한 것이다..
도 4는 도 3의 릴레이 서버를 통한 제1 홀 펀칭 프로세스를 통하여 제1 클라이언트와 제2 클라이언트 사이에 생성된 UDP 통신 채널을 도시한 것이다.
도 5는 본 발명의 일실시예에 따른 도 4의 UDP 세션 설정된 제1 클라이언트와 제2 클라이언트의 통신 채널에 제3 클라이언트가 추가로 UDP 세션 설정되는 과정을 나타낸 NAT 제어 시스템을 도시한 것이다.
도 6은 도 5의 릴레이 서버를 통한 제2 홀 펀칭 프로세스를 통하여 제1 클라이언트, 제2 클라이언트 및 제3 클라이언트 사이에 생성된 UDP 통신 채널을 도시한 것이다.
도 7은 본 발명의 일실시예에 따른 다자간 음성통화 서비스를 위한 NAT 제어 방법을 도시한 흐름도이다.
도 8은 본 발명의 일실시예에 따라 적용 가능한 다자간 음성통화 서비스를 제공하는 NAT 제어 시스템상에서 구현되는 방 입장 및 방 생성 과정을 나타낸 흐름도이다.
도 9는 본 발명의 일실시예에 따른 제1 클라이언트와 제2 클라이언트 사이에 릴레이 서버를 의한 UDP 홀 펀칭을 통하여 UDP 통신 세션 설정되는 다자간 음성통화 서비스가 구현되는 NAT 제어 방법의 과정을 나타낸 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
200, 820 : 메인 서버 100, 840: 릴레이 서버
301: 제1 클라이언트 302: 제2 클라이언트
303: 제3 클라이언트
본 발명은 NAT(Network Address Translation) 제어 시스템에 관한 것으로, 더욱 상세하게는 다자간의 UDP(User Datagram Protocol) 통신 세션 설정을 통한 양방향 음성통화 서비스를 위한 NAT 제어 시스템 및 그 방법에 관한 것이다.
도 1은 종래의 다자간 음성통화 시스템 및 그 제어방법을 도시한 것이다.
도 1을 참조하면, 하나의 서버에 복수의 클라이언트가 동시에 접속한다. 서버가 제공하는 컨텐츠에 따라서 접속되어 있는 다수의 클라이언트들 사이의 음성통화가 매우 유용한 경우가 있다. 예컨대, 팀플레이 방식의 게임, 경매 시스템, 학술연구를 목적으로 하는 모임의 컨퍼런스(conference) 등에 참가하는 다수의 참가자 사이의 음성통화 서비스는 매우 효과적일 수 있다.
이러한 인터넷 상의 다자간 음성통화 시스템은 P2P(Peer to Peer) 통신 방식에 의해 구현되고 있다. P2P 통신 방식은 클라이언트 상호간에 IP 주소 등을 공유한 상태에서, 서버를 거치지 않고 클라이언트 상호간에 직접적으로 통신하는 방식이다.
서버에 접속한 다수의 클라이언트 사이의 P2P 통신을 위해 필요한 각 클라이언트별 IP 주소는 일반적으로 별도의 서비스에 의해 제공되기 때문에, 서비스 운영자 및 개발자에게 서비스 개발에 있어 큰 어려움을 줄 수 있다.
또한, 상기 다수의 클라이언트는 인터넷의 공인 IP 주소를 절약하거나, 공공망과 연결되는 상기 다수의 클라이언트들의 고유한 사설망을 침입자들로부터 보호하기 위해 NAT(Network Address Translation)을 사용한다. 이는 인터넷의 공인 IP 주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 하는 것이 필요한데, NAT를 이용하면 사설 IP 주소를 사용하면서 이를 공인 IP 주소와 상호변환할 수 있기 때문이다. 즉 공인 IP 주소를 다수가 함께 사용할 수 있도록 함으로써 이를 절약할 수 있도록 한다.
NAT는 공개된 망과 사설망 사시에 방화벽(firewall)을 설치하여 외부 공격으 로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있는데, 이 경우 외부 통신망 즉 인터넷망과 연결하는 장비인 라우터에 NAT를 설정할 경우 라우터는 자신에게 할당된 공인 IP 주소만 외부로 알려지게 하고, 내부에서는 사설 IP 주소만 사용하도록 하여 필요 시에 이를 서로 변환하므로, 상기 다수의 클라이언트가 각기 다른 고유한 사설망(private network)에 있다면, 상기 다수의 클라이언트들끼리는 팀플레이 방식의 게임, 경매 시스템, 학술연구를 목적으로 하는 모임의 컨퍼런스(conference) 등에 참가하는 다수의 참가자 사이의 음성통화 서비스를 제공할 수 있는 P2P 통신이 이루어질 수가 없다.
또한, NAT는 full cone, restricted cone, port restricted cone, 및 symmetric cone의 4가지 타입이 존재한다. 상기 full cone 타입은 내부 한 쌍의 IP 주소와 포트(port)에 대해 외부로 나가는 모든 포트가 하나로 맵핑되는 것으로서, 맵핑된 주소와 포트를 사용하여 모든 외부 클라이언트는 내부 클라이언트로 패킷(packet)을 전송할 수 있다. 상기 restricted cone 타입은 상기 full cone 타입과 동일하지만, 외부로부터 패킷을 전송받기 전에 내부에서 외부로 먼저 전송되어야 맵핑이 이루어진다. 즉, 외부의 IP 주소가 동일하면 같은 포트로 맵핑된다. 또한, 상기 port restricted cone은 상기 restricted cone과 동일하지만 제한 조건으로서 포트도 함께 포함되므로, 외부의 IP 주소와 포트가 모두 동일하여야 맵핑이 이루어진다. 상기 symmetric cone은 내부에서 전송되는 내부 IP 주소와 포트가 동일하더라도 목적지의 IP 나 포트가 달라지면 NAT에서 맵핑된 포트도 달라지는 타입이다.
상기 Symmetric cone 타입을 제외한 나머지 3가지 타입은 모두 NAT에 매핑된 하나의 포트를 사용하여 내부의 클라이언트와 세션 설정을 통한 통신을 할 수 있다. 즉, 패킷을 보내는 하나의 포트를 통해 받아들이는 패킷은 외부 어디로든 전송할 수 있다는 것으로서, 1 대 다수간의 통신이 이루어질 수 있지만, 상기 symmetric cone의 경우는 내부 클라이언트와 통신하는 외부 클라이언트들은 모두 각자 다른 포트를 사용하게 되므로, 1 대 1의 통신만이 가능하다.
본 발명은 상기와 같은 종래 기술을 개선하기 위해 안출된 것으로서, UDP 홀 펀칭(hole punching) 기술과 릴레이 서버(relay server)를 이용한 다자간에 UDP 통신 세션을 설정하여 음성통화 서비스가 이루어지는 NAT 제어 시스템 및 그 방법을 제공하는 것을 목적으로 한다.
본 발명의 또 다른 목적은 NAT 타입에 관계없이 다자간에 실시간으로 양방향 통신이 이루어질 수 있는 NAT 제어 시스템 및 그 방법을 제공하는 것이다.
본 발명은 서비스 운영자 및 개발자에게 다자간 양방향 음성통화 서비스를 위한 NAT 제어 시스템 및 그 방법을 제공하여 원활한 서비스 개발이 이루어지도록 하는 것을 그 목적으로 한다.
본 발명은 다자간에 실시간으로 양방향 통신이 이루어지는 NAT 제어 시스템 및 그 방법을 통하여 메인 서버가 부하 없이 원활한 음성통화 서비스를 제공하도록 하는 것을 그 목적으로 한다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여, 본 발명은 다자간 음성통화 서비스를 위한 NAT(Network Address Translation) 제어 시스템에 있어서, 제1 클라이언트로부터 제1 세션 설정 요청(connection request) 정보 또는 제1 홀 펀칭 정보를 수신하고, 제2 클라이언트로부터 제2 세션 설정 요청 정보 또는 제2 홀 펀칭 정보를 수신하며, 상기 제1 컨녁션 리퀘스트 정보 또는 상기 제2 세션 설정 요청을 릴레이 서버로 전송하는 메인 서버(main server); 및 상기 메인 서버로부터 상기 제1 세션 설정 요청 정보 또는 제2 세션 설정 요청 정보를 수신하여 상기 제1 클라이언트 및 상기 제2 클라이언트와 통신 세션을 유지하고, 상기 제1 클라이언트에게 상기 제2 홀 펀칭 정보를 릴레이하고, 동시에 상기 제2 클라이언트에게 상기 제1 홀 펀칭 정보를 릴레이하는 프로세스를 수행하여 상기 제1 클라이언트와 상기 제2 클라이언트 상호간 직접 홀 펀칭 프로세싱을 수행, 통신 세션을 설정토록 하며, 상기 릴레이 서버는 상기 제1 홀 펀칭 프로세스 수행을 실패하는 경우 상기 제1 클라이언트와 상기 제2 클라이언트 간 통신 세션을 릴레이하는 것을 특징으로 하는 NAT 제어 시스템을 제공한다.
본 발명의 일측에 따르면, 다자간 음성통화 서비스를 위한 NAT(Network Address Translation) 제어 방법에 있어서, 상기 메인서버는 제1 클라이언트로부터 제1 세션 설정 요청 정보 또는 제1 홀 펀칭 정보를 수신하고, 제2 클라이언트로부터 제2 세션 설정 요청 정보 또는 제2 홀 펀칭 정보를 수신하며, 상기 제1 컨녁션 리퀘스트 정보 또는 상기 제2 세션 설정 요청을 릴레이 서버로 전송하는 단계; 제1 세션 설정 요청 정보 및 제2 세션 설정 요청 정보를 수신하여 상기 제1 클라이언트 및 상기 제2 클라이언트와 통신 세션을 유지하는 단계; 및 상기 제1 클라이언트로부터 제1 홀 펀칭 정보를 수신하여 상기 제2 클라이언트로 릴레이하고, 동시에 상기 제2 클라이언트로부터 제2 홀 펀칭 정보를 수신하여 상기 제1 클라이언트로 릴레이하여 상기 제1클라이언트와 상기 제2클라이언트간 직접 홀펀칭 프로세스를 수행하는 단계를 포함하는 것을 특징으로 하는 NAT 제어 방법이 제공된다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 2는 본 발명의 일실시예에 따른 다자간 음성통화 서비스를 제공하는 NAT 제어 시스템과 그 구성 요소들 사이에 유디피 홀 펀칭(UDP hole punching) 프로세스를 거치기 전의 UDP 세션이 설정되어 있는 상태를 도시한 것이다.
도 2를 참조하면, 본 발명의 다자간 음성통화 서비스를 제공하는 NAT 제어 시스템은 릴레이 서버(relay server)(100) 및 메인 서버(main server)(200)를 포함하고, 메인 서버(200)는 각각 다른 NAT를 통하여 다른 노드(node)를 가지는 다수의 클라이언트(301, 302, 303)들과 UDP 세션 설정되어 있다.
메인 서버(200)는 제1 클라이언트(301)로부터 제1 세션 설정 요청(connection request) 정보를 수신하고, 제2 클라이언트(302)로부터는 제2 세션 설정 요청 정보를 수신하여, 상기 제1 컨녁션 리퀘스트 정보 또는 상기 제2 세션 설정 요청을 릴레이 서버로 전송한다. 릴레이 서버(100)는 메인 서버(200)로부터 상기 제1 세션 설정 요청 정보 또는 제2 세션 설정 요청 정보를 수신하여 제1 클라이언트(301)과 제2 클라이언트(302)와 통신 세션을 유지한다.
도 2는 상술한 통신 세션이 유지되고 있는 제1 유디피 홀 펀칭(UDP hole punching) 프로세스를 거치기 전의 UDP 세션이 설정되어 있는 상태로서, 구체적으로는 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이 설정되어 있고, 제2 클라이언트(302)는 각기 다른 노드(node)를 가지며 메인 서버(200)와 session MS-C2(122), 제3 클라이언트(303)도 또 다른 노드(node)를 가지며 메인 서버(200)와 session MS-C3(123)이 설정되어 있다. 또한, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 다수의 클라이언트(301, 302, 303)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정되어 있다. 즉, 릴레이 서버(100)는 공인(public) IP를 사용하기 때문에 어떤 클라이언트와도 통신 세션 연결 설정 및 유지가 가능하여 후술한 홀 펀칭 프로세스가 성공적으로 수행될 수 있다.
또한, 홀 펀칭 프로세스와 무관하게, 릴레이 서버(100)는 클라이언트 상호간 음성 데이터의 릴레이 프로세스의 수행이 가능하다. 그러나, 릴레이 서버(100)가 단순히 상기 클라이언트 상호간의 음성 데이터의 릴레이 만을 수행하게 되고, 상기 클라이언트의 수가 증가하게 되면 음성 데이터의 릴레이 프로세스에 의해 릴레이 서버(100)의 프로세싱 파워(processing power), 네트워크 대역폭(network bandwidth), 통신 지연(communication latency) 등에 있어서 문제점이 발생하게 된다. 본 발명에서는 릴레이 서버(100)의 상술한 문제점을 보완하기 위해 클라이언트간 홀 펀칭 프로세스가 성공적으로 수행된 경우에는 릴레이 서버(100)를 경유하지 아니하고 직접적으로 음성 데이터를 상기 클라이언트 상호간에 송수신이 가능해진다. 홀 펀칭 프로세스를 수행, 클라이언트 간 직접 음성통신이 가능하게 되는 경우에는 릴레이 서버의 프로세싱 파워, 네트워크 대역폭, 통신 지연 등의 문제점의 극복이 가능하다.
홀 펀칭 프로세스는 우선, 메인 서버(200)가 제1 클라이언트(301)로부터 제1 홀 펀칭 정보와 제2 클라이언트(302)로부터 제2 홀 펀칭 정보를 수신하고, 상기 제1 홀 펀칭 정보와 상기 제2 홀 펀칭 정보를 릴레이 서버(100)로 전송한다.
다음으로, 릴레이 서버(100)는 메인 서버(200)로부터 수신된 상기 제1 홀 펀칭 정보를 제2 클라이언트(302)로 릴레이하고, 제2 클라이언트(302)로부터 제2 홀 펀칭 정보를 수신하여 이를 제1 클라이언트(301)로 릴레이하여 제1 홀 펀칭 프로세스를 수행한다. 여기서, 상기 제1 홀 펀칭 정보는 상기 제1 클라이언트의 고정 어드레스 및 프라이빗 어드레스(private address) 정보를 포함하고, 상기 제2 홀 펀칭 정보는 상기 제2 클라이언트의 고정 어드레스 및 프라이빗 어드레스를 포함한다. 상술한 과정은 이후에 자세히 설명하기로 한다.
도 3는 본 발명의 일실시예에 따른 제1 클라이언트와 제2 클라이언트 사이의 제1 유디피 홀 펀칭(UDP hole punching) 프로세스를 통한 다자간 음성통화 서비스가 제공되는 NAT 제어 시스템 및 제어 과정을 설명하기 위해 도시한 것이다.
제1 클라이언트(301)가 제2 클라이언트(302)로 직접 UDP 접속을 시도하려 한다면, 제1 클라이언트(301)는 제2 클라이언트(302)의 고정 IP 주소로 UDP 패킷을 보내기 시작하면(210) NAT 2는 일반적으로 제1 클라이언트(301)로부터의 UDP 패킷을 드롭(drop)한다. 이는 원본 IP 주소와 포트 번호가 원래 외부로 연결된 세션 설정인 session MS-C2(122)와 동일하지 않기 때문이다. 제2 클라이언트(302)에서 제1 클라이언트로 UDP 패킷을 전송할 경우(220)에도 마찬가지이다.
제1 홀 펀칭 프로세스가 이루어지기 전에 다수의 클라이언트들(301, 302, 303), 메인 서버(200) 및 릴레이 서버(100)는 도 2에서 상술한 바와 같이, 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이 설정되어 있고, 제2 클라이언트(302)는 각기 다른 노드(node)를 가지며 메인 서버(200)와 session MS-C2(122), 제3 클라이언트(303)도 또 다른 노드(node)를 가지며 메인 서버(200)와 session MS-C3(123)이 설정되어 있다. 메인 서버(200)는 제1 클라이언트(301)로부터 제1 세션 설정 요청 정보를 수신하고, 제2 클라이언트(302)로부터는 제2 세션 설정 요청 정보를 수신하여, 상기 제1 세션 설정 요청 정보 또는 상기 제2 세션 설정 요청을 릴레이 서버로 전송한다. 릴레이 서버(100)는 메인 서버(200)로부터 상기 제1 세션 설정 요청 정보 또는 제2 세션 설정 요청 정보를 수신하여 제1 클라이언트(301)과 제2 클라이언트(302)와 통신 세션을 설정하여, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 제1 클라이언트 및 제2 클라이언트(301, 302)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정된다.
상술한 바와 같이 릴레이 서버(100)는 클라이언트 상호간 음성 데이터의 릴레이 프로세스의 수행이 가능하다. 그러나, 릴레이 서버(100)가 단순히 상기 클라이언트 상호간의 음성 데이터의 릴레이 만을 수행하게 되고, 상기 클라이언트의 수가 증가하게 되면 음성 데이터의 릴레이 프로세스에 의해 릴레이 서버(100)의 프로세싱 파워, 네트워크 대역폭, 및 통신 지연 등에 있어서 문제점이 발생하게 된다. 본 발명에서는 릴레이 서버(100)의 상술한 문제점을 보완하기 위해 홀 펀칭 프로세스가 성공적으로 수행된 경우에는 릴레이 서버(100)를 경유하지 아니하고 직접적으로 음성 데이터를 상기 클라이언트 상호간에 송수신이 가능해진다.
즉, 본 발명은 릴레이 서버(100)가 단순히 음성데이터를 릴레이 기능 만을 수행하지 아니하고, 홀 펀칭 프로세스가 이루어지도록 한다. 본 발명은 릴레이 서버(100)를 통한 UDP 홀 펀칭 프로세스에 의해 제1 클라이언트(301)과 제2 클라이언트(302) 사이에 직접적인 UDP 통신이 이루어지도록 한다. 제1 클라이언트(301)과 제2 클라이언트(302) 사이의 제1 홀 펀칭 프로세스는 릴레이 서버(100)가 제1 클라이언트(301)로부터 방 생성과 같은 컨넥션 리퀘스트(connection request) 요청 정보 수신 시에, 제1 클라이언트(301)에게 상기 제2 홀 펀칭 정보를 릴레이하고, 제2 클라이언트(302)에게 상기 제1 홀 펀칭 정보를 릴레이함으로써 이루어진다. 제1 컨넥션 리퀘스트 정보(230)는 제2 클라이언트와의 UDP 통신 세션 설정 요청 정보를 포함한다. 자세하게는 상기 제1 컨넥션 리퀘스트 요청 정보는 음성통화 서비스 구현을 위한 접속 요청 정보일 수 있다.
이를 도 3을 참조하여 자세히 설명하면, 제1 클라이언트(301)는 세션 설정되어 있던 릴레이 서버(100)로 제2 클라이언트(302)와의 UDP 통신 세션 설정 요청 정보를 포함하는 제1 컨넥션 리퀘스트 정보(230)를 메인 서버(200)를 거쳐 릴레이 서버(100)로 전송한다. 제1 컨넥션 리퀘스트 정보(230)을 수신한 릴레이 서버(100)는 제1 클라이언트(301)로부터 제1 홀 펀칭 정보(250)를 수신하고, 이를 제2 클라이언트(302)로 릴레이하고, 동시에 제2 클라이언트(302)로부터 수신한 제2 홀 펀칭 정보(240)를 제1 클라이언트(301)에게 릴레이한다. 제1 홀 펀칭 정보(250)는 제1 클라이언트의 고정 어드레스 및 프라이빗 어드레스(private address) 정보를 포함하고, 상기 제2 홀 펀칭 정보는 상기 제2 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함한다.
즉, 제2 클라이언트(302)의 고정 어드레스로 제1 클라이언트(301)가 패킷을 보내면 NAT 1 은 제1 클라이언트(301)의 프라이빗 어드레스와 제2 클라이언트(302)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 하고, 이와 동시에 제1 클라이언트(301)의 고정주소로 제2 클라이언트(302)가 전송한 패킷 역시 NAT 2로 하여금 제2 클라이언트(302)의 프라이빗 주소와 제1 클라이언트(301)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 한다. 상술한 것과 같이 새로운 UDP 세션이 각 방향으로 설정되면 제1 클라이언트(301)와 제2 클라이언트(302)는 더 이상 메인 서버(200)에 부하를 주지 아니하고 직접 통신 할 수 있게 된다.
상술한 제1 홀 펀칭 프로세스 수행이 성공한 경우, 제1 클라이언트(301)는 릴레이 서버(100)와 통신 세션을 단절하고, 제2 클라이언트(302)와 UDP 통신을 수행하게 된다. 즉 제1 클라이언트(301)와 제2 클라이언트(302)는 직접적으로 음성통화를 할 수 있다.
그러나, 상기 제1 홀 펀칭 프로세스 수행이 실패하더라도 릴레이 서버(100)는 제1 클라이언트(301)와 제2 클라이언트(302)의 음성통신을 릴레이하여 제1 클라이언트(301)와 제2 클라이언트(302) 간 음성통신이 이루어지게 한다.
도 4는 도 3의 릴레이 서버를 통한 제1 홀 펀칭 프로세스를 통하여 제1 클 라이언트와 제2 클라이언트 사이에 생성된 UDP 통신 채널을 도시한 것이다.
도 4를 참조하면, 도 3에서 상술한 릴레이 서버를 통한 UDP 홀 펀칭 프로세스 수행 전에 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이 설정되어 있었고, 제2 클라이언트(302)는 메인 서버(200)와 session MS-C2(122), 제3 클라이언트(303)도 메인 서버(200)와 session MS-C3(123)이 설정되어 있었다. 또한, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 제1 클라이언트(301) 및 제2 클라이언트(302)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정되어 있었다.
도 3에서 상술한 제1 홀 펀칭 프로세스 수행을 통하여, 제2 클라이언트(302)의 고정 어드레스로 제1 클라이언트(301)가 패킷을 보내면 NAT 1 은 제1 클라이언트(301)의 프라이빗 어드레스와 제2 클라이언트(302)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 하고, 이와 동시에 제1 클라이언트(301)의 고정주소로 제2 클라이언트(302)가 전송한 패킷 역시 NAT 2로 하여금 제2 클라이언트(302)의 프라이빗 주소와 제1 클라이언트(301)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 하여 제1 클라이언트(301)와 제2 클라이언트(302) 사이에 새로운 UDP 세션이 각 방향으로 설정된다. 즉, session C1-C2(124)가 설정된다.
즉, 제1 홀 펀칭 프로세스 수행이 성공한 경우, 제1 클라이언트(301)는 릴레이 서버(100)와 통신 세션을 단절하고, 제2 클라이언트(302)와 UDP 통신을 수행하게 된다. 즉 제1 클라이언트(301)와 제2 클라이언트(302)는 직접적으로 음성통화 를 할 수 있다.
그러나, 상기 제1 홀 펀칭 프로세스 수행이 실패하더라도 릴레이 서버(100)는 제1 클라이언트(301)와 제2 클라이언트(302)의 음성통신을 릴레이하여 제1 클라이언트(301)와 제2 클라이언트(302) 간 음성통신이 이루어지게 한다.
상술한 본 발명의 릴레이 서버(100)를 포함하는 NAT 제어 시스템에 의하면 제1 클라이언트(301) 및 제2 클라이언트(302) 사이에 P2P UDP 통신 채널이 구축되고, 그 채널의 연결 상에 있는 다른 클라이언트(peer)도 "안내자"의 역할이 가능하여 다른 클라이언트들의 P2P UDP 통신 연결에 기여할 수 있다. 이를 통하여 메인 서버(200)의 부하(load)를 최소화할 수 있다.
또한, 도 4에서는 한 단계의 NAT에 걸쳐있는 클라이언트 사이를 한정하여 설명하였지만, 본 발명의 NAT 제어 시스템은 이에 한정되지 아니하고, 다중 NAT의 경우에도 적용 가능하다.
도 5는 본 발명의 일실시예에 따른 도 4의 UDP 세션 설정된 제1 클라이언트와 제2 클라이언트의 통신 채널에 제3 클라이언트가 추가로 UDP 세션 설정되는 과정을 나타낸 NAT 제어 시스템을 도시한 것이다.
도 4에서 상술한 과정을 통하여, 제1 클라이언트(301)과 제2 클라이언트(302) 사이의 릴레이 서버를 통한 제1 홀 펀칭 프로세스 수행 후에 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이, 제2 클라이언트(302)는 메인 서버(200)와 session MS-C2(122)이, 제3 클라이언트(303)는 메인 서버(200)와 session MS-C3(123)이 설정되어 있었으며, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 다수의 클라이언트(301, 302, 303)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정되어 있었다. 또한, 제1 클라이언트(301)와 제2 클라이언트(302)는 session C1-C2(124)가 설정되어 있었다.
본 발명은 릴레이 서버(100)를 통한 UDP 홀 펀칭 프로세스에 의해 제1 클라이언트(301) 및 제2 클라이언트(302)와 제3 클라이언트(303) 사이에 직접적인 UDP 통신이 이루어지도록 한다. 제1 클라이언트(301)및 제2 클라이언트(302)와 제3 클라이언트(303) 사이의 상기 릴레이 서버(303)를 통한 제2 홀 펀칭 프로세스는 릴레이 서버(100)가 제3 클라이언트(301)로부터 제2 컨넥션 리퀘스트 정보(310) 수신 시에, 제1 클라이언트(301) 및 제2 클라이언트(302)에게 상기 제3 홀 펀칭 정보를 릴레이하고, 제3 클라이언트(302)에게 상기 제1 홀 펀칭 정보 및 상기 제2 홀 펀칭 정보를 릴레이함으로써 이루어진다. 제2 컨넥션 리퀘스트 정보(230)는 제1 클라이언트(301) 및 제2 클라이언트(302)와의 UDP 통신 세션 설정 요청 정보를 포함한다. 상세하게는 상기 제2 컨넥션 리퀘스트 요청 정보는 음성통화 서비스 구현을 위한 접속 요청 정보일 수 있다.
이를 도 5을 참조하여 자세히 설명하면, 제3 클라이언트(303)는 세션 설정되어 있던 릴레이 서버(100)로 제1 클라이언트(301) 및 제2 클라이언트(302)와의 UDP 통신 세션 설정 요청 정보를 포함하는 제2 컨넥션 리퀘스트 정보(310)를 메인 서버(200)를 거쳐 릴레이 서버(100)로 전송한다. 제2 컨넥션 리퀘스트 정보(310)을 수신한 릴레이 서버(100)는 제3 클라이언트(303)로부터 제3 홀 펀칭 정보(330, 331)를 수신하고, 이를 제1 클라이언트(301) 및 제2 클라이언트(302)로 전송하고, 동시에 제1 클라이언트(301) 및 제2 클라이언트(302)로부터 수신한 제1 홀 펀칭 정보 및 제2 홀 펀칭 정보(320)를 제3 클라이언트(303)에게 전송한다. 상기 제1 홀 펀칭 정보는 제1 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하고, 상기 제2 홀 펀칭 정보는 상기 제2 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하며, 상기 제3 홀 펀칭 정보는 상기 제3 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함한다.
제1 클라이언트(301)의 고정 어드레스로 제3 클라이언트(303)가 패킷을 보내면 NAT 3 은 제3 클라이언트(303)의 프라이빗 어드레스와 제1 클라이언트(301)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 하고, 이와 동시에 제3 클라이언트(303)의 고정주소로 제1 클라이언트(301)가 전송한 패킷 역시 NAT 1로 하여금 제1 클라이언트(301)의 프라이빗 주소와 제3 클라이언트(303)의 고정 어드레스 사이의 새로운 UDP 통신 채널을 생성하도록 한다. 상술한 것과 같이 릴레이 서버(100)를 통하여 새로운 UDP 세션이 각 방향으로 설정되면 제1 클라이언트(301)와 제3 클라이언트(303)는 더 이상 메인 서버(200)에 부하를 주지 아니하고 직접 통신 할 수 있게 된다.
제2 클라이언트(302)와 제3 클라이언트(303) 사이에서도 동일한 과정이 적용될 수 있다.
도 6은 도 5의 릴레이 서버를 통한 제2 홀 펀칭 프로세스를 통하여 제1 클라이언트, 제2 클라이언트 및 제3 클라이언트 사이에 생성된 UDP 통신 채널을 도시한 것이다.
도 6을 참조하면, 도 5의 릴레이 서버를 포함하는 NAT 제어 시스템의 제1 클라이언트(301)및 제2 클라이언트(302)와 제3 클라이언트(303)사이에는 릴레이 서버를 통한 제2 홀 펀칭 프로세스 수행 전에는, 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이, 제2 클라이언트(302)는 메인 서버(200)와 session MS-C2(122)이, 제3 클라이언트(303)는 메인 서버(200)와 session MS-C3(123)이 설정되어 있었으며, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 다수의 클라이언트(301, 302, 303)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정되어 있었다. 제1 클라이언트(301)와 제2 클라이언트(302)는 session C1-C2(124)가 설정되어 있었다.
도 5의 릴레이 서버를 포함하는 NAT 제어 시스템의 제1 클라이언트(301)및 제2 클라이언트(302)와 제3 클라이언트(303)사이에는 릴레이 서버를 통한 제2 홀 펀칭 프로세스 수행 후에는 추가로 제1 클라이언트(301) 및 제2 클라이언트(302)와 제3 클라이언트(303)사이에는 session C2-C3(125) 및 session C1-C3(126)이 설정된다. 이를 통하여 제1 내지 제3 클라이언트들은 메인 서버(200)의 부하없이 직접적인 UDP 통신이 가능해진다.
상기 제2 홀 펀칭 프로세스 수행이 성공한 경우, 제3 클라이언트(303)는 릴레이 서버(100)와 통신 세션을 단절하고, 제1 클라이언트(301) 및 상기 제2 클라이언트(302)와 UDP 통신을 수행하고, 상기 제2 홀 펀칭 프로세스 수행이 실패한 경우에는 릴레이 서버(100)는 제1 클라이언트(301) 및 제2 클라이언트(302)와 제3 클라이언트(303) 간 통신 세션을 릴레이한다.
도 7은 본 발명의 일실시예에 따른 다자간 음성통화 서비스를 위한 NAT 제어 방법을 도시한 흐름도이다.
도 7을 참조하면, 우선 릴레이 서버(100)는 제1 클라이언트(301)로부터 제1 세션 설정 요청 정보를 수신하고, 제2 클라이언트(302)로부터는 제2 세션 설정 요청 정보를 수신하여 제1 클라이언트(301) 및 상기 제2 클라이언트(302)와 통신 세션을 설정하여 유지한다(단계(601)). 즉, 제1 클라이언트(301)는 NAT 1을 거쳐 메인 서버(200)와 session MS-C1(121)이 설정되고, 제2 클라이언트(302)는 메인 서버(200)와 session MS-C2(122)을 설정 및 유지하고 추가적으로 동일한 방법으로 제3 클라이언트(303)도 메인 서버(200)와 session MS-C3(123)을 설정 유지할 수 있다. 또한, 릴레이 서버(100)는 메인 서버(200)와 session MS-RS(110)가 설정되어 다수의 클라이언트(301, 302, 303)는 메인 서버(200)를 통하여 릴레이 서버(100)와 세션 설정 유지 된다.
다음으로, 메인 서버(200)는 제1 클라이언트(301)로부터 제1 컨넥션 리퀘스트 정보 또는 제1 홀 펀칭 정보를 수신하여 릴레이 서버(100)로 전송하고, 제2 클라이언트(302)로부터 제2 홀 펀칭 정보를 수신하여 릴레이 서버(100)로 전송한다(단계(602). 상기 제1 컨넥션 리퀘스트 정보는 제2 클라이언트(302)와의 UDP 통신 세션 설정 요청 정보를 포함한다. 이후, 제1 클라이언트(301)로부터 제1 홀 펀칭 정보를 수신하여 제2 클라이언트(302)로 릴레이하고, 동시에 제2 클라이언트(302)로부터 제2 홀 펀칭 정보를 수신하여 제1 클라이언트(301)로 릴레이하는 제1 홀 펀칭 프로세스를 수행하여, 제1 클라이언트와 제2 클라이언트 사이에 직접 제1 홀 펀 칭 프로세스가 수행된다(단계(603)). 상기 제1 홀 펀칭 정보는 상기 제1 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하고, 상기 제2 홀 펀칭 정보는 상기 제2 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함한다.
상기 제1 홀 펀칭 프로세스 수행이 성공하였는 지를 판단하여(단계(604)), 제1 홀 펀칭 프로세스 수행이 실패한 경우에는 릴레이 서버(100)는 제1 클라이언트(301)와 제2 클라이언트(302) 간 통신 세션을 릴레이하고(단계(605)), 상기 제1 홀 펀칭 프로세스 수행이 성공한 경우에는 제1 클라이언트(301)는 릴레이 서버(100)와 통신 세션을 단절하고 제2 클라이언트(302)와 직접적으로 UDP 통신 즉, 음성통화를 수행하게 된다(단계(606)).
이후, 릴레이 서버(100)는 제3 클라이언트(303)로부터 제2 컨넥션 리퀘스트 정보를 수신한다(단계(607)). 상기 제2 컨넥션 리퀘스트 요청 정보는 제1 클라이언트(301) 및 제2 클라이언트(302)와의 UDP 통신 세션 설정 요청 정보를 포함한다. 다음으로, 제3 클라이언트(303)로부터 제3 홀 펀칭 정보를 수신하여, 제1 클라이언트(301) 및 제2 클라이언트(302)에게 릴레이하고, 상기 제1 홀 펀칭 정보 및 상기 제2 홀 펀칭 정보를 제3 클라이언트(303)에게 릴레이하는 제1 클라이언트 및 제2 클라이언트와 제3 클라이언트 간 직접 제2 홀 펀칭 프로세스를 수행한다(단계(608)). 상기 제3 홀 펀칭 정보는 상기 제3 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함한다.
이후, 제2 홀 펀칭 프로세스 수행이 성공하였는 지를 판단하여(단계(609)), 상기 제2 홀 펀칭 프로세스 수행이 실패한 경우, 릴레이 서버(100)는 제1 클라이언트(301) 및 제2 클라이언트(302)와 제3 클라이언트(303) 간 통신 세션을 릴레이한다(단계(610)). 그러나, 상기 제2 홀 펀칭 프로세스 수행이 성공한 경우에는 제3 클라이언트(303)는 릴레이 서버(100)와 통신 세션을 단절하고 제1 클라이언트(301) 및 제2 클라이언트(302)와 직접적으로 UDP 통신(음성통화)를 수행한다(단계(611)).
상술한 본 발명의 NAT 제어 방법을 통하여 제1 내지 제3 클라이언트들은 메인 서버(200)의 부하 없는 직접적인 UDP 통신이 가능해진다.
본 발명에 따른 다자간 음성통화 서비스를 위한 NAT 제어 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD 와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 계층으로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 8은 본 발명의 일실시예에 따라 적용 가능한 다자간 음성통화 서비스를 제공하는 NAT 제어 시스템상에서 구현되는 방 입장 및 방 생성 과정을 나타낸 흐름도이다.
도 8을 참조하면, 각 클라이언트들은 클라이언트 대기실(client room)(850)에서 대기한다. 팀플레이의 게임이나 경매 시스템, 학술연구를 목적으로 하는 모임의 컨퍼런스(conference) 등에 참가하는 다수의 참가자 사이의 음성통화 서비스에 접속하고자 하는 제1 클라이언트(840)는 로그인 서버(810)에 접속하고자 접속 요청 메시지를 전송하고(단계(703)), 로그인 서버(810)는 상기 접속 요청 정보를 수신하여 서버 리스트 정보를 포함하는 메시지를 상기 제1 클라이언트로 전송한다(단계(705)). 접속이 완료되면, 제1 클라이언트(840)는 서비스를 제공하는 메인 서버(820)에 접속하고자 하면(단계(706)), 메인 서버(820)는 제1 클라이언트(840)에게 접속 가능한 통신 채널 리스트 메시지를 전송한다(단계(707)). 이후, 제1 클라이언트(840)는 상기 접속 가능한 통신 채널 리스트 중 원하는 채널을 선택하고 입장 요청 메시지(708)를 메인 서버(820)로 전송하면(단계(708)), 메인 서버(820)는 상기 선택된 채널 정보를 포함하는 메시지, 입장 가능한 방(room)의 리스트를 포함하는 메시지, 및 상기 방의 사용자 리스트 정보를 포함하는 메시지를 각각 제1 클라이언트(840)에게 전송한다(단계(709) 내지 단계(711)).
제1 클라이언트(840)의 사용자가 방장일 경우에는 방을 만들 수 있는 권한을 가지며 메인 서버(820)상에 새로운 방의 생성이 가능하다. 방장 권한의 제1 클라이언트는 메인 서버(820)로 방 생성 메시지를 전송하고(단계(712)), 메인 서버(820)는 릴레이 서버(830)로 방 생성 메시지를 포함하는 리퀘시트 정보를 전송하고(단계(713), 릴레이 서버(830)는 메인 서버(820)는 상기 리퀘스트 정보에 대한 응답 메시지를 수신하여 원하는 방의 생성이 가능하다(단계(714)). 이를 통해 제1 클라이언트(840)는 메인 서버(820) 및 릴레이 서버(830)와의 통신 세션 설정이 된다.
도 9는 본 발명의 일실시예에 따른 제1 클라이언트와 제2 클라이언트 사이에 릴레이 서버를 의한 UDP 홀 펀칭을 통하여 UDP 통신 세션 설정되는 다자간 음성통화 서비스가 구현되는 NAT 제어 방법의 과정을 나타낸 흐름도이다.
도 9를 참조하면, 도 8의 과정을 통하여 방장 권한을 가지는 제1 클라이언트는 메인 서버(820) 상에서 원하는 방을 생성하고 메인 서버(820) 및 릴레이 서버(830)와 통신 세션을 설정 및 유지한다. 상기 설정된 통신 세션에 가입하고자 하는 클라이언트 대기실(850)의 제2 클라이언트(860)는 입장 요청 정보를 포함하는 메시지를 메인 서버(820)로 전송한다(단계(715)). 메인 서버(820)는 릴레이 서버(830)로 상기 입장 요청 정보를 전송하고(단계(716)), 제2 클라이언트(860)로 방 정보를 포함하는 메시지(단계(717)), 및 상기 방에 입장한 사용자 리스트 정보를 포함하는 메시지를 전송한다(단계(718)). 제2 클라이언트(860)은 상기 방 정보 메시지와 사용자 리스트 정보를 포함하는 메시지를 확인한 후, 입장 요청 승인 정보를 전송한다(단계(719)). 상기 입장 요청 승인 정보는 도 2 내지 도 7에서 상술한 컨넥션 리퀘스트 정보일 수 있다. 즉, 제1 클라이언트와의 접속 요청 정보를 포함하는 메시지일 수 있다. 이후, 도 3에서 상술했던, 릴레이 서버(830)를 통한 UDP 홀 펀칭 프로세스 과정을 통하여 제2 클라이언트는 제1 클라이언트와 직접적인 UDP 통신 세션을 설정하게 된다(단계(720) 내지 단계(722)). 즉, 제1 홀 펀칭 정보 및 제2 홀 펀칭 정보의 릴레이를 통한 교환에 의해서 UDP 통신 세션이 설정된다. 이를 통하여 제1 클라이언트와 제2 클라이언트는 원활한 음성통화 서비스의 구현이 가능하다.
상기 방의 제2 클라이언트(860)가 방 퇴장을 하고자 하는 경우에는 제2 클라이언트(860)는 퇴장 요청 정보를 포함하는 메시지를 메인 서버(820)로 전송하고(단계(723)), 상기 릴레이 서버(830)는 퇴장 요청 정보를 릴레이하여(단계(724)), 클라이언트의 접속은 해제된다(단계(725)).
상술한 NAT 제어 방법에 의하여 메인 서버(820)는 부하없이 원활한 음성통화 서비스를 제공할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명에 의하면 UDP 홀 펀칭(hole punching)기술과 릴레이 서버(relay server)를 이용한 다자간에 UDP 통신 세션을 설정하여 음성통화 서비스가 이루어지는 NAT 제어 시스템 및 그 방법이 제공된다.
또한 본 발명에 의하면 다자간에 실시간으로 양방향 통신이 이루어질 수 있는 NAT 제어 시스템 및 그 방법이 제공된다.
또한 본 발명에 의하면 서비스 운영자 및 개발자에게 다자간 양방향 음성통화 서비스를 위한 NAT 제어 시스템 및 그 방법을 제공하여 원활한 서비스 개발이 이루어질 수 있다
또한 본 발명에 의하면 다자간에 실시간으로 양방향 통신이 이루어지는 NAT 제어 시스템 및 그 방법을 통하여 메인 서버가 부하없이 원활한 음성통화 서비스가 제공된다.

Claims (20)

  1. 다자간 음성통화 서비스를 위한 NAT(Network Address Translation) 제어 시스템에 있어서,
    제1 클라이언트로부터 제1 컨넥션 리퀘스트(connection request) 요청 정보 또는 제1 홀 펀칭 정보를 수신하여 릴레이 서버로 전송하고, 제2 클라이언트로부터 제2 홀 펀칭 정보를 수신하여 상기 릴레이 서버로 전송하는 메인 서버(main server); 및
    상기 제1 컨녁센 리퀘스트 요청 정보 수신 시에 상기 제1 클라이언트에게 상기 제2 홀 펀칭 정보를 릴레이하고, 동시에 상기 제2 클라이언트에게 상기 제1 홀 펀칭 정보를 릴레이하여 상기 제1 클라이언트와 상기 제2 클라이언트 사이에 직접 UDP 통신 세션을 설정토록 하는 제1 홀 펀칭 프로세스 수행을 지원하는 릴레이 서버를 포함하고,
    상기 릴레이 서버는 상기 제1 클라이언트로가 전송한 제1 세션 설정 정보를 상기 메인 서버로부터 수신하고, 상기 제2 클라이언트가 전송한 제2 세션 설정 정보를 수신하여 상기 제1 클라이언트 및 상기 제2 클라이언트와 각각 통신 세션을 유지하고, 상기 제1 홀 펀칭 프로세스 수행이 실패하는 경우 상기 제1 클라이언트와 상기 제2 클라이언트 간 통신 세션을 릴레이하는 것을 특징으로 하는 NAT 제어 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 홀 펀칭 프로세스 수행이 성공하는 경우,
    상기 제1 클라이언트는 상기 릴레이 서버와 통신 세션을 단절하고, 상기 제2 클라이언트와 UDP 통신을 수행하는 것을 특징으로 하는 NAT 제어 시스템.
  4. 제1항에 있어서,
    상기 제1 컨넥션 리퀘스트 설정 요청 정보는 제2 클라이언트와의 UDP 통신 세션 설정 정보를 포함하는 것을 특징으로 하는 NAT 제어 시스템.
  5. 제1항에 있어서,
    상기 제1 홀 펀칭 정보는
    상기 제1 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스(private address) 정보를 포함하고,
    상기 제2 홀 펀칭 정보는
    상기 제2 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하는 것을 특징으로 하는 NAT 제어 시스템.
  6. 제1항에 있어서,
    상기 메인 서버는
    제3 클라이언트로부터 제2 컨넥션 리퀘스트 요청 정보 또는 제3 홀 펀칭 정보를 수신하여 상기 릴레이 서버로 전송하고,
    상기 릴레이 서버는
    상기 제2 컨넥션 리퀘스트 요청 정보를 수신하여 상기 제3 클라이언트와 통신 세션을 유지하고,
    상기 제3 홀 펀칭 정보를 수신하여, 상기 제1 클라이언트 및 상기 제2 클라이언트에게 릴레이하고, 상기 제1 홀 펀칭 정보 및 상기 제2 홀 펀칭 정보를 상기 제3 클라이언트에게 릴레이하는 제2 홀 펀칭 프로세스를 수행하여 UDP 통신 세션을 설정하는 것을 특징으로 하는 NAT 제어 시스템.
  7. 제6항에 있어서,
    상기 제2 홀 펀칭 프로세스 수행이 성공하는 경우,
    상기 제3 클라이언트는 상기 릴레이 서버와 통신 세션을 단절하고, 상기 제1 클라이언트 및 상기 제2 클라이언트와 UDP 통신을 수행하는 것을 특징으로 하는 NAT 제어 시스템.
  8. 제6항에 있어서,
    상기 제2 홀 펀칭 프로세스 수행이 실패하는 경우,
    상기 릴레이 서버는 상기 제1 클라이언트 및 상기 제2 클라이언트와 상기 제3 클라이언트 간 통신 세션을 릴레이하는 것을 특징으로 하는 NAT 제어 시스템.
  9. 제6항에 있어서,
    상기 제3 홀 펀칭 정보는
    상기 제3 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하는 것을 특징으로 하는 NAT 제어 시스템.
  10. 다자간 음성통화 서비스를 위한 NAT(Network Address Translation) 제어 방법에 있어서,
    릴레이 서버가 제1 클라이언트로부터 제1 세션 설정 요청 정보를 수신하고, 제2 클라이언트로부터 제2 세션 설정 요청 정보를 수신하여 상기 제1 클라이언트 및 상기 제2 클라이언트와 통신 세션을 유지하는 단계;
    메인 서버가 상기 제1 클라이언트로부터 제1 컨넥션 리퀘스트 정보 또는 제1 홀 펀칭 정보를 수신하여 상기 릴레이 서버로 전송하고, 상기 제2 클라이언트로부터 제2 홀 펀칭 정보를 수신하여 상기 릴레이 서버로 전송하는 단계; 및
    상기 릴레이 서버가 상기 제1 컨넥션 리퀘스트 정보 수신 시에 상기 제1 클라이언트로부터 제1 홀 펀칭 정보를 수신하여 상기 제2 클라이언트로 릴레이하고, 동시에 상기 제2 클라이언트로부터 제2 홀 펀칭 정보를 수신하여 상기 제1 클라이언트로 릴레이하는 제1 홀 펀칭 프로세스를 수행하는 단계
    를 포함하고,
    상기 제1 홀 펀칭 프로세스 수행이 실패하는 경우, 상기 릴레이 서버는 상기 제1 클라이언트와 상기 제2 클라이언트 간 통신 세션을 릴레이하는 것을 특징으로 하는 NAT 제어 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 제1 홀 펀칭 프로세스 수행이 성공하는 경우,
    상기 제1 클라이언트는 상기 릴레이 서버와 통신 세션을 단절하고, 상기 제2 클라이언트와 UDP 통신을 수행하는 것을 특징으로 하는 NAT 제어 방법.
  13. 제10항에 있어서,
    상기 제1 컨넥션 리퀘스트 요청 정보는 제2 클라이언트와의 UDP 통신 세션 설정 요청 정보를 포함하는 것을 특징으로 하는 NAT 제어 방법.
  14. 제10항에 있어서,
    상기 제1 홀 펀칭 정보는
    상기 제1 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포 함하고,
    상기 제2 홀 펀칭 정보는
    상기 제2 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하는 것을 특징으로 하는 NAT 제어 방법.
  15. 제10항에 있어서,
    상기 메인 서버가 제3 클라이언트로부터 제2 컨넥션 리퀘스트 요청 정보를 수신하는 단계; 및
    상기 릴레이 서버가 상기 제3 클라이언트로부터 제3 홀 펀칭 정보를 수신하여, 상기 제1 클라이언트 및 상기 제2 클라이언트에게 릴레이하고, 상기 제1 홀 펀칭 정보 및 상기 제2 홀 펀칭 정보를 상기 제3 클라이언트에게 릴레이하는 제2 홀 펀칭 프로세스를 수행하는 단계
    를 더 포함하는 것을 특징으로 하는 NAT 제어 방법.
  16. 제15항에 있어서,
    상기 제2 홀 펀칭 프로세스 수행이 성공하는 경우,
    상기 제3 클라이언트는 상기 릴레이 서버와 통신 세션을 단절하고, 상기 제1 클라이언트 및 상기 제2 클라이언트와 UDP 통신을 수행하는 것을 특징으로 하는 NAT 제어 방법.
  17. 제15항에 있어서,
    상기 제2 홀 펀칭 프로세스 수행이 실패하는 경우,
    상기 릴레이 서버는 상기 제1 클라이언트 및 상기 제2 클라이언트와 상기 제3 클라이언트 간 통신 세션을 릴레이하는 단계
    를 더 포함하는 것을 특징으로 하는 NAT 제어 방법.
  18. 제15항에 있어서,
    상기 제3 세션 설정 요청 정보는
    상기 제1 클라이언트 및 상기 제2 클라이언트와의 UDP 통신 세션 설정 요청 정보를 포함하는 것을 특징으로 하는 NAT 제어방법.
  19. 제15항에 있어서,
    상기 제3 홀 펀칭 정보는
    상기 제3 클라이언트의 고정 어드레스 정보 및 프라이빗 어드레스 정보를 포함하는 것을 특징으로 하는 NAT 제어 방법.
  20. 제10항, 및 제12항 내지 제19항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020060104344A 2006-10-26 2006-10-26 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법 KR100703065B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060104344A KR100703065B1 (ko) 2006-10-26 2006-10-26 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법
PCT/KR2007/005275 WO2008051028A1 (en) 2006-10-26 2007-10-25 Network address translation control system and method for providing multilateral-bidirectional audio communication service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060104344A KR100703065B1 (ko) 2006-10-26 2006-10-26 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법

Publications (1)

Publication Number Publication Date
KR100703065B1 true KR100703065B1 (ko) 2007-04-09

Family

ID=38160747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060104344A KR100703065B1 (ko) 2006-10-26 2006-10-26 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법

Country Status (2)

Country Link
KR (1) KR100703065B1 (ko)
WO (1) WO2008051028A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101082851B1 (ko) 2010-11-10 2011-11-11 삼성에스디에스 주식회사 Udp기반의 p2p 접속 시스템 및 방법
KR101393017B1 (ko) 2013-07-01 2014-05-09 주식회사 엘지유플러스 Nat 환경의 대량 단말 제어를 위한 홀 펀칭 분산 처리 시스템 및 그 시스템의 제어 방법
KR20190009068A (ko) * 2017-07-18 2019-01-28 주식회사 에스원 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109714410B (zh) * 2018-12-24 2021-09-10 上海曼恒数字技术股份有限公司 一种数据传输方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040054817A (ko) * 2002-05-13 2004-06-25 소니 컴퓨터 엔터테인먼트 아메리카 인코포레이티드 네트워크 주소가 변환되는 피어 투 피어 네트워크 통신

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001271263A1 (en) * 2000-06-30 2002-01-14 Net2Phone System, method, and computer program product for resolving addressing in a network including a network address translator
KR100744667B1 (ko) * 2003-12-01 2007-08-02 (주)휴리브 다자간 음성통화 시스템 및 그 제어방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040054817A (ko) * 2002-05-13 2004-06-25 소니 컴퓨터 엔터테인먼트 아메리카 인코포레이티드 네트워크 주소가 변환되는 피어 투 피어 네트워크 통신

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101082851B1 (ko) 2010-11-10 2011-11-11 삼성에스디에스 주식회사 Udp기반의 p2p 접속 시스템 및 방법
KR101393017B1 (ko) 2013-07-01 2014-05-09 주식회사 엘지유플러스 Nat 환경의 대량 단말 제어를 위한 홀 펀칭 분산 처리 시스템 및 그 시스템의 제어 방법
KR20190009068A (ko) * 2017-07-18 2019-01-28 주식회사 에스원 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법
KR101962022B1 (ko) * 2017-07-18 2019-03-25 주식회사 에스원 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법

Also Published As

Publication number Publication date
WO2008051028A1 (en) 2008-05-02

Similar Documents

Publication Publication Date Title
US10506036B2 (en) System and method for shared session appearance in a hybrid peer-to-peer environment
CN110301126B (zh) 会议服务器
US10033806B2 (en) System and method for session sweeping between devices
US10050872B2 (en) System and method for strategic routing in a peer-to-peer environment
US8468010B2 (en) System and method for language translation in a hybrid peer-to-peer environment
US8224985B2 (en) Peer-to-peer communication traversing symmetric network address translators
JP5735016B2 (ja) ピアツーピアハイブリッド通信のためのシステムおよび方法
US7623476B2 (en) System and method for conferencing in a peer-to-peer hybrid communications network
US10027745B2 (en) System and method for signaling and data tunneling in a peer-to-peer environment
US9781258B2 (en) System and method for peer-to-peer media routing using a third party instant messaging system for signaling
CN110933197A (zh) 一种分布式代理网络
KR100703065B1 (ko) 다자간 양방향 음성통화 서비스를 위한 nat 제어 시스템및 그 방법
KR100764063B1 (ko) 멀티캐스트 기반 다자간 협업 환경에서의 유디피멀티캐스트 터널링 방법 및 그 시스템
CN116708381B (zh) 跨网络的数据传输方法、装置和存储介质及电子设备
Camarillo et al. Reducing delays related to nat traversal in p2psip session establishments

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110328

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee