[go: up one dir, main page]

KR100836619B1 - Peer Management Server and Peer Management Method in P2P System - Google Patents

Peer Management Server and Peer Management Method in P2P System Download PDF

Info

Publication number
KR100836619B1
KR100836619B1 KR1020060117170A KR20060117170A KR100836619B1 KR 100836619 B1 KR100836619 B1 KR 100836619B1 KR 1020060117170 A KR1020060117170 A KR 1020060117170A KR 20060117170 A KR20060117170 A KR 20060117170A KR 100836619 B1 KR100836619 B1 KR 100836619B1
Authority
KR
South Korea
Prior art keywords
peer
query
information
content
request message
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020060117170A
Other languages
Korean (ko)
Other versions
KR20080047161A (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 KR1020060117170A priority Critical patent/KR100836619B1/en
Priority to JP2009538314A priority patent/JP5178734B2/en
Priority to PCT/KR2007/005660 priority patent/WO2008062961A1/en
Publication of KR20080047161A publication Critical patent/KR20080047161A/en
Application granted granted Critical
Publication of KR100836619B1 publication Critical patent/KR100836619B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1085Content sharing, e.g. peer-to-peer [P2P]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 P2P 시스템에서의 피어 관리 서버에 관한 것으로서, 본 발명의 피어 관리 서버는 P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스부; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스부로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 프로세스부; 및 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 프로세스부에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함한다. The present invention relates to a peer management server in a P2P system, wherein the peer management server of the present invention establishes a connection with peers connected to a P2P system, receives a message from the peers, and receives a message from the peer for processing a message. A front end processor for generating corresponding query names and parameters; An SQL map processor including mapping information for mapping the query name and parameters into query statements and outputting query statements corresponding to the query names and parameters received from the front end processor; And a peer database that maintains information of peers operating as active peers and content information held by each peer, and updates data or extracts data according to a query statement output from the SQL map processor.

P2P, 데이터베이스, 다운로드 P2P, Database, Download

Description

P2P 시스템에서 피어 관리 서버 및 피어 관리 방법 {Peer Management Server in P2P System and Peer Management Method} Peer Management Server in P2P System and Peer Management Method}

도 1은 종래의 피어 정보를 관리하는 트리 구조의 자료 구조 일례를 도시한 도면.1 is a diagram showing an example of a data structure of a tree structure for managing conventional peer information.

도 2는 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버가 적용되는 P2P 시스템의 구성을 도시한 도면.2 is a diagram illustrating a configuration of a P2P system to which a peer management server according to an exemplary embodiment of the present invention is applied.

도 3은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버의 구성을 도시한 블록도.3 is a block diagram showing the configuration of a peer management server according to an embodiment of the present invention.

도 4는 본 발명의 바람직한 일 실시예에 따른 에이전트 프로그램의 모듈 구성을 도시한 블록도.4 is a block diagram showing a module configuration of an agent program according to an embodiment of the present invention.

도 5는 본 발명의 바람직한 일 실시예에 따른 프론트 엔드 프로세스부의 모듈 구성을 도시한 블록도.5 is a block diagram showing a module configuration of a front end processor according to an embodiment of the present invention.

도 6은 본 발명의 일 실시예에 따른 P2P 시스템의 전체적인 동작을 도시한 순서도.6 is a flowchart illustrating the overall operation of a P2P system according to an embodiment of the present invention.

도 7은 본 발명의 일 실시예에 따른 SQL 맵 프로세스부의 동작 구조를 도시한 도면.7 is a diagram illustrating an operation structure of an SQL map processor according to an exemplary embodiment of the present invention.

도 8은 본 발명의 일 실시예에 따른 SQL 맵 프로세스부와 데이터베이스와의 연결 구조의 일례을 도시한 도면.  8 is a diagram illustrating an example of a connection structure between an SQL map processor and a database according to an embodiment of the present invention.

도 9는 본 발명의 바람직한 일 실시예에 따른 피어 등록 과정을 도시한 순서도. 9 is a flowchart illustrating a peer registration process according to an embodiment of the present invention.

도 10은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버에서 피어 정보를 제공하는 과정을 도시한 순서도.10 is a flowchart illustrating a process of providing peer information in a peer management server according to an exemplary embodiment of the present invention.

도 11은 본 발명의 바람직한 일 실시예에 따른 사용자가 요청한 컨텐츠를 보유한 피어를 랜덤하게 선택하기 위한 과정을 도시한 순서도.11 is a flowchart illustrating a process for randomly selecting a peer having content requested by a user according to an exemplary embodiment of the present invention.

도 12는 본 발명의 일 실시예에 따른 피어 등록 요청 메시지의 필드 구성을 도시한 도면.12 illustrates a field configuration of a peer registration request message according to an embodiment of the present invention.

본 발명은 P2P 시스템의 피어 관리 서버에 관한 것으로서, 보다 상세하게는 피어들간의 파일 송수신을 위해 피어 정보를 제공하는 피어 관리 서버 및 이를 피어 관리 방법에 관한 것이다. The present invention relates to a peer management server of a P2P system, and more particularly, to a peer management server for providing peer information for file transmission and reception between peers and a peer management method thereof.

P2P 시스템은 기존의 클라이언트-서버 개념을 벗어나 개인 컴퓨터(피어)끼리 직접 연결하고 검색함으로써 모든 참여자가 공급자인 동시에 수요자가 되는 형태의 통신 시스템이다. The P2P system is a communication system in which all participants are suppliers and consumers by directly connecting and searching between personal computers (peers) beyond the conventional client-server concept.

이러한 P2P 시스템은 미국의 냅스터와 국내의 소리바다와 같은 서비스에 의해 음악 파일 공유를 위해 처음 시도되었으며, 근래에는 단순한 음악 파일 공유가 아닌 다양한 서비스에서 이용되고 있다. This P2P system was first attempted to share music files by services such as Napster in the US and Sori Sea in Korea. Recently, P2P systems are used in various services, not just music file sharing.

예를 들어, P2P 시스템은 게임 시스템에서 클라이언트들 사이의 게임 패킷 교환에도 사용되고 있으며, 컨텐츠 제공업자가 서버의 부담을 경감하기 위한 방편으로도 활용되고 있다. For example, P2P systems are also used to exchange game packets between clients in game systems, and are used as a way for content providers to reduce the burden on servers.

이러한 P2P 시스템은 개인 클라이언트들끼리의 연결을 위해 피어 정보를 제공하여야 하며, P2P 서비스 프로바이더는 피어 관리 서버를 이용하여 P2P 시스템에 접속한 피어들의 정보를 관리한다. Such a P2P system should provide peer information for connection between individual clients, and the P2P service provider manages information of peers connected to the P2P system using a peer management server.

종래의 경우, P2P 시스템에 접속한 피어들의 정보는 트리 구조의 자료 구조에 의해 관리되는 것이 일반적이었다. 도 1은 종래의 피어 정보를 관리하는 트리 구조의 자료 구조 일례를 도시한 도면이다. In the conventional case, the information of peers connected to the P2P system was generally managed by a tree structure data structure. 1 is a diagram showing an example of a data structure of a tree structure for managing conventional peer information.

도 1에 도시된 바와 같이, 종래에는 부(parent) 노드와 자(Child) 노드가 유기적으로 연결된 트리 구조 리스트에 의해 접속한 피어들의 정보가 관리되었으며, 피어의 접속 및 해제를 처리하는 알고리즘에 의해 피어 정보가 갱신되었다. As shown in FIG. 1, in the related art, information of peers connected by a tree structure list in which a parent node and a child node are organically connected is managed, and by an algorithm that processes connection and release of a peer. Peer information has been updated.

이와 같이, 자료 구조에 의해 접속한 피어들의 정보가 관리될 경우 접속한 피어 정보의 일부가 유실되는 문제점이 있었으며, 피어 정보를 데이터베이스가 아닌 자료 구조에 의해 관리함으로써 서버의 메모리 공간을 지나치게 많이 차지하는 문제점이 있었다. As such, when the information of peers connected by the data structure is managed, there is a problem in which some of the connected peer information are lost, and the problem of taking up too much memory space of the server by managing peer information by the data structure rather than the database. There was this.

특히, 관리해야하는 피어 정보가 늘어날 경우에 서버의 메모리 공간은 한계가 있는 바 자료 구조에 의해 피어 정보를 관리하는 것은 비효율적이었다. In particular, when the peer information to be managed increases, the memory space of the server is limited, so managing the peer information by the data structure is inefficient.

종래에는 사용자 아이디와 신상 정보와 같이 정적인 정보만이 데이터베이스에 의해 관리되었으나, 피어 정보를 보다 효율적으로 처리하기 위해 데이터베이스에서 피어 정보를 관리하고 데이터베이스에서 피어 정보를 관리할 경우의 효율적인 처리를 위한 서버 프로세스가 요구되고 있다. In the past, only static information such as user ID and personal information was managed by the database, but the server for efficient processing when managing peer information in the database and managing peer information in the database to process peer information more efficiently. A process is required.

본 발명에서는 상기한 바와 같은 종래 기술의 문제점을 해결하기 위해, P2P 시스템에 접속한 피어 정보를 데이터베이스에 의해 효율적으로 관리할 수 있는 피어 관리 서버 및 이를 이용한 P2P 시스템을 제안하고자 한다. In order to solve the problems of the prior art as described above, a peer management server capable of efficiently managing peer information connected to a P2P system by a database and a P2P system using the same are proposed.

본 발명의 다른 목적은 데이터베이스를 통해 피어 정보 관리 시 요청 메시지를 효율적으로 처리할 수 있는 피어 관리 서버의 프로세스 구조 및 이를 이용한 P2P 시스템을 제안하는 것이다. Another object of the present invention is to propose a process structure of a peer management server that can efficiently process a request message when managing peer information through a database, and a P2P system using the same.

본 발명의 또 다른 목적은 P2P 시스템 이용 시 사용자 클라이언트의 부하를 최소화할 수 있는 P2P 시스템을 제안하는 것이다. Another object of the present invention is to propose a P2P system that can minimize the load of a user client when using a P2P system.

상기한 바와 같은 목적을 달성하기 위하여, 본 발명의 일 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스부; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스부로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 프로세스부; 및 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 프로세스부에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 P2P 시스템에서의 피어 관리 서버가 제공된다. In order to achieve the above object, according to an aspect of the present invention, establishing a connection with the peers connected to the P2P system and receive a message from the peers, the query corresponding to the received message for message processing A front end processor for generating names and parameters; An SQL map processor including mapping information for mapping the query name and parameters into query statements and outputting query statements corresponding to the query names and parameters received from the front end processor; And a peer database that maintains information of peers operating as active peers and content information held by each peer, and includes a peer database that updates or extracts data according to a query statement output from the SQL map processor. A management server is provided.

또한, 상기 피어 관리 서버는 사용자 접속 및 메시지 처리 상태와 쿼리문 생성 상태를 체크하는 상태 판단부; 및 상기 상태 판단부의 판단 결과에 상응하여 상기 사용자 접속 및 메시지 처리를 위한 프론트 엔드 프로세스부 및 상기 쿼리문 생성을 위한 SQL 맵 프로세스부의 생성 및 소멸을 제어하는 프로세스 생성 제어부를 더 포함할 수 있다. The peer management server may further include a state determination unit that checks a user connection and message processing state and a query statement generation state; And a process generation controller configured to control generation and destruction of the front end processor for the user access and message processing and the SQL map processor for generating the query statement in response to the determination result of the state determination unit.

상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송한다. The peers are provided with an agent program for communication with the peer management server and other peers, and the agent program determines whether the peer is in a download state and registers a peer registration request message and peer for registering the peer as an active peer. Send the release request message.

상기 SQL 맵 프로세스부는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장한다. The SQL map processor stores the mapping information for mapping the query name and parameters into a query statement as an XML document.

상기 등록 요청 메시지는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하며, 상기 프론트 엔드 프로세스부는 상기 피어 등록 요청 메시지에 상응하는 미리 설정된 쿼리명 및 상기 사용자 아이디, 주소 및 보유한 컨텐츠 정보에 대한 파라미터를 생성하며, 상기 SQL 맵 프로세스부는 상기 프론트 엔드 프로세스부로부터의 쿼리명 및 파라미터를 분석하여 쿼리문을 생성하여 상기 피어 데이터베이스로부터 피어 정보를 추출한다.The registration request message includes a user ID, an address, and retained content information. The front end processor generates a preset query name corresponding to the peer registration request message and parameters for the user ID, address, and retained content information. The SQL map processor extracts peer information from the peer database by generating query statements by analyzing query names and parameters from the front end processor.

본 발명의 다른 측면에 따르면, P2P 시스템에서 피어 정보 관리 방법으로서, P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a); 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 메시지를 분석하여 파라미터를 생성하는 단계(b); 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c); 상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d)를 포함하는 피어 정보 관리 방법이 제공된다. According to another aspect of the present invention, a peer information management method in a P2P system, comprising: receiving a registration request message from a peer connected to a P2P system; (B) analyzing a query name and a peer registration message corresponding to the peer registration request message to generate a parameter; (C) generating a query statement corresponding to the registration request message by using mapping information for mapping the query name and parameters into a query statement; And (d) registering the peer as an active peer in a peer information database by the query statement.

상기 피어에는 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 상기 피어가 컨텐츠 다운로드 상태인지 여부를 판단하여 상기 등록 요청 메시지를 전송한다. An agent program is installed in the peer, and the agent program determines whether the peer is in a content download state and transmits the registration request message.

상기 피어 등록 요청 메시지를 분석하여 생성되는 파라미터는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함할 수 있다. The parameter generated by analyzing the peer registration request message may include a user ID, an address, and content information held.

상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보는 XML 형태 로 저장되는 것이 바람직하다. The mapping information for mapping the query name and parameters to the query statement is preferably stored in XML format.

한편, 상술한 방법은, 특정 피어로부터 컨텐츠 요청 메시지를 수신하는 단계; 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성하는 단계; 상기 매핑 정보를 이용하여 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 상기 파라미터에 상응하는 피어 선택 쿼리문을 생성하는 단계; 및 상기 피어 선택 쿼리문에 의해 상기 피어 데이터베이스로부터 상기 컨텐츠 아이디와 연관된 컨텐츠를 보유한 피어를 선택하는 단계를 더 포함할 수 있다. On the other hand, the above method comprises the steps of receiving a content request message from a specific peer; Generating parameters for a query name corresponding to the content request message and a content ID included in the content request message; Generating a query name corresponding to the content request message and a peer selection query statement corresponding to the parameter using the mapping information; And selecting a peer having content associated with the content ID from the peer database by the peer selection query statement.

본 발명의 다른 측면에 따르면, 상술한 방법들을 수행하는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지털 데이터 처리 장치에 설치되어 상기 디지털 데이터 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체가 제공된다. According to another aspect of the present invention, there is provided a recording medium in which a program of instructions for performing the above-described methods is tangibly embodied and which is installed in a digital data processing apparatus and records a program that can be read by the digital data processing apparatus. .

본 발명의 또 다른 측면에 따르면, P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하며, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 서버; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 서버로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 서버; 및 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 서버에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함할 수 있다. According to another aspect of the present invention, a front-end server establishes a connection with peers connected to a P2P system, receives a message from the peers, and generates a query name and parameters corresponding to the received message for message processing. ; An SQL map server including mapping information for mapping the query name and the parameter to a query statement and outputting a query statement corresponding to the query name and the parameter received from the front-end server; And a peer database that maintains information of peers operating as active peers and content information held by each peer, and updates or extracts data according to a query statement output from the SQL map server.

이하에서, 첨부된 도면을 참조하여 본 발명에 의한 피어 관리 서버의 바람직한 실시예를 상세히 설명한다. Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of a peer management server according to the present invention.

도 2는 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버가 적용되는 P2P 시스템의 구성을 도시한 도면이다. 2 is a diagram illustrating a configuration of a P2P system to which a peer management server according to an exemplary embodiment of the present invention is applied.

도 2를 참조하면, 본 발명의 일 실시예에 따른 P2P 시스템은 복수의 사용자 클라이언트 및 피어 관리 서버(200)를 포함하며 각각의 사용자 클라이언트에는 P2P 에이전트 프로그램이 설치된다. 2, a P2P system according to an embodiment of the present invention includes a plurality of user clients and a peer management server 200, and a P2P agent program is installed in each user client.

본 발명이 적용되는 P2P 시스템은 다양한 형태의 P2P 서비스에 적용될 수 있다. 본 발명의 P2P 시스템은 일반적인 음악 또는 동영상 파일의 파일 공유 서비스에 적용될 수 있다. 파일 공유 서비스는 사용자들이 가지고 있는 파일 목록을 P2P 서비스 시스템에 접속한 사용자들이 확인할 수 있고 특정 파일을 특정 피어로부터 다운받을 수 있도록 한 서비스이다. The P2P system to which the present invention is applied may be applied to various types of P2P services. The P2P system of the present invention can be applied to a file sharing service of a general music or video file. The file sharing service is a service that allows users accessing a P2P service system to check a list of files owned by a user and to download a specific file from a specific peer.

이러한 일반적인 파일 공유 서비스 이외에도 본 발명은 P2P를 이용한 컨텐츠 전송 서비스에도 이용될 수 있다. 통상적으로 컨텐츠 제공 업체에서의 컨텐츠 제공은 CDN(Contents Delivery Network)를 이용하여 이루어지나, 본 발명에 의한 P2P 시스템을 이용하여 소정의 비용이 소요되는 CDN을 이용하지 않고 컨텐츠를 제공하는 것이 가능하다. 이 경우, 사용자가 서비스 제공 업체로부터 제공받으려는 컨텐츠를 저장하고 있는 피어 목록이 컨텐츠를 요청한 사용자에게 제공되며, 사용자는 피어 목록에 포함된 피어들 중 특정 피어로부터 컨텐츠를 다운로드함으로써 CDN을 이용하지 않고 컨텐츠를 제공하는 것이 가능하다. In addition to the general file sharing service, the present invention can be used for a content delivery service using P2P. In general, content providing from a content provider is performed using a content delivery network (CDN), but it is possible to provide content without using a CDN, which requires a predetermined cost, using a P2P system according to the present invention. In this case, a list of peers that stores the content that the user wants to receive from the service provider is provided to the user who requested the content, and the user downloads the content from a specific peer among the peers included in the peer list, thereby not using the CDN. It is possible to provide.

상술한 서비스 이외에도 본 발명은 P2P를 이용하여 제공될 수 있는 다양한 서비스들에 적용될 수 있을 것이다. In addition to the above-described service, the present invention may be applied to various services that can be provided using P2P.

이하에서는 P2P를 이용하여 컨텐츠 제공 업체가 사용자가 요청한 컨텐츠를 제공하는 경우를 주요한 예로 하여 본 발명을 설명하기로 한다. Hereinafter, the present invention will be described with a main example of a case where a content provider provides content requested by a user using P2P.

사용자 클라이언트는 네트워크를 통해 통신 가능하고 P2P 에이전트 프로그램이 구동 가능한 어떠한 종류의 장치도 포함할 수 있다. 사용자 클라이언트로는 일반적인 PC는 물론 노트북, PDA 및 이동통신 단말기와 같은 장치가 사용될 수 있을 것이다. The user client can include any kind of device that can communicate over a network and can run a P2P agent program. As the user client, devices such as laptops, PDAs, and mobile terminals as well as general PCs may be used.

P2P 시스템에 접속한 각각의 사용자 클라이언트는 하나의 피어로서 동작하며, 본 명세서에서 피어와 사용자 클라이언트란 용어를 혼용하여 사용하기로 한다. Each user client connected to the P2P system operates as one peer, and the terms peer and user client are used interchangeably herein.

피어 관리 서버(200)는 사용자가 특정 컨텐츠를 요청할 경우, 사용자가 요청한 컨텐츠를 제공할 수 있는 피어 정보를 제공하는 기능을 한다. 예를 들어, 사용자가 "물랑루즈"라는 영화를 요청할 경우, 피어 관리 서버(200)는 "물랑루즈"라는 영화 파일을 제공할 수 있는 피어 정보를 추출하여 해당 클라이언트에 제공하는 기능을 한다. When the user requests specific content, the peer management server 200 provides peer information for providing content requested by the user. For example, when a user requests a movie called "Moulin Rouge", the peer management server 200 functions to extract peer information capable of providing a movie file called "Moulin Rouge" and provide it to the corresponding client.

피어 관리 서버(200)는 사용자가 요청한 컨텐츠를 제공할 수 있는 피어 정보를 제공하기 위해 P2P 시스템에 접속하여 컨텐츠 제공이 가능한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 관리한다. The peer management server 200 accesses a P2P system to provide peer information for providing content requested by a user, and manages a list of peers capable of providing content and content information stored by each peer.

전술한 바와 같이, 종래의 경우 피어 관리 서버는 P2P 시스템에 접속한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 자료 구조의 형태로 관리하였다. 종래의 경우, 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠를 자료 구조의 형태로 메모리에서 관리하였으며, 사용자 아이디와 같이 변하지 않는 정적인 정보 정도만을 데이터베이스에 관리하는 것이 일반적이었다. 또한, 피어 정보 메세지와 같이 사용자로부터 요청 메시지가 수신되는 경우, 피어 관리 서버는 자료 구조에 대해 미리 설정된 알고리즘을 수행하여 사용자의 요청 정보를 처리하였다. As described above, in the related art, the peer management server managed a list of peers connected to a P2P system and content information stored by each peer in the form of a data structure. In the prior art, the peer list and the contents stored by each peer were managed in memory in the form of a data structure, and it was common to manage only static information that does not change, such as a user ID, in a database. In addition, when a request message is received from a user, such as a peer information message, the peer management server performs a predetermined algorithm on the data structure to process the user's request information.

그러나, 본 발명의 바람직한 실시예에 따른 피어 관리 서버는 P2P 시스템에 접속한 피어 리스트 및 각 피어가 저장하고 있는 컨텐츠 정보를 데이터베이스에서 관리하도록 한다. However, the peer management server according to the preferred embodiment of the present invention manages the peer list connected to the P2P system and the content information stored by each peer in the database.

본 발명의 바람직한 실시예에 따르면, 피어 정보를 데이터베이스에서 관리함으로써 관리하여야 할 피어 용량이 증가할 경우 다수의 데이터베이스에서 피어 정보를 관리하는 것이 가능하다. According to a preferred embodiment of the present invention, it is possible to manage peer information in multiple databases when the peer capacity to be managed increases by managing peer information in a database.

또한, 본 발명의 바람직한 실시예에 따른 피어 관리 서버는 접속한 피어들의 정보를 데이터베이스에서 관리하기 위해 클라이언트 접속 및 클라이언트로부터의 메시지를 처리하는 프로세스와 데이터베이스의 쿼리문을 생성하는 프로세스를 독립적으로 운영한다. In addition, the peer management server according to the preferred embodiment of the present invention independently operates a process of processing a client connection and a message from a client and a process of generating a query statement of a database in order to manage information of connected peers in a database. .

피어 정보를 자료 구조를 이용하여 관리하던 종래의 경우, 클라이언트 접속 및 메시지 처리와 자료 구조에 데이터를 삽입, 추출 및 갱신하는 알고리즘은 하나의 프로세스에 의해 수행될 수밖에 없었다. 아울러, 종래의 경우 정적인 정보는 데이터베이스에서 관리되었으나, 데이터베이스에 대한 쿼리문 역시 동일한 단일의 프 로세스에 의해 생성되었다. 그러나, 본 발명의 바람직한 실시예에 따르면, 이와 같이 하나의 프로세스에 의해 수행되던 기능이 별개의 프로세스에 의해 수행되도록 한다.In the conventional method of managing peer information using a data structure, client access, message processing, and algorithms for inserting, extracting, and updating data in the data structure were inevitably performed by a single process. In addition, in the conventional case, static information was managed in a database, but query statements for the database were also generated by the same single process. However, according to a preferred embodiment of the present invention, the functions performed by one process as described above are performed by separate processes.

사용자 접속과 메시지 처리 및 데이터베이스 쿼리문 생성을 별도의 프로세스에 의해 처리하는 보다 상세한 방법 및 이로 인한 장점은 다른 도면들을 참조하여 설명하기로 한다. A more detailed method of processing user access, message processing, and database query statement generation by a separate process and its advantages will be described with reference to other drawings.

각 사용자 클라이언트들에 설치되는 에이전트 프로그램은 사용자가 클라이언트가 P2P 네트워크에서 피어로 동작할 수 있도록 피어 관리 서버와의 통신을 통해 피어 등록을 수행한다. The agent program installed in each user client performs peer registration through communication with the peer management server so that the client can operate as a peer in the P2P network.

본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 사용자 클라이언트가 다른 피어로부터 컨텐츠를 다운로드하고 있는 경우에만 피어로서 동작하도록 피어 등록 및 피어 등록 해제를 수행한다. According to a preferred embodiment of the present invention, the agent program performs peer registration and peer deregistration to operate as a peer only when the user client is downloading content from another peer.

종래의 경우, P2P를 위해 사용자 클라이언트에 설치되는 에이전트 프로그램은 사용자 클라이언트의 동작 중 사용자 클라이언트가 항상 컨텐츠를 제공하는 피어로서 동작하도록 제어하는 것이 일반적이었다. In the conventional case, the agent program installed in the user client for P2P generally controls the user client to operate as a peer providing content during the operation of the user client.

그러나, 이와 같이 사용자 클라이언트가 항상 피어로서 동작하도록 설정될 경우, 사용자 클라이언트의 리소스가 P2P 통신에 의해 과도하게 낭비되는 문제점이 있었다. 예를 들어, P2P 커넥션의 처리로 인해 사용자가 수행하는 다른 작업의 처리가 지연되거나 CPU에 과도한 부하가 발생하는 문제점 등이 발생하였다. However, when the user client is set to always operate as a peer, there is a problem that resources of the user client are excessively wasted by P2P communication. For example, processing of P2P connections may cause delays in processing of other tasks performed by the user or excessive load on the CPU.

본 발명에서는 이와 같은 종래의 문제점을 해결하기 위해 사용자 클라이언트 가 다른 피어로부터 컨텐츠를 다운로드 중인 경우에만 다른 클라이언트들에 컨텐츠를 제공하는 피어로서 동작할 수 있도록 한다. In order to solve such a conventional problem, the present invention can operate as a peer providing content to other clients only when the user client is downloading content from another peer.

상술한 피어 등록 동작 이외에도, 에이전트 프로그램은 피어 관리 서버로부터 사용자가 요청한 컨텐츠를 보유한 피어 정보를 수신하고, 해당 피어와 연결을 설정하여 컨텐츠를 다운로드하는 기능을 수행한다. In addition to the above-described peer registration operation, the agent program receives peer information holding content requested by a user from the peer management server, establishes a connection with the corresponding peer, and performs a function of downloading content.

도 3은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버의 구성을 도시한 블록도이다. 3 is a block diagram illustrating a configuration of a peer management server according to an exemplary embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 피어 관리 서버는 상태 판단부(300), 프로세스 생성 제어부(302), 프론트 엔드 프로세스부(304), SQL 맵 프로세스부(306) 및 피어 데이터베이스(308)를 포함할 수 있다. Referring to FIG. 3, a peer management server according to an embodiment of the present invention may include a state determination unit 300, a process generation control unit 302, a front end process unit 304, an SQL map process unit 306, and a peer database. 308.

도 3에서, 프론트 엔드 프로세스부(304)는 각 피어에 설치되는 에이전트 프로그램과의 통신을 담당한다. 프론트 엔드 프로세스부(304)는 사용자 클라이언트가 연결 설정을 요청할 경우 연결 설정을 처리하는 기능을 한다. 프론트 엔드 프로세스부(304)는 사용자 클라이언트들과의 커넥션을 유지하며, 여기서 커넥션은 TCP 커넥션인 것이 바람직하며 필요에 따라 UDP 커넥션을 유지할 수도 있다. In FIG. 3, the front end processor 304 is responsible for communicating with the agent program installed in each peer. The front end processor 304 functions to process the connection setup when the user client requests the connection setup. The front end processor 304 maintains a connection with the user clients, where the connection is preferably a TCP connection and may maintain a UDP connection as needed.

또한, 프론트 엔드 프로세스부(304)는 각 피어에 설치된 에이전트 프로그램으로부터 요청 메시지를 수신하며, 수신한 요청 메시지를 처리한다. 프론트 엔드 프로세스부(304)가 에이전트 프로그램으로부터 수신하는 요청 메시지는 피어 등록 요청 메시지, 피어 등록 해제 요청 메시지 및 컨텐츠 요청 메시지를 포함할 수 있다. In addition, the front end processor 304 receives a request message from an agent program installed in each peer and processes the received request message. The request message that the front end processor 304 receives from the agent program may include a peer registration request message, a peer deregistration request message, and a content request message.

피어 등록 요청 메시지는 피어가 자신을 컨텐츠를 제공할 수 있는 액티브 피어로 등록하도록 요청하는 메시지이다. 전술한 바와 같이, 본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 사용자가 다른 피어로부터 컨텐츠를 다운로드하는 것을 감지한 경우 피어 등록 요청 메시지를 생성하여 프론트 엔드 프로세스부(304)에 전송한다. The peer registration request message is a message requesting a peer to register itself as an active peer capable of providing content. As described above, according to a preferred embodiment of the present invention, when the agent program detects that the user downloads content from another peer, the agent program generates a peer registration request message and transmits it to the front end processor 304.

피어 등록 해제 요청 메시지는 자신을 액티브 피어로 등록한 피어가 등록에 대한 해제를 요청하는 메시지이다. 본 발명의 바람직한 실시예에 따르면, 에이전트 프로그램은 에이전트 프로그램이 다른 피어로부터 더 이상 컨텐츠를 다운로드하는 상태가 아닌 경우 피어 등록 해제 요청 메시지를 생성하여 프론트 엔드 프로세스부(304)에 전송한다. The peer deregistration request message is a message for a peer that has registered itself as an active peer to request deregistration for registration. According to a preferred embodiment of the present invention, when the agent program is no longer downloading content from another peer, the agent program generates and sends a peer deregistration request message to the front end processor 304.

컨텐츠 요청 메시지는 특정 컨텐츠를 저장하고 있는 피어 정보를 요청하는 메시지이다. 사용자가 특정 컨텐츠의 다운로드를 요청하는 경우, 에이전트 프로그램은 해당 컨텐츠의 아이디 정보를 포함하는 컨텐츠 요청 메시지를 생성하여 프론트 엔드 프로세스부(304)에 전송한다. The content request message is a message for requesting peer information for storing specific content. When the user requests the download of specific content, the agent program generates a content request message including ID information of the corresponding content and transmits it to the front end processor 304.

상술한 메시지들 이외에도 다양한 종류의 메시지들이 피어로부터 프론트 엔드 프로세스부에 전달될 수 있으며, 프론트 엔드 프로세스부(304)는 에이전트 프로그램에 의해 생성된 메시지들을 수신하고 이에 상응하는 쿼리명/파라미터를 생성하는 기능을 한다. In addition to the above-described messages, various kinds of messages may be delivered from the peer to the front end processor, and the front end processor 304 receives messages generated by the agent program and generates corresponding query names / parameters. Function

종래의 경우, 피어 관리 서버는 피어로부터 상술한 요청 메시지들을 수신할 경우 요청에 상응하는 알고리즘을 수행하여 자료 구조 데이터에 피어를 등록하거나 자료구조 데이터로부터 피어를 선택하는 기능을 수행하였다. 또한, 데이터베이스와 의 통신이 필요한 경우, 사용자의 요청 메시지를 분석하여 하나의 프로세스에서 쿼리문을 생성하였다. In the conventional case, when the peer management server receives the above-mentioned request messages from the peer, the peer management server performs an algorithm corresponding to the request to register a peer in the data structure data or select a peer from the data structure data. In addition, when communication with the database is required, the query statement is generated in one process by analyzing the user's request message.

그러나, 본 발명의 바람직한 실시예에 따른 프론트 엔드 프로세스부(304)는 요청 메시지를 수신할 경우 직접 쿼리문을 생성하지는 않으며, 요청 메시지에 상응하는 쿼리명 및 파라미터만을 생성하여 SQL 맵 프로세스부(306)에 제공한다.However, when the front end processor 304 according to the preferred embodiment of the present invention receives a request message, the front end processor 304 does not directly generate a query statement, but generates only a query name and a parameter corresponding to the request message. To provide.

여기서, 쿼리명은 프론트 엔드 프로스세스(304) 및 SQL 맵 프로세스부(306) 사이에 임의로 정해진 쿼리의 명칭이며, 파라미터는 컨텐츠 아이디, 사용자 아이디 등과 같이 쿼리문 생성에 필요한 정보를 의미한다. Here, the query name is a name of a query arbitrarily determined between the front end process 304 and the SQL map processor 306, and the parameter means information necessary for generating a query statement, such as a content ID and a user ID.

SQL 맵 프로세스부(306)는 프론트 엔드 프로세스부(304)로부터 쿼리명/파라미터를 수신하여 쿼리명/파라미터에 상응하는 쿼리문을 생성하는 기능을 한다. 생성된 쿼리문은 피어 데이터베이스(308)에서 인식 가능한 언어로서 피어 데이터베이스(308)에 제공된다. The SQL map processor 306 receives a query name / parameter from the front end processor 304 and generates a query statement corresponding to the query name / parameter. The generated query statement is provided to the peer database 308 as a language recognizable by the peer database 308.

이와 같이 사용자로부터의 요청 메시지를 수신하여 처리하는 프로세스와 사용자의 요청 메시지에 상응하는 프로세스를 분리하는 본 발명의 실시예는 다양한 장점을 가지고 있다. As described above, an embodiment of the present invention which separates a process corresponding to a request message from a user from a process of receiving and processing a request message from a user has various advantages.

우선, 메시지 및 커넥션 처리 프로세스와 쿼리 프로세스를 분리함으로써 서버의 상태에 따라 프로세스를 효율적으로 생성하는 것이 가능하다. 예를 들어, 커넥션 처리 및 메시지 처리 요청이 쿼리 요청에 비해 많을 경우 피어 관리 서버는 더 많은 수의 프론트 엔드 프로세스부를 생성하여 운용할 수 있다. 또한, 메시지 처리에 비해 쿼리문 생성에 보다 많은 리소스가 소요되는 경우, 피어 관리 서버는 더 많은 수의 SQL 맵 프로세스부를 생성하여 운용할 수 있다. 즉, 서버의 상태에 따라 프론트 엔드 프로세스부 및 SQL 맵 프로세스부를 적절히 생성함으로써 서버 제한된 리소스를 효율적으로 활용할 수 있다. First, by separating the message and connection processing process from the query process, it is possible to efficiently create a process according to the state of the server. For example, when there are more connection processing and message processing requests than query requests, the peer management server may generate and operate a larger number of front end processes. In addition, when more resources are required to generate query statements than message processing, the peer management server may generate and operate a larger number of SQL map processors. In other words, by properly generating the front-end process unit and the SQL map process unit according to the state of the server, it is possible to efficiently utilize the server limited resources.

아울러, 데이터베이스가 변경되더라도 SQL 맵 프로세스부만 갱신될 뿐 프론트 엔드 프로세스부는 갱신될 필요가 없으므로 데이터베이스의 업데이트 시 소요되는 시간 및 비용이 절감될 수 있으며, 다수의 데이터베이스가 사용될 경우 이들에 대한 중앙 집중적인 관리가 용이해진다. In addition, even if the database is changed, only the SQL map process unit is updated, and the front-end process unit does not need to be updated, thereby reducing the time and cost required for updating the database. Management becomes easy.

피어 데이터베이스(308)에는 SQL 맵 프로세스부의 쿼리문에 따라 접속한 피어들의 정보가 추가/삭제/갱신된다. 본 발명의 일 실시예에 따르면, 피어 데이터베이스(308)에는 등록된 피어의 사용자 아이디, 피어 주소, 피어가 저장하고 있는 컨텐츠 정보가 저장될 수 있다. 또한 피어 데이터베이스(308)에는 각 피어별로 차후에 설명할 랜덤 아이디 정보가 저장된다. The peer database 308 adds, deletes, or updates information of peers connected according to a query statement of the SQL map processor. According to an embodiment of the present invention, the peer database 308 may store a user ID of a registered peer, a peer address, and content information stored by the peer. In addition, the peer database 308 stores random ID information for each peer to be described later.

상태 판단부(300)는 피어 관리 서버의 상태를 판단하는 기능을 하며, 여기서 상태 판단은 메시지 및 커넥션 처리를 위해 서버 리소스가 많이 소요되는지 또는 쿼리문 생성을 위해 서버 리소스가 많이 소요되는지 여부를 판단한다. The state determination unit 300 functions to determine the state of the peer management server, where the state determination determines whether server resources are consumed for message and connection processing or server resources are generated for query statement generation. do.

프로세서 생성 제어부(302)는 상태 판단부(300)의 판단 결과에 따라 프론트 엔드 프로세스부(304) 또는 SQL 맵 프로세스부(306)를 생성 또는 소멸시키는 기능을 한다. The processor generation controller 302 functions to generate or destroy the front end processor 304 or the SQL map processor 306 according to the determination result of the state determination unit 300.

도 3에는 피어 관리 서버가 프론트 엔드 프로세스부 및 SQL 맵 프로세스부를 모두 수행하는 경우가 도시되어 있으나, 프론트 엔드 프로세스부 및 SQL 맵 프로세스부가 별개의 서버에 의해서 수행되는 시스템이 구현될 수도 있다는 점은 당업자에게 있어 자명할 것이다. Although FIG. 3 illustrates a case in which the peer management server performs both the front end process unit and the SQL map process unit, a system in which the front end process unit and the SQL map process unit are performed by separate servers may be implemented. It will be obvious to you.

도 4는 본 발명의 바람직한 일 실시예에 따른 에이전트 프로그램의 모듈 구성을 도시한 블록도이다. 4 is a block diagram illustrating a module configuration of an agent program according to an exemplary embodiment of the present invention.

도 4를 참조하면, 본 발명의 일 실시예에 따른 에이전트 프로그램은 다운로드 체크 모듈(400), 연결 설정 모듈(402), 피어 등록/해제 모듈(404), 피어 정보 수신 모듈(406), 피어 연결 설정 모듈(408) 및 컨텐츠 저장 모듈(410)을 포함할 수 있다. Referring to FIG. 4, the agent program according to an embodiment of the present invention includes a download check module 400, a connection establishment module 402, a peer registration / release module 404, a peer information receiving module 406, and a peer connection. It may include a configuration module 408 and a content storage module 410.

다운로드 체크 모듈(400)은 에이전트 프로그램이 다른 피어로부터 컨텐츠를 다운로드하는 상태인지 여부를 체크하는 기능을 한다. 전술한 바와 같이, 본 발명의 바람직한 실시예에 따르면, 다운로드 상태인지 여부에 따라 피어가 액티브 또는 인액티브 상태로 등록되는 바 다운로드 체크 모듈(400)은 에이전트 프로그램이 다운로드 상태인지 여부를 지속적으로 체크한다. The download check module 400 checks whether the agent program is in a state of downloading content from another peer. As described above, according to the preferred embodiment of the present invention, the download check module 400 continuously checks whether the agent program is in the download state as the peer is registered in the active or inactive state according to whether it is in the download state. .

연결 설정 모듈(402)은 피어 관리 서버와의 연결을 설정하는 기능을 한다. 통상적으로, P2P 에이전트 프로그램은 연결 설정 시 피어 등록 요청 메시지를 전송하나, 본 발명의 바람직한 실시예에 따르면, 연결 설정 모듈(402)은 피어 관리 서버와의 연결 설정만을 수행하며, 연결 설정 시 피어 등록 요청 메시지를 전송하지는 않는다. 전술한 바와 같이, 연결 설정 모듈(402)은 피어 관리 서버(402)와 TCP 연결 설정을 수행할 수 있으며, 필요에 따라 UDP 커넥션을 설정할 수도 있다. The connection establishment module 402 functions to establish a connection with a peer management server. Typically, the P2P agent program transmits a peer registration request message when establishing a connection, but according to a preferred embodiment of the present invention, the connection establishment module 402 performs only connection establishment with a peer management server and registers a peer when establishing a connection. It does not send a request message. As described above, the connection establishment module 402 may perform TCP connection establishment with the peer management server 402 and may establish a UDP connection as necessary.

피어 등록/해제 모듈(404)은 다운로드 체크 모듈(400)의 다운로드 체크 결과 에 따라 피어 등록 요청 메시지 또는 피어 등록 해제 요청 메시지를 생성하여 전송하는 기능을 한다. The peer registration / release module 404 functions to generate and transmit a peer registration request message or a peer deregistration request message according to the download check result of the download check module 400.

다운로드 체크 모듈(400)에서 다운로드 상태가 감지된 경우, 피어 등록/해제 모듈(404)은 피어 등록 요청 메시지를 피어 관리 서버에 전송하며 피어 관리 서버는 피어 등록 절차를 수행한다. 피어 등록 요청 시, 클라이언트에 저장된 컨텐츠 정보가 피어 등록 요청 메시지에 포함된다. When the download status is detected in the download check module 400, the peer registration / release module 404 sends a peer registration request message to the peer management server and the peer management server performs a peer registration procedure. In the peer registration request, content information stored in the client is included in the peer registration request message.

다운로드 체크 모듈(400)에서 다운로드 완료 상태가 감지된 경우, 피어 등록/해제 모듈(404)은 피어 등록 해제 요청 메시지를 피어 관리 서버에 전송하며, 피어 관리 서버는 피어 등록 해제 절차를 수행한다. When the download completion status is detected by the download check module 400, the peer registration / deactivation module 404 transmits a peer deregistration request message to the peer management server, and the peer management server performs a peer deregistration procedure.

피어 정보 수신 모듈(406)은 피어 관리 서버에 컨텐츠를 요청하고 피어 관리 서버로부터 피어 정보를 수신하는 기능을 한다. 피어 정보 수신 모듈(406)은 컨텐츠 요청 메시지를 생성하여 피어 관리 서버에 전송하며, 컨텐츠 요청 메시지에는 컨텐츠를 식별할 수 있는 컨텐츠 아이디 정보가 포함된다. 피어 정보 수신 모듈(406)은 컨텐츠 요청 메시지에 응답하는 피어 정보를 피어 관리 서버로부터 수신한다. 여기서 피어 정보는 하나의 피어만을 포함할 수도 있으며 복수의 피어 리스트를 포함할 수도 있다. The peer information receiving module 406 functions to request content from the peer management server and to receive peer information from the peer management server. The peer information receiving module 406 generates and sends a content request message to the peer management server, and the content request message includes content ID information for identifying the content. Peer information receiving module 406 receives peer information from the peer management server in response to the content request message. Here, the peer information may include only one peer or may include a plurality of peer lists.

피어 연결 설정 모듈(408)은 피어 정보 수신 모듈(406)이 수신한 피어 정보에 기초하여 컨텐츠를 수신할 피어와 연결을 설정하여 컨텐츠를 다운로드하는 기능을 한다. 피어와 연결을 설정하여 컨텐츠를 다운로드하는 것을 일반적인 P2P 기술이므로 이에 대한 상세한 설명은 생략하기로 한다. The peer connection establishment module 408 establishes a connection with the peer to receive the content and downloads the content based on the peer information received by the peer information receiving module 406. Since downloading a content by establishing a connection with a peer is a general P2P technology, a detailed description thereof will be omitted.

컨텐츠 저장 모듈(410)은 다른 피어로부터 수신하는 컨텐츠 정보를 미리 설정된 영역에 저장하는 기능을 한다. 사용자가 수신한 컨텐츠를 불법적으로 유용하지 못하도록 컨텐츠 저장 모듈(410)은 수신한 컨텐츠를 암호화하여 저장하는 것이 바람직하다. The content storage module 410 functions to store content information received from another peer in a preset area. The content storage module 410 preferably encrypts and stores the received content so that the received content is not illegally useful.

도 5는 본 발명의 바람직한 일 실시예에 따른 프론트 엔드 프로세스부의 모듈 구성을 도시한 블록도이다. 5 is a block diagram illustrating a module configuration of a front end process unit according to an exemplary embodiment of the present invention.

도 5를 참조하면, 본 발명의 일 실시예에 따른 프론트 엔드 프로세스부는 인증 모듈(500), 연결 설정 모듈(502), 에이전트 통신 모듈(504), 랜덤 아이디 할당 모듈(506), 쿼리명/파라미터 생성 모듈(508) 및 랜덤 범위 설정 모듈(510)을 포함할 수 있다. Referring to FIG. 5, the front end process unit according to an embodiment of the present invention may include an authentication module 500, a connection establishment module 502, an agent communication module 504, a random ID allocation module 506, and a query name / parameter. It may include a generation module 508 and a random range setting module 510.

인증 모듈(500)은 연결 설정을 요청하는 사용자가 인증된 사용자인지 여부를 판단하는 기능을 한다. 일례로, 인증 모듈(500)은 사용자 아이디 및 비밀번호 정보를 이용하여 인증된 사용자인지 여부를 판단할 수 있다. 물론, 이와 달리 인증서를 이용한 인증 방식과 같이 공지된 다양한 인증 방식이 이용될 수 있다. 인증 모듈(500)은 별도의 인증 서버와 연동하여 사용자 인증을 처리할 수 있다. The authentication module 500 determines whether the user requesting connection establishment is an authenticated user. For example, the authentication module 500 may determine whether the user is an authenticated user by using user ID and password information. Of course, a variety of well-known authentication methods, such as an authentication method using a certificate, may be used. The authentication module 500 may process user authentication in association with a separate authentication server.

연결 설정 모듈(502)은 P2P 네트워크에 접속하려는 사용자 클라이언트와의 연결 설정을 수행한다. 연결 설정은 에이전트 프로그램에 의해 제어되는 사용자 클라이언트가 TCP 접속 요청 메시지를 전송하고 연결 설정 모듈(502)이 이를 수락하는 방식으로 수행될 수 있다. 물론 필요에 따라 UDP 커넥션이 설정될 수도 있다. The connection establishment module 502 performs connection establishment with a user client that wants to connect to a P2P network. Connection establishment may be performed in such a way that a user client controlled by an agent program sends a TCP connection request message and the connection establishment module 502 accepts it. Of course, UDP connections can be set up as needed.

에이전트 통신 모듈(504)은 에이전트 프로그램이 생성하는 요청 메시지들을 수신하고 이에 대한 응답 메시지를 사용자 클라이언트에 전송하는 기능을 한다. 전술한 바와 같이, 요청 메시지는 피어 등록 요청 메시지, 피어 등록 해제 요청 메시지 및 컨텐츠 요청 메시지를 포함할 수 있으며, 에이전트 통신 모듈(504)은 상술한 메시지들에 대한 응답 메시지를 해당 사용자 클라이언트에 전송한다. The agent communication module 504 functions to receive request messages generated by the agent program and transmit a response message to the user client. As described above, the request message may include a peer registration request message, a peer deregistration request message, and a content request message, and the agent communication module 504 transmits a response message to the above-described messages to the corresponding user client. .

랜덤 아이디 할당 모듈(506)은 피어 등록 요청 메시지를 수신할 경우 각 피어에 랜덤 아이디를 할당하는 기능을 한다. 랜덤 아이디 할당은 피어 정보를 클라이언트에 제공 시 랜덤하게 피어 정보를 제공하기 위해 수행되는 작업이다. 본 발명의 실시예에 따라 동적으로 변하는 피어 정보가 데이터베이스에 저장될 경우, 데이터베이스 쿼리문을 통해 사용자의 요청에 상응하는 피어 정보를 랜덤하게 추출하는 것이 불가능하다. 랜덤 아이디 할당 모듈(506)은 이와 같은 문제점을 해결하기 위한 작업이다. The random ID assignment module 506 functions to assign a random ID to each peer when receiving a peer registration request message. Random ID assignment is a task performed to randomly provide peer information when providing peer information to a client. According to an embodiment of the present invention, when dynamically changing peer information is stored in a database, it is impossible to randomly extract peer information corresponding to a user's request through a database query statement. The random ID assignment module 506 is a task for solving such a problem.

랜덤 범위 설정 모듈(510)은 컨텐츠 요청 메시지와 같이 피어 선택을 요청하는 메시지가 수신될 경우, 피어 선택을 위한 번호 범위를 랜덤하게 설정하는 기능을 한다. 랜덤하게 설정된 범위는 파라미터로 출력되며, SQL 맵 프로세스부는 피어 선택 시 랜덤 범위 설정 모듈에서 설정한 범위를 이용하여 피어 선택 쿼리문을 생성한다. The random range setting module 510 functions to randomly set a number range for peer selection when a message for requesting peer selection, such as a content request message, is received. The randomly set range is output as a parameter, and the SQL map processor generates a peer selection query using the range set in the random range setting module when selecting a peer.

도 5에는 각 피어의 번호도 랜덤하게 부여하고 피어를 선택하기 위한 범위도 랜덤하게 설정하는 실시예가 도시되어 있다. FIG. 5 illustrates an embodiment in which each peer is also randomly assigned a number and a range for randomly selecting a peer is also set.

그러나, 피어의 번호는 순차적으로 부여하되 범위를 랜덤하게 설정하는 실시예 및 피어의 번호는 랜덤하게 부여하되 범위는 고정적으로 설정하는 실시예에 의 해서도 피어의 랜덤 선택이 가능할 것이다. However, the peers may be randomly selected according to an embodiment in which the number of peers is sequentially assigned but the ranges are randomly set, and the number of peers is randomly set but the range is fixedly set.

피어의 랜덤 선택을 위한 보다 상세한 방법은 별도의 도면을 통해 설명하기로 한다. A more detailed method for random selection of peers will be described with reference to separate drawings.

쿼리명/파라미터 생성 모듈(508)은 에이전트 통신 모듈이 수신한 메시지 처리를 위한 쿼리명 및 파라미터를 생성한다. 전술한 바와 같이, 프론트 엔드 프로세스부는 메시지 처리를 위한 쿼리문을 직접 생성하지는 않으며, 수신한 메시지에 상응하는 쿼리명 및 파라미터만을 생성하여 SQL 맵 프로세스부에 전달한다. The query name / parameter generation module 508 generates a query name and parameters for processing a message received by the agent communication module. As described above, the front end process unit does not directly generate a query statement for processing a message, but generates only a query name and a parameter corresponding to the received message and transfers it to the SQL map process unit.

예를 들어, 피어 등록 요청 메시지를 수신한 경우, 쿼리명/파라미터 생성 모듈(508)은 RegisterPeer라는 미리 설정된 쿼리명고 피어 등록 요청 메시지에 포함된 사용자 아이디, 주소 및 컨텐츠 정보에 상응하는 파라미터를 생성하여 SQL 맵 프로세스부에 전달한다. For example, when receiving a peer registration request message, the query name / parameter generation module 508 generates a parameter corresponding to a user ID, address, and content information, which is a preset query name called RegisterPeer and included in the peer registration request message. Passed to the SQL map process part.

도 7은 본 발명의 일 실시예에 따른 SQL 맵 프로세스부의 동작 구조를 도시한 도면이다. 7 is a diagram illustrating an operation structure of an SQL map processor according to an exemplary embodiment of the present invention.

도 7을 참조하면, SQL 맵 프로세스부는 프론트 엔드 프로세스부로부터 쿼리명 및 파라미터를 수신한다. 도 7에는 쿼리명 "GetUserInfo"와 파라미터 "junny"가 표시되어 있다. Referring to FIG. 7, the SQL map processor receives the query name and parameters from the front end processor. In Fig. 7, the query name "GetUserInfo" and the parameter "junny" are displayed.

이와 같이, SQL 맵 프로세스부는 쿼리명 및 파라미터를 SQL문으로 매핑하기 위한 정보를 가지고 있으며, 쿼리명 및 파라미터를 수신한 SQL 맵 프로세스부는 상기 매핑 정보를 이용하여 데이터베이스 랭귀지인 쿼리문을 출력한다. As such, the SQL map processor has information for mapping the query name and the parameter to the SQL statement, and the SQL map processor receiving the query name and the parameter outputs the query statement which is a database language using the mapping information.

이러한 쿼리문은 데이터베이스의 스키마 또는 객체들간의 관계를 정의하는 데이터베이스 정의문, 데이터베이스 데이터의 삽입/삭제/갱신과 같은 조작을 위한 데이터베이스 조작문, 데이터베이스의 데이터를 올바르게 유지하고 무결성을 확보하기 위한 데이터베이스 제어문을 모두 포함할 수 있다. These query statements include database definition statements that define the relationships between schemas or objects in the database, database operations for operations such as inserting / deleting / updating database data, and database control statements to correctly maintain data and ensure integrity. It can include both.

본 발명의 일 실시예에 따르면, 매핑 정보는 XML 형태의 문서로 저장될 수 있다. According to an embodiment of the present invention, the mapping information may be stored as a document in XML format.

