P2P (Peer to Peer)

P2P… 많이 들어보셨을 겁니다. 그리고 많이 써보셨을 겁니다. (용도는 본인들의 맘 구석에 자리잡고 있을테니..) 개별적인 컴퓨터들이 인터넷 네트워크 망을 이용해서 서로 각종 정보와 파일을 공유하는 것을 뜻합니다.

주의할 것이 있다면 P의 의미가 Person이 아니라는 것이라고할까요.. Peer로 표시되어 있는 이유는 한 사람이 공유할 수 있는 종류가 Personal Computer가 아니라는 것을 의미합니다. 이게 뭔 소리냐고요?

초기에 P2P를 사용했을 때에는 사람들이 컴퓨터를 이용한 공유만을 생각했습니다. 그러나 P2P가 설계될 당시부터 PC에만 국한된 상황을 가지고 설계한 것이 아니라는 것입니다. 그럼 뭐까지 생각해 뒀냐고요? PDA, 휴대폰 등등에서도 사용할 것을 염두해 뒀습니다. 이런 각종 디바이스를 염두해 두었기에 Peer란 단어를 사용한 것이죠. ㅇㅅㅇ (의외로 오래된 기술들 중에 이런 거 많습니다.)

P2P 프로그램은 여러모로 많다보니 굳이 나열하거나 하진 않겠습니다. 이런 수많은 P2P 프로그램들의 대부분은 다음 세 종류를 이용하여 개발된 것들입니다.

1. 순수한 Peer to Peer

순수한 P2P 응용 프로그램은 네트워크 상에서 다른 피어를 바로 검색하여 각각 상호 장격을 통해 컨텐트를 주고 받습니다. 이러한 유형은 다른 피어가 찾을 수 있도록 어느 한 서버에 의존하여 그 위치를 등록할 필요가 없다는 것을 강점으로 두고 있습니다. 그와 동시에 단점이 되는 부분이 중앙 검색 서버가 존재하지 않음으로 인해 검색할 수 있는 클라이언트의 수가 상대적으로 적어지고 이에 따라 응용 프로그램의 범위가 제한된다는 것이 있습니다.

피어는 로컬 구성 스키마로부터 정보를 사용하여 클라이언트를 검색할 수도 있고(주로 누가 연결되어 있는지를 나타내는 구성 항목등을 사용하는 방법으로 검색합니다.), 네트워크 브로드캐스팅과 IP 멀티캐스트와 같은 검색 기술을 사용하여 다른 피어를 찾을 수도 있습니다.

2. 단일 검색 서버를 사용하는 Peer to Peer

위에서 설명한 순수한 피어 투 피어 아키텍쳐의 단점으로 꼽혔던 부분을 보완, 중앙에 서버를 두고 다른 피어를 찾는데 사용하는 점을 개선한 방법입니다. 이 모델에서는 응용 프로그램이 시작 시간에 중앙 서버를 인식하게 됩니다. 피어 응용 프로그램은 이 서버를 사용하여 네트워크에 참여하고 있는 다른 피어의 목록을 다운로드하고 컨텐츠 쿼리에 사용하게 됩니다. 컨텐츠가 필요한 경우에는 목록을 훑어보고 각 피어를 개별적으로 접촉하여 확인함으로써 검색의 범위를 더 넓게 만들어 주는 역할을 하죠.

3. 검색 및 조회 서버를 사용하는 Peer to Peer

중앙 서버를 사용하는 데 있어서 필요한 피어에서 필요한 쿼리를 처리하는 것을 목적으로 한 것이 2번 방법이라면, 여기서는 이 서버의 기능을 확장하여 컨텐츠 조회 서비스도 이용할 수 있도록 해주는 것입니다. 이렇게 하는 경우, 피어 응용 프로그램은 검색 서버를 통해 등록할 뿐 아니라 정기적인 간격으로 컨텐츠 목록을 업데이트 해줍니다. 응용 프로그램에서는 특정 컨텐츠를 찾을 때에는 각 클라이언트에 쿼리를 보내기 보다는 중앙 서버를 쿼리하게 됩니다. 그리고 중앙 서버가 쿼리를 실행하여 요청된 컨텐츠를 가진 어떤 피어들이 있는지를 알려주게 됩니다. 이렇게 되면 네트워크에 나타나는 쿼리의 수를 줄이므로 이전 방법보다 확장성이 뛰어나게 되지만, 서버에서 처리할 비용이 증가하여 서버 증축에 돈이 들게 됩니다.

은근 단순해 보이는 P2P도 이렇게 정리해 보다보니 여러가지 내용들이 들어있군요. ㅇㅂㅇ

P2P 기술은 현재 많이 공개되어 있는 부분도 있고 라이브러리로도 제공되는 것들이 많습니다. 좀 더 자세히 알아보고 싶으신 분들은 openp2p를 이용해 보시는 것도 추천드립니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다