P2P 애플리케이션

P2P 구조에서는 항상 켜져 있는 기반구조 서버에 최소로 의존합니다(혹은 전혀 의존하지 않습니다). 대신에 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 합니다.

p2p-networks

P2P 구조의 가장 주목할 만한 특성 중의 하나는 자가 확장성(self-scalability) 이 있다는 것입니다. 예를 들어, P2P 파일 공유 애플리케이션에서 각 피어들이 파일을 요구함으로써 작업 부하를 만들어 내지만, 각 피어들은 또한 파일을 다른 피어들에게 분배함으로써 그 시스템에 서비스 능력을 추가합니다. 또한, P2P 구조는 상당한 서버 기반구조와 서버 대역폭을 요구하지 않기 때문에 비용면에서 효율적입니다(데이터 센터를 갖는 클라이언트-서버 설계와 대조적으로).

P2P 파일 분배에서 각 피어는 수신한 파일의 임의의 부분을 다른 피어들에게 재분배할 수 있어서 서버의 분산 프로세스를 도울 수 있습니다. 파일 분배에 대한 특정 예로서, 브람 코헨(Bram Cohen)이 개발한 비트토렌트(BitTorrent) 프로토콜이 있습니다.

비트토렌트

비트토렌트는 파일 분배를 위한 인기 있는 P2P 프로토콜입니다. 비트토렌트 용어로 특정 파일의 분배에 참여하는 모든 피어들의 모임을 토렌트(torrent) 라고 부릅니다. 토렌트에 참여하는 피어들은 서로에게서 같은 크기의 청크(chunk) 를 다운받습니다.

bittorrent

각 토렌트는 트랙커(tracker)라고 부르는 노드를 가지고 있습니다. 한 피어가 토렌트에 가입할 때 트랙커에 자신을 등록하고 주기적으로 자신이 아직 토렌트에 있음을 알립니다. 이러한 방식으로, 트랙커는 참여하는 피어들을 추적합니다. 주어진 토렌트는 어느 순간에 수백 혹은 수천의 피어들이 참여하고 있을 수 있습니다.