도 7에 도시된 바와 같이, 쿼리명 "GetUserInfo"에 대한 매핑을 위한 XML 문서는 다음과 같이 정의될 수 있다. As shown in FIG. 7, an XML document for mapping to the query name “GetUserInfo” may be defined as follows.

<select name= "GetUserInfo"><select name = "GetUserInfo">

<param name = "id" type="string"/> <param name = "id" type = "string" />

<![CDATA[<! [CDATA [

SELECT ..... WHERE ID....:idSELECT ..... WHERE ID ....: id

]]>]]>

</select></ select>

상술한 바와 같은 XML 매핑 정보를 이용하여 도 7에 도시된 바와 같이 SELECT...WHERE ID+ : id, :id=foo라는 쿼리문을 생성하여 피어 데이터베이스에 제공한다. As shown in FIG. 7, the query statements SELECT ... WHERE ID +: id and: id = foo are generated and provided to the peer database using the XML mapping information as described above.

피어 데이터베이스는 상술한 쿼리문을 수신하여 foo라는 사용자의 사용자 정보를 추출한다. The peer database receives the above-described query statement and extracts user information of the user foo.

도 8은 본 발명의 일 실시예에 따른 SQL 맵 프로세스부와 데이터베이스와의 연결 구조의 일례을 도시한 도면이다. 8 is a diagram illustrating an example of a connection structure between an SQL map processor and a database according to an embodiment of the present invention.

도 8에 도시된 바와 같이, SQL 맵 프로세스부는 프론트 엔드 프로세스부와는 독립적으로 다수의 데이터베이스와 연결될 수 있다. 또한, 데이터베이스가 추가되더라도 프론트 엔드 및 클라이언트의 에이전트 프로그램의 코드는 변경될 필요가 없으며, SQL 맵 프로세스부의 코드만 변경된다. As illustrated in FIG. 8, the SQL map processor may be connected to a plurality of databases independently of the front end processor. In addition, even if a database is added, the code of the agent program of the front end and the client does not need to be changed, and only the code of the SQL map processing unit is changed.

아울러, 코드 및 SQL이 섞이지 않고 SQL이 SQL 맵 프로세스부에서 관리되므로 SQL 대한 중앙 집중적인 관리가 가능하다. 특히, 모니터링 및 통계 정보를 산출하기 용이하며 수행 시간이 긴 비정상 쿼리문 역시 쉽게 검출해낼 수 있다.  In addition, SQL is managed in the SQL Map process section without mixing code and SQL, allowing centralized management of SQL. In particular, it is easy to calculate monitoring and statistical information, and abnormal query statements with a long execution time can be easily detected.

도 6은 본 발명의 일 실시예에 따른 P2P 시스템의 전체적인 동작을 도시한 순서도이다. 6 is a flowchart illustrating the overall operation of a P2P system according to an embodiment of the present invention.

도 6을 참조하면, 우선 사용자 클라이언트는 에이전트 프로그램을 통해 특정 컨텐츠를 요청하는 컨텐츠 요청 메시지를 피어 관리 서버에 전송한다(S600). Referring to FIG. 6, first, a user client transmits a content request message for requesting a specific content to a peer management server through an agent program (S600).

컨텐츠 요청 메시지를 수신한 피어 관리 서버는 사용자 클라이언트가 요청한 컨텐츠를 저장하고 있는 피어 정보를 추출하고, 피어 정보를 사용자에게 전송하며, 사용자는 피어 정보를 수신한다(S602). 본 발명의 바람직한 실시예에 따르면, 특정 컨텐츠를 저장하고 있는 피어 정보가 사용자 클라이언트들에 유니폼하게 제공될 수 있도록 피어를 랜덤하게 선택하는 것이 바람직하며, 이를 위한 상세한 실시예는 후술하기로 한다. Upon receiving the content request message, the peer management server extracts the peer information storing the content requested by the user client, transmits the peer information to the user, and the user receives the peer information (S602). According to a preferred embodiment of the present invention, it is preferable to randomly select a peer so that peer information storing specific content can be uniformly provided to user clients, and a detailed embodiment thereof will be described later.

피어 정보를 수신한 사용자 클라이언트는 에이전트 프로그램에 의해 피어 정보에 포함된 주소 정보를 이용하여 해당 피어와의 연결을 설정한다(S604). 해당 피어와의 연결이 설정되면, 사용자 클라이언트는 연결이 설정된 피어로부터 컨텐츠를 운로드한다(S606). Upon receiving the peer information, the user client establishes a connection with the corresponding peer by using the address information included in the peer information by the agent program (S604). When the connection with the corresponding peer is established, the user client downloads content from the peer with which the connection is established (S606).

다른 피어로부터 다운로드를 개시하는 것이 감지되면, 에이전트 프로그램은 사용자 클라이언트가 액티브 피어로 등록되도록 피어 등록 절차를 수행한다(S608). If it is detected to start downloading from another peer, the agent program performs a peer registration procedure so that the user client is registered as an active peer (S608).

액티브 피어로 등록되면, 다른 사용자 클라이언트가 컨텐츠를 요청할 수 있으며, 다른 사용자 클라이언트의 컨텐츠 요청에 응답하여 컨텐츠를 전송하는 절차를 수행한다(S610). When registered as an active peer, another user client may request content, and performs a procedure of transmitting content in response to the content request of the other user client (S610).

에이전트 프로그램은 사용자 클라이언트의 다운로드가 완료되는지 여부를 모니터링한다(S612). The agent program monitors whether the download of the user client is completed (S612).

다운로드가 완료되면, 에이전트 프로그램은 피어 등록 해제 요청 메시지를 피어 관리 서버에 전달하여 피어 액티브 상태를 해제한다(S614). When the download is completed, the agent program releases the peer active state by transmitting a peer deregistration request message to the peer management server (S614).

도 9는 본 발명의 바람직한 일 실시예에 따른 피어 등록 과정을 도시한 순서도이다.  9 is a flowchart illustrating a peer registration process according to an embodiment of the present invention.

도 9를 참조하면, 사용자 클라이언트에 설치된 에이전트 프로그램은 사용자 클라이어트가 다른 피어로부터 컨텐츠를 다운로드하는 상태인지 여부를 모니터링한다(S900). Referring to FIG. 9, the agent program installed in the user client monitors whether the user client downloads content from another peer (S900).

컨텐츠 다운로드가 감지될 경우, 에이전트 프로그램은 피어 등록 요청 메시지를 생성한다(S902). 도 12는 본 발명의 일 실시예에 따른 피어 등록 요청 메시지의 필드 구성을 도시한 도면이다. When the content download is detected, the agent program generates a peer registration request message (S902). 12 illustrates a field configuration of a peer registration request message according to an embodiment of the present invention.

도 12을 참조하면, 피어 등록 요청 메시지는 식별자(1200), 사용자 아이디(1202), 주소(1204) 및 컨텐츠 아이디(1206)를 포함할 수 있다. Referring to FIG. 12, the peer registration request message may include an identifier 1200, a user ID 1202, an address 1204, and a content ID 1206.

식별자(1200)는 피어 등록 요청 메시지임을 식별하기 위한 미리 설정된 코드 정보이다. The identifier 1200 is preset code information for identifying the peer registration request message.

사용자 아이디(1202)는 피어 등록을 요청하는 사용자의 아이디 정보이며, 주소(1204)는 사용자 클라이언트의 아이피 주소 및 포트 번호를 포함할 수 있다. 컨텐츠 아이디(1206)는 사용자 클라이언트가 보유하고 있는 컨텐츠를 식별할 수 있는 아이디 정보이다. 컨텐츠는 서비스 제공자에 의해 제공되는 컨텐츠는 물론 사용자에 의해 제작된 컨텐츠(User Created Contents: UCC) 역시 포함할 수 있다. The user ID 1202 is ID information of a user requesting peer registration, and the address 1204 may include an IP address and a port number of a user client. The content ID 1206 is ID information for identifying content held by the user client. The content may include not only content provided by the service provider but also user created content (UCC).

생성된 피어 등록 요청 메시지는 프론트 엔드 프로세스부에서 수신되며(S904), 프론트 엔드 프로세스부는 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 요청 메시지에 포함된 사용자 아이디, 주소 및 컨텐츠 아이디에 대한 파라미터를 생성한다(S906). The generated peer registration request message is received by the front end processor (S904), and the front end processor receives the query name corresponding to the peer registration request message and parameters for the user ID, address, and content ID included in the peer registration request message. It generates (S906).

생성된 쿼리명 및 파라미터는 SQL 맵 프로세스부에 전달되며, SQL 맵 프로세스부는 매핑 정보를 이용하여 전달된 쿼리명 및 파라미터에 상응하는 쿼리문을 생성하며(S910), 생성되는 쿼리문은 새로운 피어 정보(사용자 아이디, 주소, 컨텐츠 아이디)를 데이터베이스에 삽입하기 위한 쿼리문이다. The generated query name and parameters are transferred to the SQL map process unit, and the SQL map process unit generates a query statement corresponding to the transmitted query name and parameters using the mapping information (S910), and the generated query statement is a new peer information. Query statement for inserting (user ID, address, content ID) into the database.

도 10은 본 발명의 바람직한 일 실시예에 따른 피어 관리 서버에서 피어 정보를 제공하는 과정을 도시한 순서도이다. 10 is a flowchart illustrating a process of providing peer information in a peer management server according to an exemplary embodiment of the present invention.

도 10을 참조하면, 사용자 클라이언트는 특정 컨텐츠의 아이디 정보를 포함하는 컨텐츠 요청 메시지를 프론트 엔드 프로세스부에 전송한다(S1000). Referring to FIG. 10, the user client transmits a content request message including ID information of specific content to the front end processor (S1000).

프론트 엔드 프로세스부는 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성한다(S1002). The front end processor generates a parameter for a query name corresponding to the content request message and a content ID included in the content request message (S1002).

생성된 쿼리명 및 파라미터는 SQL 맵 프로세스부에 전달되며, SQL 맵 프로세스부는 파라미터 및 쿼리명을 이용하여 요청된 컨텐츠를 보유하고 있는 피어를 랜덤하게 선택하기 위한 쿼리문을 생성한다(S1006). 랜덤 선택을 위한 쿼리문은 도 11을 참조하여 후에 설명하기로 한다. The generated query name and parameters are transferred to the SQL map processor, and the SQL map processor generates a query statement for randomly selecting a peer that holds the requested content using the parameters and the query name (S1006). A query statement for random selection will be described later with reference to FIG. 11.

SQL 맵 프로세스부는 생성된 쿼리문에 상응하는 데이터베이스의 피어 정보를 수신하고(1008), 수신된 피어 정보는 프론트 엔드 프로세스부에 제공된다(S1010).The SQL map process unit receives the peer information of the database corresponding to the generated query statement (1008), and the received peer information is provided to the front end process unit (S1010).

프론트 엔드 프로세스부는 피어 정보를 사용자 클라이언트에 전송하며(S1012), 사용자 클라이언트는 제공된 피어 정보를 이용하여 해당 피어와 연결을 설정하고 컨텐츠를 다운로드한다(S1014). The front end processor transmits the peer information to the user client (S1012), and the user client establishes a connection with the corresponding peer using the provided peer information and downloads the content (S1014).

도 11은 본 발명의 바람직한 일 실시예에 따른 사용자가 요청한 컨텐츠를 보유한 피어를 랜덤하게 선택하기 위한 과정을 도시한 순서도이다. 11 is a flowchart illustrating a process for randomly selecting a peer having content requested by a user according to an exemplary embodiment of the present invention.

전술한 바와 같이, 본 발명과 같이 동적으로 계속 변하는 피어 정보가 데이터베이스에 의해 관리될 경우, 각 피어에 대한 커넥션이 균일하게 유지되도록 피어를 랜덤하게 선택하기가 어렵다. 이는 데이터베이스가 특정 조건에 해당하는 데이터를 추출하도록 구성되며, 랜덤 선택을 위한 데이터베이스 쿼리문이 제공되지 않기 때문이다. As described above, when dynamically changing peer information, such as the present invention, is managed by a database, it is difficult to randomly select a peer so that the connection to each peer is kept uniform. This is because the database is configured to extract data corresponding to a specific condition, and a database query statement for random selection is not provided.

이를 위해, 본 발명의 바람직한 실시예에 따르면, 사용자 클라이언트가 피어 등록 시 각 사용자에게 랜덤하게 번호 아이디를 할당한다(S1100). 프론트 엔드 프로세스부는 데이터베이스 및 쿼리문과는 무관한 프로세스부이므로 일반적인 랜덤 함수를 이용하여 각 피어에 랜덤 번호 아이디를 부여하는 것이 가능하다. To this end, according to a preferred embodiment of the present invention, the user client randomly assigns a number ID to each user at the time of peer registration (S1100). The front end process unit is a process unit irrelevant to a database and a query statement, so it is possible to assign a random number ID to each peer using a general random function.

랜덤 아이디가 부여되면, SQL 맵 프로세스부는 피어 정보에 포함되는 사용자 아이디, 주소 및 컨텐츠 정보에 추가하여 랜덤 아이디가 함께 데이터베이스에 저장되도록 한다(S1102). If a random ID is given, the SQL map processor adds the user ID, address, and content information included in the peer information so that the random ID is stored together in the database (S1102).

특정 컨텐츠를 저장하고 있는 피어 정보가 요청될 경우(S1104), 프론트 엔드 프로세스부는 랜덤하게 피어 선택을 위한 범위를 설정하며, 랜덤하게 설정된 범위를 지정하는 파라미터를 출력하고, SQL 맵 프로세스부는 상기 파라미터를 이용하여 지정된 범위에 있는 피어를 선택하기 위한 쿼리문을 생성한다(S1106).When peer information storing a specific content is requested (S1104), the front end process unit randomly sets a range for peer selection, outputs a parameter specifying a randomly set range, and the SQL map process unit sets the parameter. In operation S1106, a query statement for selecting a peer within a specified range is generated.

이러한 쿼리문은 일반적인 SELECT 구문 및 SELECT 구문에서 제공하는 범위 지정(<=. >=, between) 방식을 이용하여 생성될 수 있을 것이다. 예를 들어, 랜덤 아이디 10 내지 20 사이의 피어를 선택하기 위한 쿼리문이 생성될 수도 있으며, 랜덤 아이디 5 이하의 피어를 선택하기 위한 쿼리문이 생성될 수도 있을 것이다. Such a query statement can be generated by using the general SELECT statement and the range specification (<=.> =, Between) provided by the SELECT statement. For example, a query statement for selecting peers having random IDs 10 to 20 may be generated, and a query statement for selecting peers having random IDs 5 or less may be generated.

피어 데이터베이스는 SELECT 구문에 상응하는 피어를 선택하여 제공한다(S1108).  The peer database selects and provides a peer corresponding to the SELECT statement (S1108).

전술한 바와 같이, 랜덤 아이디 부여 및 랜덤 범위 설정 중 어느 하나만을 랜덤하게 처리함으로써 랜덤 선택이 가능할 수도 있다. 예를 들어, 번호 아이디는 랜덤이 아닌 순차적으로 부여하되 피어 선택을 위한 번호 범위를 랜덤하게 설정함으로써 피어에 대한 랜덤 선택이 가능할 것이다. As described above, random selection may be possible by randomly processing any one of random ID grant and random range setting. For example, the number ID may be assigned sequentially rather than randomly, but random selection of a peer may be possible by randomly setting a number range for peer selection.

또 다른 예로, 각 피어에게는 랜덤하게 번호 아이디를 부여하되, 피어 선택을 위한 범위는 고정적으로 설정함으로써 피어에 대한 랜덤 선택이 가능할 수도 있 을 것이다. As another example, each peer may be randomly assigned a number ID, but the range for peer selection may be fixed so that random selection of peers may be possible.

이와 같이, 데이터베이스에서 랜덤 선택을 하기 어려운 문제점을 각 피어에 랜덤 아이디를 부여하고 부여된 랜덤 아이디가 데이터베이스에 함께 관리되도록 함으로써 컨텐츠를 보유한 피어에 대한 랜덤 선택이 가능하며, 이로 인해 피어들간의 커넥션 설정 시 특정 피어에 커넥션이 편중되지 않고 커넥션이 균일하게 분포될 수 있도록 제어하는 것이 가능하다. In this way, it is possible to randomly select a peer having content by assigning a random ID to each peer and managing the assigned random ID together in the database, which makes it difficult to make a random selection in the database. At this time, it is possible to control the connection to be uniformly distributed without biasing the connection to a specific peer.

이상에서 설명한 바와 같이, 본 발명의 바람직한 실시예에 따르면, P2P 시스템에 접속한 피어 정보를 데이터베이스에 의해 효율적으로 관리할 수 있는 장점이 있다.As described above, according to the preferred embodiment of the present invention, there is an advantage in that peer information connected to a P2P system can be efficiently managed by a database.

맵 프로세스부를 서버 상태에 따라 생성함으로써 서버 리소스를 보다 효율적으로 활용할 수 있는 장점이 있다. By generating the map process unit according to the server state, there is an advantage that can utilize the server resources more efficiently.

아울러, 본 발명의 바람직한 실시예에 따르면, 데이터베이스의 관리와 클라이언트의 메시지 처리를 이원화함으로써 데이터베이스의 확장 및 시스템 업그레이드 시 최소한의 수정으로 확장 및 업그레이드가 가능한 장점이 있다.In addition, according to a preferred embodiment of the present invention, by dualizing the management of the database and the message processing of the client, there is an advantage that can be expanded and upgraded with minimal modification when the database is expanded and the system upgrade.

나아가, 본 발명의 바람직한 실시예에 따르면, 다운로드 시에만 사용자 클라이언트가 액티브 피어로 동작하도록 함으로써 P2P 시스템 이용 시 사용자 클라이언트의 부하를 최소화할 수 있는 장점이 있다. Furthermore, according to a preferred embodiment of the present invention, the user client operates as an active peer only at the time of downloading, thereby minimizing the load of the user client when using the P2P system.

Claims (13)

