KR100597405B1 - 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법 - Google Patents

소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법 Download PDF

Info

Publication number
KR100597405B1
KR100597405B1 KR1020040038351A KR20040038351A KR100597405B1 KR 100597405 B1 KR100597405 B1 KR 100597405B1 KR 1020040038351 A KR1020040038351 A KR 1020040038351A KR 20040038351 A KR20040038351 A KR 20040038351A KR 100597405 B1 KR100597405 B1 KR 100597405B1
Authority
KR
South Korea
Prior art keywords
client
connection
data
server
information
Prior art date
Application number
KR1020040038351A
Other languages
English (en)
Other versions
KR20050112912A (ko
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 KR1020040038351A priority Critical patent/KR100597405B1/ko
Priority to US11/130,235 priority patent/US20060047821A1/en
Publication of KR20050112912A publication Critical patent/KR20050112912A/ko
Application granted granted Critical
Publication of KR100597405B1 publication Critical patent/KR100597405B1/ko

Links

Images

Classifications

    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

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

Abstract

본 발명은 소켓 어플리케이션 프로그램을 이용한 데이터 중계에 관한 발명으로서, 본 발명의 실시예에 따른 데이터 중계 시스템은 제1 클라이언트와 제2 클라이언트로부터 접속을 요청하는 데이터를 수신하고, 소정의 연결 정보를 이용하여 어플리케이션 계층에서 상기 제1 클라이언트와 상기 제2 클라이언트의 접속을 설정하는 서버 소켓 모듈과, 상기 제1 클라이언트의 연결 정보와 상기 제2 클라이언트의 연결 정보가 매핑된 형태로 저장된 연결 정보 저장 모듈 및 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터를 상기 매핑된 연결 정보를 이용하여 네트워크 계층에서 중계하는 데이터 중계 모듈을 포함한다.
인스턴스 메시지 서비스, 소켓 어플리케이션

Description

소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템 및 데이터 중계 방법{System and method for relaying data by use of socket applicaton program}
도 1은 종래의 인스턴스 메시지 서비스를 제공하기 위한 시스템을 나타내는 예시도이다.
도 2는 도 1에서 도시한 시스템에 있어서 서버와 클라이언트의 네트워크 연결 및 데이터 중계를 나타내는 예시도이다.
도 3은 본 발명의 실시예에 따라 서버와 클라이언트의 네트워크 연결 및 데이터 중계를 나타내는 예시도이다.
도 4는 본 발명의 실시예에 따른 인스턴스 메시지 서비스를 위한 시스템 구성도이다.
도 5는 본 발명의 실시예에 따른 서버 소켓 모듈의 동작을 나타내는 플로우 차트이다.
도 6은 본 발명의 실시예에 따른 데이터 중계 모듈의 동작을 나타내는 플로우 차트이다.
도 7은 본 발명의 실시예에 따른 클라이언트 소켓 어플리케이션 모듈의 동작을 나타내는 플로우 차트이다.
< 도면의 주요 부분에 대한 설명 >
410: 서버
415: 연결 정보 테이블
420: 서버 소켓 모듈
430: 데이터 중계 모듈
460: 제1 클라이언트
470: 제1 클라이언트 소켓 어플리케이션 모듈
480: 제2 클라이언트
490: 제2 클라이언트 소켓 어플리케이션 모듈
본 발명은 데이터 중계에 관한 것으로, 보다 상세하게는 소켓 어플리케이션 프로그램을 이용하여 데이터를 중계하는 경우에 데이터 전송을 위한 연결 및 해제는 어플리케이션 계층(application layer)에서 담당하고 실제로 데이터의 중계는 네트워크 계층(network layer)에서 이루어지게 함으로써 보다 빠르게 데이터를 중계하도록 하는 시스템 및 데이터 중계 방법에 관한 것이다.
네트워크 및 통신 기술의 발달에 따라 소켓을 이용한 다양한 어플리케이션 프로그램(이하, '소켓 어플리케이션'이라 한다)들이 개발되었다. 이 때, 소켓(socket)이란 네트워크 상에서 클라이언트 프로그램과 서버 프로그램 사이의 통신 방법으로서, 일반적으로 소켓 어플리케이션 프로그램 인터페이스(application program interface; API)라고 불리는, 일련의 프로그래밍 요청이나 함수 호출(function call)로 만들어지고 사용된다. 가장 보편적인 소켓 API는 버클리 유닉스 C 언어 인터페이스이다. 또한, 소켓들은 같은 컴퓨터 내에서 프로세스들 간의 통신에도 사용된다.
따라서, 소켓 어플리케이션은 네트워크와 관련된 다양한 기능을 수행할 수 있는데, 그 중의 하나가 서로 다른 네트워크에 속하는 컴퓨터들 사이에 데이터를 중계하는 것으로서 대표적인 예가 인스턴트 메시지(Instant Message) 서비스이다.
도 1은 종래의 인스턴스 메시지 서비스를 제공하기 위한 시스템을 나타내는 예시도이다.
인스턴스 메시지 서비스를 제공하기 위한 시스템(100)은 인스턴스 메시지 서비스를 제공하는 서버(120)와 서버(120)와 연결되어 인스턴스 메시지 서비스를 제공받는 다수의 클라이언트(140, 160)를 포함한다. 여기에서는 설명을 용이하게 하기 위하여 클라이언트가 2개 있는 것으로 가정하고 각각 '클라이언트-A(140)'와 '클라이언트-B(160)'로 칭하기로 한다. 이 때, 클라이언트-A(140)와 클라이언트-B(160)는 각각 서로 다른 네트워크에 속해 있으며, 클라이언트-A(140)가 속한 네트워크를 '제1 네트워크(130)', 클라이언트-B(160)가 속한 네트워크를 '제2 네트워크(150)' 라고 칭하기로 한다. 또한, 서버(120)는 제1 네트워크(130) 및 제2 네트워크(150)와 연결된 인터넷(110)에 존재한다.
제1 네트워크(130) 및 제2 네트워크(150)는 자신의 네트워크를 보호하기 위하여 고유의 정책을 갖는 방화벽을 포함하는 것이 일반적이다. 따라서, 방화벽의 문제를 해결함으로써 인스턴스 메시지 서비스가 제공되기 위해서는 소켓 어플리케이션을 이용할 수 있는데, 소켓 어플리케이션에는 서버(120)에 설치되어 동작하는 '서버 소켓 어플리케이션'과 클라이언트(140, 160)에 설치되어 동작하는 '클라이언트 소켓 어플리케이션'이 있다.
클라이언트-A(140)와 클라이언트-B(160)가 인스턴스 메시지 서비스를 이용하여 텍스트, 이미지, 음성 데이터 등을 교환하는 경우에는 각각의 네트워크에 설치된 방화벽 때문에 직접 데이터를 교환할 수는 없다. 클라이언트-A(140)와 클라이언트-B(160)는 클라이언트 소켓 어플리케이션을 이용하여 인터넷(110) 상에 존재하는 서버(120)에 접속하고, 서버(120)는 서버(120)에 설치된 서버 소켓 어플리케이션을 이용하여 클라이언트-A(140)와 클라이언트-B(160) 사이에 데이터를 중계한다.
도 2는 도 1에서 도시한 시스템에 있어서 서버와 클라이언트의 네트워크 연결 및 데이터 중계를 나타내는 예시도로서, 개방형 시스템간 상호 접속(Open Systems Interconnection;OSI) 7계층 구조를 기반으로 하여 서버(120)와 클라이언트(140, 160) 사이의 네트워크 연결 및 클라이언트(140, 160) 간의 데이터 교환을 나타내고 있다. 이 때, OSI 7계층 구조(200)는 서버(120)에서 서버 소켓 어플리케이션을 이용하여 인스턴스 메시지 서비스를 제공할 때의 프로토콜 스택 구조를 나타내고 있다.
클라이언트-A(140)는 자신의 클라이언트 소켓 어플리케이션을 이용하여 서버(120)의 서버 소켓 어플리케이션으로 접속한다(210). 또한, 클라이언트-B(160)도 자신의 클라이언트 소켓 어플리케이션을 이용하여 서버(120)의 서버 소켓 어플 리케이션으로 접속한다(220). 그리고 나서, 서버 소켓 어플리케이션은 어플리케이션 계층에서 클라이언트-A(140)와 클라이언트-B(160)의 데이터를 중계하게 된다(230).
이러한 방법에 의하여 인스턴스 메시지 서비스를 제공하는 경우에는 각각의 네트워크마다 서로 다른 정책을 갖는 방화벽에 대한 문제를 해결할 수 있다. 즉, 방화벽에 등록되어 있는 서비스 포트(service port)를 통하여 접속 요청을 하는 클라이언트 소켓 어플리케이션이 전송하고자 하는 데이터를 방화벽의 외부로 전달할 때, 클라이언트 소켓 어플리케이션의 소스 포트(source port)를 함께 기록하여 전달하고, 상기 소스 포트(source port)가 방화벽에 등록되어 일정한 시간 동안 자유롭게 데이터를 교환할 수 있는 것이다.
그러나, 이러한 방법을 사용하는 경우에는 서버(120)에서의 데이터 중계가 어플리케이션 계층에서 이루어지기 때문에 데이터를 중계하여 전달하는 속도가 저하됨으로써 인스턴스 메시지 서비스의 품질이 저하되는 문제점이 있다.
즉, 전송 계층 아래에서 발생하는 각 계층간의 지연, 전송 계층과 어플리케이션 계층 사이에서 발생하는 프래그멘테이션(fragmentation)과 디프래그멘테이션(defragmentation)으로 인한 버퍼링 지연, 전송 계층의 혼잡 제어(congestion control)에 의해 발생하는 버퍼링 지연, 및 어플리케이션 계층의 소켓 내부에서 발생하는 버퍼링 지연 등이 발생하므로 데이터 중계 속도가 감소하게 되는 것이다. 따라서, 소켓 어플리케이션에 의한 서비스를 제공하는 경우 보다 빠르고 안정적인 데이터 중계를 수행하는 메커니즘이 필요하게 되었다.
본 발명은 상기한 문제점을 개선하기 위해 안출된 것으로, 본 발명은 데이터의 중계를 어플리케이션 계층에서 수행하는 것이 아니라 네트워크 계층에서 수행함으로써 데이터의 중계를 담당하는 서버에서의 데이터 중계 속도를 높여 주고, 서버의 부하를 줄임으로써 사용자에게 안정된 서비스를 제공하는데 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템은 제1 클라이언트와 제2 클라이언트로부터 접속을 요청하는 데이터를 수신하고, 소정의 연결 정보를 이용하여 어플리케이션 계층에서 상기 제1 클라이언트와 상기 제2 클라이언트의 접속을 설정하는 서버 소켓 모듈과, 상기 제1 클라이언트의 연결 정보와 상기 제2 클라이언트의 연결 정보가 매핑된 형태로 저장된 연결 정보 저장 모듈 및 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터를 상기 매핑된 연결 정보를 이용하여 네트워크 계층에서 중계하는 데이터 중계 모듈을 포함한다.
상기 목적을 달성하기 위하여, 소켓 어플리케이션 프로그램을 이용한 데이터 중계 방법은 제1 클라이언트와 제2 클라이언트가 서버의 어플리케이션 계층으로 접속을 요청하는 (a) 단계, 상기 서버가 소정의 매핑된 연결 정보를 이용하여 상기 어플리케이션 계층에서 상기 제1 클라이언트와 상기 제2 클라이언트의 접속을 설정하는 (b) 단계, 상기 서버가 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터를 상기 매핑된 연결 정보를 이용하여 네트워크 계층에서 중계하는 (c) 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 데이터 중계 방법을 수행하는 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
한편, 본 발명을 보다 용이하게 이해하기 위하여 소켓 어플리케이션을 이용한 인스턴스 메시지 서비스를 예로 하여 설명하도록 한다.
도 3은 본 발명의 실시예에 따라 서버와 클라이언트의 네트워크 연결 및 데이터 중계를 나타내는 예시도로서, OSI 7계층 구조를 기반으로 하여 서버와 다수의 클라이언트 사이의 네트워크 연결 및 연결된 클라이언트 간의 데이터 교환을 나타내고 있다. 이 때, OSI 7계층 구조(300)는 서버에서 서버 소켓 어플리케이션을 이용하여 인스턴스 메시지 서비스를 제공할 때의 프로토콜 스택 구조를 나타내고 있다. 한편, 이하에서는 본 발명에 대한 설명을 용이하게 하기 위하여 도 1에서 도시한 인스턴스 메시지 서비스를 수행하는 네트워크 시스템에 따라 기술하기로 한다.
클라이언트-A(140)는 자신의 클라이언트 소켓 어플리케이션을 이용하여 서버(120)의 서버 소켓 어플리케이션으로 접속한다(310). 또한, 클라이언트-B(160)도 자신의 클라이언트 소켓 어플리케이션을 이용하여 서버(120)의 서버 소켓 어플리케이션으로 접속한다(320). 그리고 나서, 서버 소켓 어플리케이션은 네트워크 계층에서 클라이언트-A(140)와 클라이언트-B(160)의 데이터를 중계하게 된다(330). 즉, 클라이언트(120, 140)와의 접속은 어플리케이션 계층에서, 클라이언트(120, 140) 간의 데이터 중계는 네트워크 계층에서 이루어지게 되는 것이다.
도 4는 본 발명의 실시예에 따른 인스턴스 메시지 서비스를 위한 시스템 구성도이다.
도 4에서 도시한 시스템 구성은 도 1에서 도시한 시스템 구성과 유사하지만, 서버(410)에는 서버 소켓 모듈(420), 데이터 중계 모듈(430) 그리고 연결 정보 테이블(415)이 탑재되어 서버 소켓 어플리케이션의 기능을 하게 된다.
서버 소켓 모듈(420)은 제1 클라이언트(460)와 제2 클라이언트(480)가 서버 에 접속하도록 하고, 데이터의 중계가 종료하게 되면 접속을 끊어 버리는 역할을 한다.
데이터 중계 모듈(430)은 서버 소켓 모듈(420)에 의해 제1 클라이언트(460)와 제2 클라이언트(480)의 접속이 이루어진 후에, 제1 클라이언트(460)에서 전송된 데이터와 제2 클라이언트(480)에서 전송된 데이터를 네트워크 계층에서 중계하는 역할을 한다.
연결 정보 테이블(415)은 제1 클라이언트(460)와 제2 클라이언트(480)를 연결하기 위한 정보, 예컨대 IP 주소와 포트 정보들을 저장하고 있는 데이터 구조이다.
한편, 상기 '모듈'은 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다.  모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다.  따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.  구성요소들과 모듈들에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요 소들과 모듈들로 더 분리될 수 있다. 
이하, 각각의 모듈들간의 동작을 설명하도록 한다.
제1 클라이언트(460)와 제2 클라이언트(480)가 인스턴스 메시지 서비스를 이용하고자 하면 제1 클라이언트 어플리케이션 모듈(470)과 제2 클라이언트 어플리케이션 모듈(490)이 서버(410)로의 접속을 시도한다. 이 때, 제1 클라이언트 어플리케이션 모듈(470)과 제2 클라이언트 어플리케이션 모듈(490)은 각각 서버의 제1 포트(port)(440)와 제2 포트(port)(450)를 통해 접속할 수 있는데, 상기 포트는 이미 설정되어 있거나 클라이언트로부터 접속 요청이 있는 경우 서버에 탑재된 운영 시스템(Operating System, OS)에 의해 결정될 수 있으며, 물리적 또는 논리적 개념의 포트(port)를 의미한다.
제1 클라이언트(460)와 제2 클라이언트(480)가 서버(410)에 접속을 시도하게 되면, 서버 소켓 모듈(420)은 서버 소켓 어플리케이션이 동작하는 프로토콜 스택 중 어플리케이션 계층에서 제1 클라이언트(460)와 제2 클라이언트(480)의 접속을 설정한다. 이 때, 서버 소켓 모듈(420)은 제1 클라이언트 소켓 어플리케이션 모듈(470)과 제2 클라이언트 소켓 어플리케이션 모듈(490)의 연결 정보를 연결 정보 테이블(415)에 관리한다. 상기 연결 정보는 IP주소에 대한 정보와 포트 정보 등을 포함한다.
서버(410)와 클라이언트들(460, 480)간의 접속이 설정되면 데이터 중계 모듈(430)은 연결 정보 테이블(415)에 포함된 해당 IP주소 정보 및 포트 정보 등을 참조하여 서버 소켓 어플리케이션이 동작하는 프로토콜 스택 중 네트워크 계층에서 제1 클라이언트(460)와 제2 클라이언트(480)에 의해 전송된 데이터를 중계하게 된다.
제1 클라이언트(460)와 제2 클라이언트(480)간의 데이터 중계가 완료되면, 서버 소켓 모듈(420)은 연결 정보 테이블(415)에 포함된 해당 연결 정보를 삭제하고, 서버(410)와 클라이언트들(460, 480)간의 접속은 끊어지게 된다.
도 5는 본 발명의 실시예에 따른 서버 소켓 모듈의 동작을 나타내는 플로우 차트이다.
서버 소켓 모듈(420) 은 서버에서 데몬(daemon)의 형태로 수행될 수 있는데, 서버 소켓 모듈(420) 은 소켓을 생성하고(S505), 클라이언트로부터 접속 요청을 기다리며 대기 상태에 놓이게 된다(S510). 본 발명에 대한 설명을 용이하게 하기 위하여 이하에서는 도 4에서 도시한 제1 클라이언트(460)와 제2 클라이언트(480)가 인스턴스 메시지 서비스를 이용한다고 가정한다. 제1 클라이언트(460)가 서버(410)로 접속을 요청하면, 접속을 요청한 제1 클라이언트(460)의 IP주소 정보(CIP)와 클라이언트의 포트 정보(CPORT), 그리고 접속 요청을 수신한 서버의 소켓 정보(SOCK)를 설정한다(S515). 그리고 나서, 클라이언트의 IP주소 정보(CIP)와 클라이언트의 포트 정보(CPORT)를 파라미터(parameter)로 하여 관계 연산을 수행한 후, 관계 변수에 해당하는 R 값을 얻는다(S520).
서버 소켓 모듈(420) 은 연결 정보 테이블(415)에 상기 R값이 존재하는지 여부를 검사한다.
이 때, 상기 연결 정보 테이블(415)은 클라이언트간에 데이터를 중계하기 위 하여 필요한 주소 매핑 정보를 포함하는데, 구체적으로는 (R, 제1 클라이언트 정보, 제2 클라이언트 정보)를 필드로 갖는 다수의 레코드(record)를 포함할 수 있다. 여기에서 제1 클라이언트와 제2 클라이언트는 서로 데이터를 주고 받고자 하는 클라이언트를 나타내고, 관계 변수 R은 제1 클라이언트와 제2 클라이언트에 대하여 동일한 값을 갖는다. 상기 제1 클라이언트 정보는 SOCK_1, CIP_1, CPORT_1 등을 포함하는데, SOCK_1는 제1 클라이언트가 접속을 요청할 때 서버에서 생성된 수신 소켓을 나타내고, CIP_1는 제1 클라이언트의 IP 주소를 나타내고, CPORT_1는 제1 클라이언트 포트 번호를 나타낸다. 제2 클라이언트 정보는 SOCK_2, CIP_2, CPORT_2 등을 포함하는데, SOCK_2는 제2 클라이언트가 접속을 요청할 때 서버에서 생성된 수신 소켓을 나타내고, CIP_2는 제2 클라이언트의 IP 주소를 나타내고, CPORT_2는 제2 클라이언트 포트 번호를 나타낸다. 한편, 상기 연결 정보 테이블(415)은 세마포어(Shemaphore), 뮤텍스(MUTEX) 등의 방법에 의해 갱신이 이루어진다.
만일 관계 변수 R과 동일한 값이 연결 정보 테이블(415)에 존재하는 경우는 접속을 요청한 제1 클라이언트(460)와의 데이터 교환을 위하여 이미 제2 클라이언트(480)가 서버(410)와 접속한 상태에 있는 경우에 해당한다. 따라서, 동일한 R 값을 갖는 레코드(record)에서 NULL로 설정되어 있는 제1 클라이언트 정보 필드에 접속을 요청한 제1 클라이언트 정보인 SOCK_1, CIP_1, CPORT_1 를 추가한다(S530). 그리고 나서, 제1 클라이언트(460)와 제2 클라이언트(480)로 데이터를 전송하라는 [START] 패킷을 전송한다(S535).
한편, 관계 변수 R과 동일한 값이 연결 정보 테이블(415)에 존재하지 않는 경우는 서버(410)와 제2 클라이언트(480)와의 연결이 아직 성립되지 않았음을 나타낸다. 따라서, 이러한 경우에는 관계 변수 R과 접속을 요청한 제1 클라이언트(460)의 SOCK_1, CIP_1, CPORT_1 정보를 연결 정보 테이블(415)에 삽입하고, 아직 연결이 설정되지 않은 제2 클라이언트(480)의 SOCK_2, CIP_2, CPORT_2 정보 영역을 NULL로 설정한다(S540). 이 때, 제2 클라이언트(480)에 의해 NULL로 설정된 영역이 제2 클라이언트(480)의 접속 요청에 의해 SOCK_2, CIP_2, CPORT_2 정보로 갱신되면 서버(410)는 제1 클라이언트(460)와 제2 클라이언트(480)로 데이터를 전송하라는 [START] 패킷을 전송함으로써, 서버(410)는 제1 클라이언트(460)와 제2 클라이언트(480) 사이에 데이터를 중계할 준비를 마치게 된다.
이 때, 데이터를 중계하는 역할은 도 4에서 도시한 데이터 중계 모듈(430)과 연동하여 수행될 수 있다.
만일 서버(410)가 제1 클라이언트(460)로부터 모든 데이터를 수신하고 제1 클라이언트(460)로부터 모든 데이터를 전송하였음을 나타내는 [FINISH] 패킷을 수신하게 되면(S545, S550), 연결 정보 테이블(415)에서 패킷의 주소 및 포트 정보를 검색하여 해당하는 레코드에 포함된 SOCK_1, CIP_1, CPORT_1 정보를 NULL로 갱신한다(S555). 그리고 나서, 제2 클라이언트(460)의 SOCK_2, CIP_2, CPORT_2 정보 영역이 NULL 로 설정되어 있는지 여부를 검사한다(S560). 만일 제2 클라이언트 정보 필드가 모두 NULL로 설정되어 있는 경우에는 연결 정보 테이블(415)에서 해당 레코드를 삭제하고(S565), 만일 그렇지 않은 경우에는, 서버 소켓 모듈(420)은 서버(410)가 제1 클라이언트(460) 및 제2 클라이언트(480)와 접속한 소켓을 닫는다.
한편, 상기 S510 단계 내지 상기 S560 단계까지의 과정 또는 상기 S510 단계 내지 상기 S565 단계까지의 과정은 서버 소켓 모듈(420)이 별도의 스레드(thread)를 생성하여 처리할 수도 있다.
도 6은 본 발명의 실시예에 따른 데이터 중계 모듈의 동작을 나타내는 플로우 차트이다.
데이터 중계 모듈(430)은 서버 소켓 모듈(420) 과 같이 데몬(daemon)의 형태로 수행될 수 있는데, 서버 소켓 모듈(420) 과 연동하여 제1 클라이언트(460)와 제2 클라이언트(480) 사이에 네트워크 계층에서 데이터를 중계하는 역할을 한다.
즉, 제1 클라이언트(460)와 제2 클라이언트(480)가 서버(410)의 어플리케이션 계층에서 접속이 이루어지게 되면, 연결 정보 테이블(415)에는 제1 클라이언트(460)와 제2 클라이언트(480) 각각에 대한 IP주소 정보와 포트 정보가 매핑되어 저장된다.
따라서, 예컨대, 제1 클라이언트(460)로부터 데이터를 수신하고(S610), 만일 수신한 데이터가 제1 클라이언트(460)로부터의 데이터 전송이 완료되었음을 나타내는 [FINISH] 패킷이 아닌 경우에는 연결 정보 테이블(415)에서 상기 데이터 패킷의 주소와 포트 정보를 검색하여 해당하는 레코드를 찾아낸다(S630).
만일, 상기 데이터 패킷의 주소와 포트 정보의 검색에 성공한 경우에는 찾아낸 레코드로부터 전송할 목적지의 주소와 포트 정보를 추출하고(S650), 상기 데이터 패킷을 목적지로 전송한다(S660).
만일, 도 6에서 도시한 S620 단계에서 서버(410)가 제1 클라이언트(460)로부 터 수신한 데이터가 [FINISH]패킷이거나, 상기 데이터 패킷의 주소와 포트 정보의 검색에 성공하지 못한 경우에는, 데이터 중계 모듈(430)이 네트워크 계층에서 제2 클라이언트(480)로 데이터를 전송할 수 없으므로 데이터 중계 모듈(430)은 제1 클라이언트(460)로부터 수신한 데이터를 상위 계층에 해당하는 전송 계층으로 전달한다(S670).
한편, 데이터 중계 모듈(430)이 동작하는 동안, 제1 클라이언트(460) 또는 제2 클라이언트(480)에서 동작하고 있는 인스턴스 메시지 서비스를 위한 사용자 인터페이스가 종료하는 경우에는 도 6에서 도시한 데이터 중계 모듈(430)의 동작 과정이 종료하게 된다.
도 7은 본 발명의 실시예에 따른 클라이언트 소켓 어플리케이션 모듈의 동작을 나타내는 플로우 차트로서, 도 4에서 도시한 제1 클라이언트 소켓 어플리케이션 모듈(470)을 중심으로 설명하는데, 제2 클라이언트 소켓 어플리케이션 모듈(490)의 동작에도 동일하게 적용된다.
제1 클라이언트(460)가 제2 클라이언트(480)와 인스턴스 메시지 서비스를 이용하여 데이터를 송수신하기 위해서는 우선 서버(410)와 접속을 해야 한다. 따라서, 제1 클라이언트 소켓 어플리케이션 모듈(470)은 우선 소켓을 생성하고 서버와의 접속을 설정하게 된다(S710).
서버(410)가 서버 소켓 어플리케이션이 동작하는 프로토콜 스택 중 어플리케이션 계층에서 제1 클라이언트(460)와 제2 클라이언트(480)의 접속을 설정하면 데이터 전송을 시작하라는 [START] 패킷을 각각의 클라이언트(460, 480)로 전송하게 된다. 따라서, 제1 클라이언트 소켓 어플리케이션 모듈(470)은 서버(410)로부터 상기 [START] 패킷을 수신하였는지 여부를 검사한다(S720). 만일 제1 클라이언트 소켓 어플리케이션 모듈(470)이 서버(410)로부터 상기 [START] 패킷을 수신한 경우에는 제1 클라이언트(460)는 서버(410)로 데이터를 전송하기 시작한다. 이 때, 제1 클라이언트(460)는 제2 클라이언트(480)가 전송한 데이터를 서버(410)로부터 수신한다(S730). 이러한 데이터 송수신 과정이 종료하게 되면, 제1 클라이언트 소켓 어플리케이션 모듈(470)은 서버(410)로 데이터 전송이 종료되었음을 알리는 [FINISH] 패킷을 전송하고 소켓을 닫음으로써 인스턴스 메시지 서비스를 종료한다(S750).
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정하는 것은 아니다.
본 발명의 실시에 따라 소켓 어플리케이션을 이용하여 다양한 서비스를 제공하는 서버는 클라이언트의 소켓 정보를 이용하여 네트워크 계층에서 데이터를 중계하게 함으로써 소켓 어플리케이션에서 발생할 수 있는 데이터 중계의 지연을 감소시킬 수 있는 효과가 있다.

Claims (10)

  1. 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템에 있어서,
    제1 클라이언트와 제2 클라이언트로부터 접속을 요청하는 데이터를 수신하고, 소정의 연결 정보를 이용하여 어플리케이션 계층에서 상기 제1 클라이언트와 상기 제2 클라이언트의 접속을 설정하는 서버 소켓 모듈;
    상기 제1 클라이언트의 연결 정보와 상기 제2 클라이언트의 연결 정보가 매핑된 형태로 저장된 연결 정보 저장 모듈;
    상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터를 상기 매핑된 연결 정보를 이용하여 네트워크 계층에서 중계하는 데이터 중계 모듈을 포함하는 데이터 중계 시스템.
  2. 제1항에 있어서,
    상기 연결 정보는 클라이언트의 IP주소 정보, 클라이언트의 포트 정보 그리고 클라이언트로부터 접속을 요청하는 데이터를 수신한 수신 소켓 정보를 포함하는 데이터 중계 시스템.
  3. 제1항에 있어서,
    상기 서버 소켓 모듈은 상기 제1 클라이언트와 상기 제2 클라이언트의 접속이 완료된 경우에는 데이터 전송의 시작을 알리는 정보를 상기 제1 클라이언트와 상기 제2 클라이언트로 전송하는 것을 포함하는 데이터 중계 시스템.
  4. 제1항에 있어서,
    상기 서버 소켓 모듈은 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터의 중계가 완료된 경우에 클라이언트로부터 접속을 요청하는 데이터를 수신한 소켓을 닫도록 하는 것을 포함하는 데이터 중계 시스템.
  5. 제1항에 있어서,
    상기 연결 정보 저장 모듈은 클라이언트의 IP 주소 정보와 상기 클라이언트의 포트 정보를 파라미터로 하는 관계 연산의 결과값을 키값으로 하여 상기 제1 클라이언트의 연결 정보와 상기 제2 클라이언트의 연결 정보가 매핑된 형태로 저장된 것을 포함하는 데이터 중계 시스템.
  6. 소켓 어플리케이션 프로그램을 이용한 데이터 중계 방법에 있어서,
    제1 클라이언트와 제2 클라이언트가 서버의 어플리케이션 계층으로 접속을 요청하는 (a) 단계;
    상기 서버가 소정의 매핑된 연결 정보를 이용하여 상기 어플리케이션 계층에서 상기 제1 클라이언트와 상기 제2 클라이언트의 접속을 설정하는 (b) 단계;
    상기 서버가 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터를 상기 매핑된 연결 정보를 이용하여 네트워크 계층에서 중계 하는 (c) 단계를 포함하는 데이터 중계 방법.
  7. 제6항에 있어서,
    상기 연결 정보는 클라이언트의 IP주소 정보, 클라이언트의 포트 정보 그리고 클라이언트로부터 접속을 요청하는 데이터를 수신한 수신 소켓 정보를 포함하는 데이터 중계 방법.
  8. 제6항에 있어서,
    상기 (b) 단계는 데이터 전송의 시작을 알리는 정보를 상기 제1 클라이언트와 상기 제2 클라이언트로 전송하는 단계를 포함하는 데이터 중계 방법.
  9. 제6항에 있어서,
    상기 (c) 단계는 상기 제1 클라이언트에서 전송된 데이터와 상기 제2 클라이언트에서 전송된 데이터의 중계가 완료된 경우에 클라이언트로부터 접속을 요청하는 데이터를 수신한 소켓을 닫는 단계를 포함하는 데이터 중계 방법.
  10. 제6항에 있어서,
    상기 매핑된 연결 정보는 클라이언트의 IP 주소 정보와 상기 클라이언트의 포트 정보를 파라미터로 하는 관계 연산의 결과값을 키값으로 하여 매핑된 연결 정보를 포함하는 데이터 중계 방법.
KR1020040038351A 2004-05-28 2004-05-28 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법 KR100597405B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040038351A KR100597405B1 (ko) 2004-05-28 2004-05-28 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법
US11/130,235 US20060047821A1 (en) 2004-05-28 2005-05-17 System, method, and medium for relaying data using socket application program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040038351A KR100597405B1 (ko) 2004-05-28 2004-05-28 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법

Publications (2)

Publication Number Publication Date
KR20050112912A KR20050112912A (ko) 2005-12-01
KR100597405B1 true KR100597405B1 (ko) 2006-07-06

Family

ID=35944750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040038351A KR100597405B1 (ko) 2004-05-28 2004-05-28 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법

Country Status (2)

Country Link
US (1) US20060047821A1 (ko)
KR (1) KR100597405B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8499044B2 (en) * 2006-12-07 2013-07-30 Microsoft Corporation Formatted message processing utilizing a message map
KR100940525B1 (ko) 2007-11-21 2010-02-10 한국전자통신연구원 소켓 레벨 가상 사설망 통신 장치 및 방법
US7877507B2 (en) * 2008-02-29 2011-01-25 Red Hat, Inc. Tunneling SSL over SSH
US9590922B2 (en) * 2011-05-12 2017-03-07 Microsoft Technology Licensing, Llc Programmable and high performance switch for data center networks
KR101240332B1 (ko) * 2011-06-22 2013-03-11 주식회사 맥스 모바일단말기용 소켓서버 시스템 및 모바일단말기용 소켓서버 처리 방법
US9621495B1 (en) * 2012-12-10 2017-04-11 Jeffrey Brian Shumate Anonymous messaging proxy
US10594570B1 (en) 2016-12-27 2020-03-17 Amazon Technologies, Inc. Managed secure sockets
US10944834B1 (en) * 2016-12-27 2021-03-09 Amazon Technologies, Inc. Socket peering
CN115002213A (zh) * 2022-06-01 2022-09-02 上海嘉车信息科技有限公司 数据传输方法与框架

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805823A (en) * 1996-01-30 1998-09-08 Wayfarer Communications, Inc. System and method for optimal multiplexed message aggregation between client applications in client-server networks
US6003084A (en) * 1996-09-13 1999-12-14 Secure Computing Corporation Secure network proxy for connecting entities
US6957346B1 (en) * 1999-06-15 2005-10-18 Ssh Communications Security Ltd. Method and arrangement for providing security through network address translations using tunneling and compensations
JP4551546B2 (ja) * 2000-09-28 2010-09-29 キヤノン株式会社 ネットワークシステムのサーバ装置及びその制御方法
US6993564B2 (en) * 2000-12-22 2006-01-31 At&T Corp. Method of authorizing receipt of instant messages by a recipient user
US20020095506A1 (en) * 2001-01-15 2002-07-18 Murata Kikai Kabushiki Kaisha Relay server, communication system and facsimile system
US20020143922A1 (en) * 2001-04-03 2002-10-03 Murata Kikai Kabushiki Kaisha Relay server and relay system
JP4230677B2 (ja) * 2001-05-15 2009-02-25 ソニー株式会社 情報管理システム、情報管理装置、情報管理方法、情報利用クライアント、情報利用クライアントプログラムならびに情報利用クライアントプログラムを記録した情報記録媒体
US7287057B2 (en) * 2001-11-15 2007-10-23 International Business Machines Corporation Accessing information using an instant messaging system
US20030129969A1 (en) * 2002-01-07 2003-07-10 Rucinski David B. Messaging system, apparatus and methods
JP2003242050A (ja) * 2002-02-14 2003-08-29 Hitachi Ltd サーバ・クライアント間データ転送方法およそのサーバクライアントシステム
US7412507B2 (en) * 2002-06-04 2008-08-12 Lucent Technologies Inc. Efficient cascaded lookups at a network node
US7305546B1 (en) * 2002-08-29 2007-12-04 Sprint Communications Company L.P. Splicing of TCP/UDP sessions in a firewalled network environment
US7313618B2 (en) * 2002-10-31 2007-12-25 Sap Aktiengesellschaft Network architecture using firewalls

Also Published As

Publication number Publication date
KR20050112912A (ko) 2005-12-01
US20060047821A1 (en) 2006-03-02

Similar Documents

Publication Publication Date Title
WO2020077680A1 (zh) 数据传输方法、系统以及代理服务器
US6775700B2 (en) System and method for common information model object manager proxy interface and management
EP2262185B1 (en) Method and system for forwarding data among private networks
EP3720100A1 (en) Service request processing method and device
US11856065B2 (en) Data transmission for service integration between a virtual private cloud and an intranet
US11936638B2 (en) Link protocol agents for inter-application communications
US20110277028A1 (en) Assigning a network address for a virtual device to virtually extend the functionality of a network device
JP2005525750A (ja) ネットワークアドレス変換(nat)によるピアツーピアネットワーク通信
JP2008181427A (ja) シングルサインオンシステム、情報端末装置、シングルサインオンサーバ、プログラム
US20110173344A1 (en) System and method of reducing intranet traffic on bottleneck links in a telecommunications network
US20240069977A1 (en) Data transmission method and data transmission server
WO2009097776A1 (zh) 一种实现业务升级的系统、装置及方法
CN110351233A (zh) 一种基于安全隔离网闸的双向透明传输技术
WO2017219813A1 (zh) 一种流量处理方法及透明缓存系统
US11917523B2 (en) Polymorphic network control system and method supporting mobile access of terminal
US20060047821A1 (en) System, method, and medium for relaying data using socket application program
JPH10112740A (ja) 情報処理装置、通信方法および記憶媒体
CN110771117B (zh) 一种采用面向id的网络的会话层通信
US8204027B2 (en) Administering requests for data communications connections in a wide area network that includes a plurality of networks
US20110276673A1 (en) Virtually extending the functionality of a network device
US20210203604A1 (en) Load balancing method, device and system
JP2007249659A (ja) システム切替方法、その計算機システム及びプログラム
JP3709319B2 (ja) 端末からホストコンピュータへの再接続方法
CN115208739B (zh) 跨多网络区对接方法及安全运维区对接单向网络区的方法
EP3873043A1 (en) Load balancing method, device and system

Legal Events

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

Payment date: 20090529

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee