검색 전체 메뉴
PDF
맨 위로
OA 학술지
이기종 P2P 시스템 간의 자료 교환을 위한 XML 메세징 시스템 설계 Design of XML Messaging System for Data Exchange of Heterogeneous P2P System
  • 비영리 CC BY-NC
  • 비영리 CC BY-NC
ABSTRACT
이기종 P2P 시스템 간의 자료 교환을 위한 XML 메세징 시스템 설계

JXTA does not need to be managed by the central server, and has the property that can communicate with any device that is connected to the network. Thus, JXTA can be applied to the communication between heterogeneous P2P systems. This paper deals with the design of a data exchange system utilizing the JXTA’s foregoing property, which is able to connect P2P systems with different protocols and APIs.

KEYWORD
이기종 , P2P , 메시지 , 교환 시스템 , JXTA
  • Ⅰ. 서 론

    인터넷은 한 컴퓨터에서 다른 컴퓨터 혹은 컴퓨터들이 네트워크를 통해서 정보를 접근하고자 하는 필요에 따라 발전되었다. 초기의 인터넷은 단말기를 통해 데이터를 접근할 수 있도록 해 주는 소수의 컴퓨터들로 구성된 규모가 크지 않은 네트워크였다. 하지만 점차적으로 이 개념은 무한한 영역으로 발전하여 글로벌 네트워크 개념으로 발전했다. 기존 인터넷 기술과 서비스들은 클라이언트 서버 모델에서 기초하여 다수의 클라이언트가 서버에 집중하는 구조로 구성된 것이 많다. 이에 P2P(Peer to Peer) 기술은 클라이언트 서버 모델의 집중 구조를 보완 및 대체할 수 있는 기술로 새롭게 조명 받고 있다[1].

    초고속 네트워크에 연동된 고성능 컴퓨터 자원들을 효율적으로 활용하려는 그리드 컴퓨팅 기술은 네트워크를 통한 기존의 단순한 정보공유뿐만 아니라, 자원의 공유를 통해 분산된 자원들의 통합을 가능하게 한다.

    현재 P2P 분야는 지속적으로 발전하고 있으며, 이를 이용한 응용분야들도 속속 발표되어지고 있다. 이러한 시점에 SUN사에서는 네트워크 프로그래밍과 컴퓨팅 플랫폼으로 현대의 분산 컴퓨팅, 특히 P2P 컴퓨팅이나 네트워킹이라는 영역에서 폭넓게 발생하는 문제를 해결하기 위하여 JXTA 기술을 개발하게 되었다[2,3].

    현실적으로 여러 다양한 P2P 시스템들이 있는데 이것을 인위적으로 하나의 표준으로 하는 것은 바람직하지도 않다. 따라서 이러한 다양한 시스템을 하나의 P2P 어플리케이션으로 모두 통합하여 이기종 P2P 프로토콜간의 특이성을 배제할 수 있다면 지금의 거대한 인터넷 연결망이 구성되는 것과 유사한 통합효과를 기대할 수 있다.

    하지만 각 P2P 시스템들은 각자의 프로토콜과 API(Application Programming Interface)를 사용하기 때문에 이를 하나로 통합한다는 것은 매우 어려운 일이다. 본 논문에서는 상이한 P2P 시스템들이 상존하는 상황에서 이들 간의 상호운용성을 제공하기 위해 JXTA를 이용하고, 시스템 상호 간의 차이점을 극복하고 메시지를 교환하기 위한 수단으로 XML(Extensible Markup Language)을 이용한다[4-6].

    이에 본 논문에서는 JXTA 기술을 기반으로 한 이기종 P2P 시스템 간에 데이터 교환을 위한 Gateway 시스템의 설계에 목적을 둔다.

    본 논문은 2장에서는 관련 연구들을 살펴보고, 3장에서는 설계된 시스템의 구성을 제안한다. 마지막으로 4장에서는 결론 및 향후 연구 방향을 제시한다.

    Ⅱ. 관련 연구

       2.1. P2P 서비스

    P2P 기술은 클라이언트 서버 모델의 집중구조를 보완 및 대체할 수 있는 기술로 분산 컴퓨팅을 구현하기 위한 핵심기술로 대두되고 있다.

    이러한 P2P 서비스 구조는 그림 1과 같이 서버의 사용유무에 따라 중앙집중식 P2P와 분산 P2P로 구분된다[2]. 중앙집중식 P2P는 서버를 활용하여 피어(peer)들 간의 동작이 원활하게 이루어지도록 지원해주는 방식이며, 피어들의 모든 정보(파일, URL 등)를 중앙서버에서 저장 및 관리하는 구조이다. 하지만 이러한 방식은 안정적인 분산 서비스를 제공하기 위해 서버에서 처리할 수 있는 피어의 수가 제한되며, 피어의 수가 많아질수록 서버에서의 인덱스 크기가 급증하게 되어 분산 서비스를 저해하게 된다.

    중앙집중식 P2P의 문제점을 해결하기 위해 제시된 모델이 서버 없이 피어 자신이 클라이언트와 서버의 역할을 동시에 수행하는 분산 P2P이며, 피어들을 논리적으로 연결하는 방식에 따라 비구조적 P2P와 구조적 P2P 방식으로 구분되어진다. 비구조적 P2P 방식은 집중화된 서버를 사용하지 않고 서로 대등한 처리 능력과 책임을 가진 피어들 간에 직접 정보교환을 지원하는 방식이며, 대표적인 모델로는 그누텔라 시스템을 들 수 있다.

    구조적 P2P는 분산 해쉬 함수 등을 이용하여 피어들을 논리적으로 연결해 주는 응용 계층 관점의 오버레이 네트워크 등의 기반 구조를 만들고, 이를 통해 자원을 공유하는 방식이다. 대표적인 구조적 P2P 모델로는 Chord를 들 수 있다[7-9].

       2.2. JXTA 기술

    JXTA 기술은 연결된 피어들끼리 상대를 쉽게 찾아 서로 통신하며, 커뮤니티 기반의 활동에 참가하면서 서로 다른 P2P 시스템과 커뮤니티를 통해 중단 없이 서로에게 서비스를 제공 할 수 있도록 설계된 것으로, P2P 네트워킹 역역에서 폭넓게 발생하고 있는 문제를 해결하기 위하여 SUN에서 개발한 P2P 기반의 표준플랫폼이다.

    P2P를 비롯한 분산 컴퓨팅의 각종 개념을 시험하면 서 내부적으로 추진하는 프로젝트로서 P2P 애플리케이션을 위한 인프라 구현에 초점을 맞추고 있으며, 특히 P2P 네트워킹에서 피어간의 탐색, 자원에 대한 광고, 피어간의 통신, 피어그룹을 형성하기 위한 서로 간의 협업에 관련된 일련의 P2P 플랫폼의 기능을 가지고 있다. SOAP(Simple Object Access Protocol) 방식의 프로토콜 및 자바를 사용하고 있어 구현 언어에 독립적이므로, 어떤 운영체제 환경하의 피어들도 JXTA 플랫폼을 통해서 통신이 가능하다[10,11].

    JXTA 플랫폼은 그림 2와 같이 시스템 스택을 3계층으로 나눈다. 기본적인 수행에 필요한 피어 설정과 통신기능의 core layer, 특정한 기능이 정의되어 있는 서비스 layer, 메일링이나 경매 스토로지 시스템과 같은 application layer의 계층으로 나뉘어져 있다[12].

       2.3. XML, XML Schema

    XML에서의 스키마란 문법, 구조 어휘, 데이터 유형 등 마크업을 사용하는 방법에 관한 기술을 의미한다. XML DTD(Document Type Definition)도 광의의 스키마로서 XML에서 기본적으로 제공되며 구성 요소로 HTML (HyperText Markup Language)의 태그를 생성하는 요소, 속성, 개체가 있다.

    그러나 XML DTD는 스키마로서 여러 가지 부족한 점이 있다. 먼저 DTD는 단순한 EBNF(Extended Backus-Naur Form) 형태의 문법을 사용하는데 이는 XML 문서 사례에서 사용되는 문법과는 다르다. 따라서 개발자들은 2종류의 다른 파서를 사용해서 개발해야 한다. 또한 DTD의 표현 능력이 제한되어 있어 응용에 따라서 필요한 보다 많은 정보의 표현이 불가능하다[13,14].

    바람직한 XML 스키마는 XML 문서의 스키마를 XML로 기술하여 XML 문서에 적용하여야 한다. 이렇게 함으로서 DTD에서 나타나는 여러 가지 문제를 해결할 수 있다. 스키마를 관리하기 위하여 DTD 파서와 같은 특별한 도구가 필요치 않고 스키마 정보를 표현하기 위해 새로운 문법을 배울 필요가 없다. 스키마를 용이하게 확장 또는 제한할 수 있으며 이름공간지원으로 복수의 문서에 의한 스키마 작성이 가능하다. 다양한 데이터 유형을 지원하며 검증이 가능하고 데이터 유형 확장 및 제한에 의해서 효과적으로 내용을 재사용 할 수 있으며 이름은 같지만 내용이 다른 차등 요소를 정의할 수 있다.

    그래서 W3C가 중심이 되어 적절한 스키마를 개발하고 있으며 현재 개발되었거나 진행 중인 주요 스키마에는 W3C XML Schema, XML-Data Reduced (XDR), Document Content Description(DCD), Schema for Object-oriented XML(SOX), Document Definition Markup Language (DDML), Schematron Datatypes for DTDs (DT4DTD) 등이 있다[15-20].

    어떤 종류의 파일을 검색하던지 간에 파일 검색을 위하여서는 파일의 형태 또는 구조의 공유가 필요하다. 특히 인터넷 환경에서는 이전에 사용되어진 XML DTD의 대체로 XML schema를 이용하며 XML schema는 meta-data구조를 표현하는 새로운 포맷으로 사용되어진다. XML schema는 XML tags를 위해 사용되어지는 복잡한 사용자 데이터 타입에 대한 정의를 지원한다.

    Ⅲ. 이기종 P2P 시스템간의 자료교환을 위한 XML 메세징 시스템 설계

       3.1. 시스템 개요

    본 논문에서 설계하게 될 시스템은 조회서버와 룩업 서버를 가진 P2P 모델을 기반으로 하여 설계하고, 서버의 역할은 접속된 피어들의 목록을 각각의 이용 가능한 자원들과 함께 제공하는 기능을 한다. 다음의 표 1은 본 논문에서 설계하고자 하는 시스템의 구성 요소 및 역할을 나타낸다.

    [표 1.] 시스템의 구성요소 및 역할

    label

    시스템의 구성요소 및 역할

    표 1에 정의한 구성요소들의 상호관계를 살펴보면 다음과 같다.

    •리스너-서버 관계

    서버는 모든 리스너들에 대하여 이름, IP주소, 공유된 자원에 대한 정보를 데이터베이스에 저장한다. 리스너는 서버에 로그인해서 공유된 자원을 선언한 후, 파일과 폴더의 이름을 위치와 함께 전송한다.

    서버가 제공하는 리스너들의 목록은 로그아웃 상태의 리스너들은 제외하며 현재 온라인 상태인 리스너들만을 보여준다.

    •리스너-브라우져 관계

    브라우져가 모든 요청을 리스너에게 보내고, 처리된 질의나 메시지의 형태로 응답을 수신하는 요청/응답의 관계이다. 리스너는 리스너 수준의 모든 요청을 처리하고 브라우져는 처리된 결과를 클라이언트에게 전달한다.

    •브라우져-서버 관계

    브라우저는 리스너들의 목록을 서버로부터 가지고와서, 어느 리스너가 자원을 공유하고 있는지 확인한다. 브라우저는 서버로부터 리스너들의 목록을 얻는 것과 함께 루트 수준의 검색요청을 전달할 수 있다.

       3.2. 시스템 흐름도

    시스템의 구성요소와 구성요소와의 관계를 토대로 본 논문에서 설계하고자 하는 시스템의 흐름을 살펴보면 아래의 그림 3과 같다.

    본 논문에서 설계하고자 하는 P2P 시스템의 구성요소는 리스너, 브라우저, 서버의 3개의 모듈에 기반을 둔다. 위의 그림 3에서 보이듯이 원격지에서 실행되는 두개의 피어(리스너와 브라우저)가 서로 자원을 공유하며, 자원 공유를 시도하기 위하여 두 개의 피어는 다음의 두 가지 동작을 수행한다.

    [표 2.] 피어의 동작 및 기능

    label

    피어의 동작 및 기능

    리스너로 동작하는 피어는 다른 피어들에 의해 만들어진 요청에 대하여 응답하는 역할을 하는 반면, 브라우저는 모든 요청을 생성하는 피어의 역할을 한다.

    서버는 현재 로그인한 모든 피어들의 정보(IP 주소, 로그인명, 공유자원에 관한 정보 등)를 보유하고 있는 데이터베이스를 관리한다.

    P2P 시스템으로부터 전달되어진 신호를 XML을 이용하여 처리하게 되며, XML로 구성된 각종 메시지를 처리하는 다음의 표 3과 같은 두 개의 모듈이 필요하다.

    [표 3.] 피어의 동작 및 기능

    label

    피어의 동작 및 기능

    시스템의 시작은 리스너가 자신의 로그인 이름, IP 주소, 공유된 자원들에 대한 정보로 구성된 요청을 서버에 전송함으로서 시작된다. 리스너는 서버에 접속한 리스너들의 목록에 자신의 항목을 추가하며, 서버는 리스너로부터 넘겨받은 사용자 정보의 인증작업을 시작한다. 사용자 인증의 과정은 XML 형태로 적절한 응답을 반환하며, 이 응답은 XML 파서모듈에 넘겨져서 파싱되어 최종적으로 적절한 메시지가 리스너에게 전달된다.

    이제 리스너 역할을 하는 피어가 서버에 성공적으로 로그인하였다면 이 리스너는 다른 피어의 요청에 응답할 준비가 되었다고 판단한다. 또한 컨텐트를 검색하고 있는 브라우저는 서버에 요청신호(HTTP)를 보냄으로서 서버에 접근한다.

    서버는 브라우저의 요청에 대하여 서버가 자신에게 접속한 모든 피어들의 목록을 XML형태로 전달한다. 서버는 접속된 리스너 이름, 공유된 자원, 리소스의 IP 주소 등의 구성 목록을 브라우저에게 제공한다.

    브라우저는 서버에 접근한 후 원하는 리스너와 통신을 수립하는 단계를 수행한다. 먼저 브라우저와 리스너 사이에 통신이 수립되면 두 피어들 사이에는 자료 교환이 가능하다. 브라우저는 XML 형식으로 데이터를 액세스하기 위하여 네트워크 스트림을 오픈하며, 피어들 사이에서 일어나는 프로세스는 네트워크 스트림을 통해 이루어진다.

    브라우저는 특정 데이터를 원격 리스너로부터 다운로드하는 방법으로 원하는 콘텐트를 획득할 수 있으며, 브라우저가 데이터를 다운로드 하려면 XML 작성모듈(XMC)을 사용하여 요청 XML을 생성하고, 리스너의 네트워크 스트림을 통하여 전달한다.

    리스너는 자신에게 전달되어진 요청 XML을 파싱하고 어떤 파일이 브라우저에게 전송할 것인지 파악한다. 이 정보는 브라우저의 요청에 대한 XML응답형태일 수도 있고 브라우저가 다운로드 요청한 파일일 수도 있다. 이 정보를 브라우저의 네트워크 스트림을 통하여 브라우저에게 전달한다.

    최종적으로 브라우저는 리스너에 의해 업로드된 파일을 읽어 들이고, 이때 읽어 들인 파일이 브라우저의 요청에 대한 응답인지 다운로드 요청을 한 파일인지 확인하여 적절한 메시지를 화면에 표시한다.

    브라우저를 통하여 파일을 업로드 하는 경우는 브라우저는 다른 피어들이 공유한 메모리 영역을 선택하고 자신이 업로드 할 파일을 선택하게 된다. 그리고 리스너에게 보낼 요청 XML을 생성한다. 리스너가 요청 XML을 받으면 작성되어야 할 파일에 대한 권한이 있는지 확인하게 되며, 권한이 있는 경우 브라우저가 쓰고 있는 파일을 읽어 들이고 동시에 데이터를 파일에 쓴다. 만약 권한이 없다면 업로드 거부 응답을 생성하여 브라우저에게 반환한다.

       3.3. 피어 시스템 구조

    아래의 그림 4는 피어 시스템의 구조를 나타내고 있다.

    • Starting : 시스템의 시작으로 JXTA 네트워크 구성, 보안 구성 및 연결 • Group Manager : group search, creation, join and leave • Chat Manager : 대화 메시지를 송‧수신 • Browser Manager : 브라우저의 기본 기능(하이퍼 링크, 메뉴 등)을 수행 • Control Manager : 3개의 매니저와 GUI, 파이프를 관리 감독 • MsgSender and MsgReceiver : JXTA를 이용하여 구현되고 파이프를 전파 • XML module : P2P 시스템으로 전달되어질 XML 메시지를 처리

       3.4. 구성요소 모듈사이의 통신

    3.4.1. 리서너와 서버 사이의 통신

    리스너 애플리케이션을 시작하면 로그인 창이 표시되며, 사용자는 접속 아이디를 입력한다. 리스너는 서버에 자신의 정보를 등록하기 위하여 공유된 자원들의 목록과 로그인명, 자신의 IP 주소를 전달하게 된다.

    다음의 그림 5는 리스너와 서버 간의 통신을 나타내고 있다. 서버는 넘겨받은 모든 인자를 확인한 후 해당 리스너의 항목을 작성한다. 그리고 요청에 대한 응답으로 리스너에게 인증 XML 메시지를 전달한다.

    3.4.2. 브라우저와 서버 사이의 통신

    리스너가 성공적으로 서버에 연결된 후, 브라우져는 서버와 통신을 하게 된다. 아래의 그림 6은 브라우저와 서버 간의 통신을 나타낸다.

    브라우저는 현재 실행중인 모든 리스너 목록을 얻어서 자신의 창에 표시한다.

    서버가 브라우저로부터 요청을 받으면 현재 실행하고 있는 모든 리스너들의 목록을 데이터베이스에서 검색하여 브라우저에게 XML 메시지 형태로 응답을 전달한다. 브라우저는 이 XML 응답메시지를 파싱한 결과를 사용자에게 보여준다.

    브라우저가 반환된 사용자 목록에서 특정 사용자를 선택하며 브라우저는 선택된 리스너와 소켓연결을 수립한다. 즉 리스너와 브라우저 사이에 IP 주소를 사용하여 직접 통신이 수립된다. 이후 수행될 브라우저와 리스너 사이의 모든 통신은 서버를 거치지 않고 소켓을 통해 직접 이루어진다.

    3.4.3. 리스너와 브라우저 사이의 통신

    애플리케이션의 통신 기능은 소켓에 기반을 두고 있는데 소켓은 서로 통신을 하기 위해 시스템의 네트워크 스트림을 이용한다. 리스너와 브라우저는 각각의 네트워크 스트림에 데이터를 읽고 쓰는 작업을 수행한다.

    브라우저는 리스너의 네트워크 스트림에 데이터를 쓰는 방식으로 요청을 XML의 형태로 전송하고, 리스너는 네트워크 스트림으로부터 데이터를 읽어 들이는 방법으로 요청을 처리한다. 다음의 그림 7은 리스너와 브라우저 간의 요청/응답을 나타내고 있다.

    Ⅳ. 결 론

    본 논문에서 제안한 이기종 P2P 시스템간의 자료교환을 위한 XML 메세징 시스템은 중앙서버를 통한 관리가 필요 없고 네트워크에 연결되었다면 모든 장치에서 다른 장치들과의 통신이 가능하며 타 P2P 시스템과의 통신이 가능한 장점을 가지고 있다.

    이러한 장점에 조회기능을 가진 서버를 중심에 두어 피어들이 자신이 필요한 정보를 얻기 위해 각각의 피어를 일일이 방문할 필요성이 없게 하였으며, 실제적인 통신은 피어들 상호간에 이루어 질수 있도록 설계하였다. 또한 서로 상이한 프로토콜과 API를 사용하는 P2P 시스템들 간의 통신을 위하여 데이터 교환 시스템을 설계하였다.

    본 논문에서 제안한 데이터 교환시스템을 통하여 상호 운용성이 유지되어진다면 P2P 통신망의 응용범위를 확장할 수 있을 것이다.

    향후에 설계된 데이터 교환 시스템을 구현하게 되면 P2P 시스템간의 병목 형상으로 인한 성능 저하가 발생할 수도 있으므로, 이러한 병목 형상을 방지하기 위한 연구가 필요할 수도 있을 것이다.

참고문헌
  • 1. Kim Boon-Hee 2013 “Design of Social Network P2P System based on Agent,” [The Journal of the Korea institute of electronic communication sciences] Vol.8 P.121-126 google cross ref
  • 2. Park Jong-Eun, Lee Hong-Chang, Lee Myung-Joon 2012 "Jxta-based SmartPhone Collaboration Application Supporting Group Workspace," [Journal of the Korea Institute of Information and Communication Engineering] Vol.16 P.511-521 google cross ref
  • 3. Lee Jong-Seo, Moon Il-Young 2011 "A Study on Effective Peer Search Algorithm Considering Peer's Attribute using JXTA in Peer-to-Peer Network," [The Journal of Korea Navigation Institute] Vol.15 P.632-639 google
  • 4. Miao Qinghai, Wang Zhixue, Wang Fei-Yue, Tang Shuming, He Feng 2006 "An Implementation of Artifical Transporation System based of JXTA," [Vehicular Electronics and Safety, ICVES 2006 IEEE International Conference] google
  • 5. Nakamura M., Ma J., Chiba K., Shizuka M., Miyoshi Y. 2003 "Design and implementation of a P2P shared Web browser using jxta," [Advanced Information Networking and Applications, AINA 2003 17th International Conference] google
  • 6. State R., Festor O. 2003 "A management platform over a peer to peer service infrastructure Telecommunications," [ICT 2003 10th International Conference] Vol.1 google
  • 7. Kim Eun-Sung, Lee Yu-Seok, Song Wang-Cheol 2010 "JXTA based content-sharing application," [Local Computer Networks (LCN), 2010 IEEE 35th Conference] P.993-996 google
  • 8. Han Jin Soo, Kim Tae-Hyung 2004 "Connecting heterogeneous P2P systems using JXTA," [Korean Institute of Information Scientists and Engineers, Proceedings of the Korean Information Science Society Conference] Vol.31 google
  • 9. Bae Joonhyun, Kim Sangwook 2009 "An Efficient Content Sharing Scheme in Structured P2P Systems," [Journal of KIISE] Vol.15 P.430-434 google
  • 10. Wilson Brendon J. 2002 "JXTA," google
  • 11. Borwankar Nitin, Govoni Daniel 2002 Jxta Java P2P Programming google
  • 12. “java.net Projects by Community: JXTA” google
  • 13. Lee Sang-Sik, Choi Han-Yong 2009 "Generation of Class MetaData Based on XMI," [The Journal of the Korea Contents Association] Vol.9 P.572-581 google cross ref
  • 14. Kwon Doo Wy, Do Kyeong Hoon 2010 "Implementation of the XML Parser for Integrated XML Web Service in Wired and Wireless Internet Environment," [The journal of the Korea Institute of Maritime Information & Communication Sciences] Vol.14 P.493-500 google cross ref
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
이미지 / 테이블
  • [ 그림 1. ]  C/S 모델과 P2P모델 데이터 흐름
    C/S 모델과 P2P모델 데이터 흐름
  • [ 그림 2. ]  JXTA 플랫폼 구조
    JXTA 플랫폼 구조
  • [ 표 1. ]  시스템의 구성요소 및 역할
    시스템의 구성요소 및 역할
  • [ 그림 3. ]  시스템의 흐름
    시스템의 흐름
  • [ 표 2. ]  피어의 동작 및 기능
    피어의 동작 및 기능
  • [ 표 3. ]  피어의 동작 및 기능
    피어의 동작 및 기능
  • [ 그림 4. ]  시스템의 구조
    시스템의 구조
  • [ 그림 5. ]  리스너와 서버 간의 통신
    리스너와 서버 간의 통신
  • [ 그림 6. ]  브라우저와 서버 간의 통신
    브라우저와 서버 간의 통신
  • [ 그림 7. ]  리스너와 브라우저 서버 간의 요청/응답
    리스너와 브라우저 서버 간의 요청/응답
(우)06579 서울시 서초구 반포대로 201(반포동)
Tel. 02-537-6389 | Fax. 02-590-0571 | 문의 : oak2014@korea.kr
Copyright(c) National Library of Korea. All rights reserved.