P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지를 수신하고, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 프로세스부;A front end processor configured to establish a connection with peers connected to a P2P system, receive a message from the peers, and generate a query name and a parameter corresponding to the received message for message processing; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 프로세스부로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 프로세스부; 및An SQL map processor including mapping information for mapping the query name and parameters into query statements and outputting query statements corresponding to the query names and parameters received from the front end processor; And 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 프로세스부에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버. A peer-to-peer system comprising: a peer database that maintains information of peers operating as active peers and content information held by each peer, and updates or extracts data according to a query statement output from the SQL map processor. Peer Management Server on. 제1항에 있어서, The method of claim 1, 사용자 접속 및 메시지 처리 상태와 쿼리문 생성 상태를 체크하는 상태 판단부; 및A state determination unit which checks a user connection and message processing state and a query statement generation state; And 상기 상태 판단부의 판단 결과에 상응하여 상기 사용자 접속 및 메시지 처리를 위한 프론트 엔드 프로세스부 및 상기 쿼리문 생성을 위한 SQL 맵 프로세스부의 생성 및 소멸을 제어하는 프로세스 생성 제어부를 더 포함하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버. P2P further comprises a process generation control unit for controlling the generation and destruction of the front end processor for the user connection and message processing and the SQL map processor for generating the query statement in accordance with the determination result of the state determination unit Peer management server on the system. 제1항에 있어서,The method of claim 1, 상기 피어들에는 상기 피어 관리 서버 및 다른 피어와의 통신을 위한 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 피어가 다운로드 상태인지 여부를 판단하여 피어를 액티브 피어로 등록하기 위한 피어 등록 요청 메시지 및 피어 등록 해제 요청 메시지를 전송하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버. The peers are provided with an agent program for communication with the peer management server and other peers, and the agent program determines whether the peer is in a download state and registers a peer registration request message and peer for registering the peer as an active peer. Peer management server in a P2P system, characterized in that for transmitting a release request message. 제1항에 있어서, The method of claim 1, 상기 SQL 맵 프로세스부는 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 XML 문서로 저장하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버. The SQL map processor is a peer management server in a P2P system, characterized in that for storing the mapping information for mapping the query name and parameters to a query statement as an XML document. 제3항에 있어서,The method of claim 3, 상기 등록 요청 메시지는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하며, 상기 프론트 엔드 프로세스부는 상기 피어 등록 요청 메시지에 상응하는 미리 설정된 쿼리명 및 상기 사용자 아이디, 주소 및 보유한 컨텐츠 정보에 대한 파라미터를 생성하며, 상기 SQL 맵 프로세스부는 상기 프론트 엔드 프로세스부로부터의 쿼리명 및 파라미터를 분석하여 쿼리문을 생성하여 상기 피어 데이터베이스로부터 피어 정보를 추출하는 것을 특징으로 하는 P2P 시스템에서의 피어 관리 서버. The registration request message includes a user ID, an address, and retained content information. The front end processor generates a preset query name corresponding to the peer registration request message and parameters for the user ID, address, and retained content information. And the SQL map processor extracts peer information from the peer database by generating a query by analyzing query names and parameters from the front end processor. P2P 시스템에서 피어 정보 관리 방법으로서,As a method of managing peer information in a P2P system, P2P 시스템에 접속한 피어로부터 등록 요청 메시지를 수신하는 단계(a);(A) receiving a registration request message from a peer connected to the P2P system; 상기 피어 등록 요청 메시지에 상응하는 쿼리명 및 피어 등록 메시지를 분석하여 파라미터를 생성하는 단계(b);(B) analyzing a query name and a peer registration message corresponding to the peer registration request message to generate a parameter; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 이용하여 상기 등록 요청 메시지에 상응하는 쿼리문을 생성하는 단계(c);(C) generating a query statement corresponding to the registration request message by using mapping information for mapping the query name and parameters into a query statement; 상기 쿼리문에 의해 피어 정보 데이터베이스에 상기 피어를 액티브 피어로 등록하는 단계(d)를 포함하는 것을 특징으로 하는 피어 정보 관리 방법. And (d) registering the peer as an active peer in a peer information database by the query statement. 제 6항에 있어서,The method of claim 6, 상기 피어에는 에이전트 프로그램이 설치되며, 상기 에이전트 프로그램은 상기 피어가 컨텐츠 다운로드 상태인지 여부를 판단하여 상기 등록 요청 메시지를 전송하는 것을 특징으로 하는 피어 정보 관리 방법. An agent program is installed in the peer, and the agent program determines whether the peer is in a content download state and transmits the registration request message. 제7항에 있어서,The method of claim 7, wherein 상기 피어 등록 요청 메시지를 분석하여 생성되는 파라미터는 사용자 아이디, 주소 및 보유한 컨텐츠 정보를 포함하는 것을 특징으로 하는 피어 정보 관리 방법. The parameter generated by analyzing the peer registration request message includes a user ID, an address, and content information retained. 제6항에 있어서,The method of claim 6, 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보는 XML 형태로 저장되는 것을 특징으로 하는 피어 정보 관리 방법. The mapping information for mapping the query name and the parameter to the query statement is stored in the form of XML. 제6항에 있어서,The method of claim 6, 상기 단계 (d)이후, After step (d), (e)특정 피어로부터 컨텐츠 요청 메시지를 수신하는 단계;(e) receiving a content request message from a particular peer; (f)상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 컨텐츠 요청 메시지에 포함된 컨텐츠 아이디에 대한 파라미터를 생성하는 단계;generating parameters for a query name corresponding to the content request message and a content ID included in the content request message; (g)상기 매핑 정보를 이용하여 상기 컨텐츠 요청 메시지에 상응하는 쿼리명 및 상기 파라미터에 상응하는 피어 선택 쿼리문을 생성하는 단계; 및(g) generating a query name corresponding to the content request message and a peer selection query statement corresponding to the parameter using the mapping information; And (h)상기 피어 선택 쿼리문에 의해 상기 피어 데이터베이스로부터 상기 컨텐츠 아이디와 연관된 컨텐츠를 보유한 피어를 선택하는 단계를 더 포함하는 것을 특징으로 하는 피어 정보 관리 방법. (h) selecting a peer having content associated with the content ID from the peer database by the peer selection query statement. 제6항에 있어서,The method of claim 6, 상기 단계(b) 및 상기 단계(c)는 별도의 프로세스부에 의해 처리되며, 상기 단계(b) 처리를 위한 프로세스부와 상기 단계 (c) 처리를 위한 프로세스부의 생성 및 소멸을 제어하는 단계를 더 포함하는 것을 특징으로 하는 피어 정보 관리 방법.The step (b) and the step (c) are processed by a separate process unit, and the step of controlling the generation and destruction of the process unit for the process (b) and the process unit for the process (c) Peer information management method further comprising. P2P 시스템에 접속한 피어들과 커넥션을 설정하며 상기 피어들로부터 메시지 를 수신하며, 메시지 처리를 위해 수신된 메시지에 상응하는 쿼리명 및 파라미터를 생성하는 프론트 엔드 서버;A front end server establishing a connection with peers connected to a P2P system, receiving a message from the peers, and generating a query name and a parameter corresponding to the received message for message processing; 상기 쿼리명 및 파라미터를 쿼리문으로 매핑하기 위한 매핑 정보를 포함하고 있으며, 상기 프론트 엔드 서버로부터 수신한 쿼리명 및 파라미터에 상응하는 쿼리문을 출력하는 SQL 맵 서버; 및An SQL map server including mapping information for mapping the query name and the parameter to a query statement and outputting a query statement corresponding to the query name and the parameter received from the front-end server; And 액티브 피어로 동작하는 피어들의 정보 및 각 피어가 보유한 컨텐츠 정보를 유지하며, 상기 SQL 맵 서버에서 출력되는 쿼리문에 따라 데이터를 갱신하거나 데이터를 추출하는 피어 데이터베이스를 포함하는 것을 특징으로 하는 피어 정보 관리 시스템. Peer information management, comprising: a peer database that maintains information of peers acting as active peers and content information held by each peer, and updates or extracts data according to query statements output from the SQL map server. system. 제6항 내지 제 11항 중 어느 한 항의 방법을 수행하는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 디지털 데이터 처리 장치에 설치되어 상기 디지털 데이터 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체. A recording medium on which a program of instructions for performing the method of any one of claims 6 to 11 is tangibly embodied and which is installed in a digital data processing apparatus and records a program that can be read by the digital data processing apparatus.
KR1020060117170A 2006-11-24 2006-11-24 Peer Management Server and Peer Management Method in P2P System Active KR100836619B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060117170A KR100836619B1 (en) 2006-11-24 2006-11-24 Peer Management Server and Peer Management Method in P2P System
JP2009538314A JP5178734B2 (en) 2006-11-24 2007-11-12 Peer management server and peer management method in P2P system
PCT/KR2007/005660 WO2008062961A1 (en) 2006-11-24 2007-11-12 Peer management server in p2p system and peer management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117170A KR100836619B1 (en) 2006-11-24 2006-11-24 Peer Management Server and Peer Management Method in P2P System

Publications (2)

Publication Number Publication Date
KR20080047161A KR20080047161A (en) 2008-05-28
KR100836619B1 true KR100836619B1 (en) 2008-06-10

Family

ID=39429868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117170A Active KR100836619B1 (en) 2006-11-24 2006-11-24 Peer Management Server and Peer Management Method in P2P System

Country Status (3)

Country Link
JP (1) JP5178734B2 (en)
KR (1) KR100836619B1 (en)
WO (1) WO2008062961A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6887746B2 (en) * 2015-01-19 2021-06-16 エヌ・ティ・ティ・コミュニケーションズ株式会社 Terminal management system, terminal control device, terminal management method and communication control program

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040056074A (en) * 2002-12-23 2004-06-30 한국과학기술정보연구원 Apparatus and method of providing information for grid resources in grid network and computer readable recording medium of recording process thereof
US20040260761A1 (en) 2003-03-18 2004-12-23 Yves Leaute Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
KR20050084053A (en) * 2002-12-19 2005-08-26 인터내셔널 비지네스 머신즈 코포레이션 Method and system for peer-to-peer authorization
KR20060085284A (en) * 2005-01-21 2006-07-26 에스케이 텔레콤주식회사 System peer monitoring system and method

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3808941B2 (en) * 1996-07-22 2006-08-16 株式会社日立製作所 Parallel database system communication frequency reduction method
US20030233455A1 (en) * 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
US7409400B2 (en) * 2003-10-22 2008-08-05 Intel Corporation Applications of an appliance in a data center
JP3838248B2 (en) * 2004-07-26 2006-10-25 株式会社日立製作所 Data storage method and data management system
US7174385B2 (en) * 2004-09-03 2007-02-06 Microsoft Corporation System and method for receiver-driven streaming in a peer-to-peer network
US7379967B2 (en) * 2005-01-28 2008-05-27 Grid Solutions, Inc. Download method for file by bit torrent protocol

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050084053A (en) * 2002-12-19 2005-08-26 인터내셔널 비지네스 머신즈 코포레이션 Method and system for peer-to-peer authorization
KR20040056074A (en) * 2002-12-23 2004-06-30 한국과학기술정보연구원 Apparatus and method of providing information for grid resources in grid network and computer readable recording medium of recording process thereof
US20040260761A1 (en) 2003-03-18 2004-12-23 Yves Leaute Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
KR20060085284A (en) * 2005-01-21 2006-07-26 에스케이 텔레콤주식회사 System peer monitoring system and method

Also Published As

Publication number Publication date
JP2010511222A (en) 2010-04-08
WO2008062961A1 (en) 2008-05-29
JP5178734B2 (en) 2013-04-10
KR20080047161A (en) 2008-05-28

Similar Documents

Publication Publication Date Title
US7627867B2 (en) Change management of interfaces in distributed computer systems
KR100758253B1 (en) System and method for user notification
US7089313B2 (en) Protocol independent communication system for mobile devices
US7903656B2 (en) Method and system for message routing based on privacy policies
US7342928B2 (en) Method and system for accessing a peer-to-peer network
US20030084280A1 (en) Secure file transfer and secure file transfer protocol
KR20080068647A (en) A method and system for forming a service application execution environment in a heterogeneous, distributed computing system, and a user-friendly data delivery service application running in the service application execution environment.
US20070061282A1 (en) Data network information distribution
US7237235B2 (en) Application distribution system, and distribution server and distribution method thereof
KR20040071203A (en) System and method for downloading data using a proxy
EP1872523B1 (en) System and method of device-to-server registration
EP2149848A1 (en) Data distribution system
WO2006116866A1 (en) Formatted and/or tunable qos data publication, subscription, and/or distribution including dynamic network formation
KR20040091675A (en) Dynamic addressing in transient networks
JP4098723B2 (en) Method and apparatus for reconfiguring server system
CN107003981B (en) Sync with locally paired devices to obtain data from remote servers using peer-to-peer communication
EP2309390B1 (en) Data distribution system
KR101305397B1 (en) Peer Management Server in P2P System and Peer Management Method
KR100836619B1 (en) Peer Management Server and Peer Management Method in P2P System
CN113381971B (en) Data downloading method, device, system, electronic equipment and computer storage medium
CN114390044A (en) File uploading method, system, device and storage medium
KR20090006504A (en) Method and apparatus for providing P2P service in IP multimedia subsystem
KR20070059807A (en) P2P based streaming service providing method and apparatus, streaming service system using same
CN116366272B (en) Resource processing method, device, server and storage medium
Olson NET P2P Writing Peer-to-Peer Networked Apps with the Microsoft. NET Framework

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20061124

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20080123

Patent event code: PE09021S01D

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20080530

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20080603

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20080604

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20110414

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20110414

Start annual number: 4

End annual number: 5

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20130329

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20160329

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20160329

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20170328

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20190401

Start annual number: 12

End annual number: 12

PR1001 Payment of annual fee

Payment date: 20200413

Start annual number: 13

End annual number: 13

PR1001 Payment of annual fee

Payment date: 20210325

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20240327

Start annual number: 17

End annual number: 17