P2P 네트워크
From IT위키
Peer-to-peer Network; Peer-to-peer Model Network
P2P 네트워크랑 중앙화된 (거의) 서버를 거치지 않고 사용자(peer)간 직접 통신하는 모델을 말한다.
- 초기의 P2P 모델에서는 초기 피어 식별, 검색, 핸드셰이크 등을 위해 중앙화된 서버가 일부 기능을 하기도 하였으나, 최근엔 점차 중앙화된 서버 전혀 없이 동작하는 P2P 모델들이 많이 등장하고 있다.
- 다만 효율적 네트워크 구성을 위해 동적으로 서버 역할을 하는 슈퍼 노드를 두는 하이브리드 방식의 P2P가 많이 사용된다.
특징[edit | edit source]
- 유연성: 상시, 고정적으로 구동되는 서버가 없고, 대부분의 엔드 포인트가 유동적인 IP를 가진다.
- 상호성: 참여하는 각 피어들은 서비스 제공자이자 서비스 이용자이다.
- 확장성: 수요가 늘어남에 따라 새로운 피어가 참여하여 새로운 자원으로써 역할을 하므로 자체적인 확장이 이루어진다.
구조화에 따른 구분[edit | edit source]
P2P Network Categories
- 구조화된 P2P 네트워크 (Structured P2P Network):
- 가상 계층: 피어들 간의 연결이 무작위가 아닌, 특정 알고리즘에 의해 결정된다. 예를 들어, DHT(분산 해시 테이블)라는 기술을 사용하여 각 피어가 네트워크 내에서 특정 역할을 맡게 된다.
- 특정 구조: 네트워크가 미리 정의된 규칙에 따라 피어들을 연결하므로, 검색이나 데이터 조회가 효율적이다. 요청이 잘못된 피어로 가더라도, 네트워크 내에서 원하는 데이터를 빠르게 찾을 수 있다.
- 예시: Chord, Kademlia와 같은 DHT 기반 P2P 네트워크
- 비구조화된 P2P 네트워크 (Unstructured P2P Network):
- 임의의 연결: 피어들이 서로 무작위로 연결되며, 특정한 구조나 규칙이 없습니다. 이는 간단하지만, 데이터를 찾는 데 있어 효율적이지 않을 수 있다. 특히 네트워크가 커질수록 검색 시간이 길어지거나 실패할 가능성이 크다.
- 탐색 방식: 피어들이 데이터를 찾기 위해 브로드캐스트 방식으로 여러 피어에게 요청을 보내야 한다. 결과적으로, 원하는 데이터를 찾는 데 많은 트래픽이 발생할 수 있다.
- 예시: Gnutella, Freenet
- 하이브리드 P2P 네트워크 (Hybrid P2P Network):
- 클라이언트-서버 구조 결합: 일부 피어들은 다른 피어들보다 더 중요한 역할을 한다. 예를 들어, 특정 피어들이 중앙 서버와 유사한 역할을 하여 네트워크 관리를 돕는다. 이로 인해 네트워크가 더 안정적이고 효율적으로 동작할 수 있다.
- 중앙 집중식 요소: 일부 피어들은 데이터를 관리하거나 네트워크 상태를 유지하는 역할을 하며, 일반적인 피어들이 이러한 '중앙 피어'를 통해 서비스를 이용할 수 있다.
- 피어 동기화: 새로운 피어가 네트워크에 들어올 때, 기존 피어들과 데이터를 동기화하여 시스템의 중복성을 높여 데이터 유실을 방한다.
- 예시: BitTorrent (트래커가 중앙 서버 역할을 수행), 일부 VoIP 서비스
하이브리드 아키텍처[edit | edit source]
활발하게 운영되는 대형 P2P 네트워크는 대부분 하이브리드 아키텍처를 채택하는 경우가 많다. 하이브리드 P2P 네트워크는 순수한 P2P 네트워크와 클라이언트-서버 모델를 결합하여 각 네트워크의 이점을 활용하여 신뢰성과 보안을 높이는 동시에 단점을 최소화할 수 있다.
- 비트 토렌토 및 초기의 스카이프 서비스가 하이브리드 아키텍처의 P2P로 구성되었다.
일반적 동작 과정[edit | edit source]
하이브리드 아키텍처는 하이브리드 P2P 아키텍처에서 피어들은 슈퍼 노드와 일반 노드로 나뉜다.
- 각 슈퍼 노드는 자신의 하위 노드들의 인덱스를 유지한다.
- 요청은 슈퍼 노드로 전송되며, 슈퍼 노드는 로컬 인덱스에 없는 하위 노드를 찾기 위해 서로 쿼리를 주고받는다.
- 일반 노드는 충분한 자원을 가지고 일정 시간 이상 P2P 네트워크에 머무르면 슈퍼 노드로 승격된다.
- 하이브리드 아키텍처는 네트워크의 신뢰성과 보안을 향상시키는 동시에 단점을 최소화할 수 있다.
P2P 네트워크 중복성[edit | edit source]
P2P Network Redundancy
- P2P 네트워크에서 중복성은 데이터 계층을 포함한 전체 애플리케이션 인스턴스가 P2P 네트워크의 모든 피어에 존재함을 의미한다.
- 이를 통해 단일 노드의 장애가 전체 P2P 네트워크에 영향을 미치지 않도록 네트워크의 회복력이 보장된다.
- P2P 네트워크는 더 많은 피어가 참여할수록 더욱 탄력적이고 강력해진다.
- 새로운 피어가 P2P 네트워크에 참여하면 자원이 공유되면서 용량이 증가하여 대역폭, 저장 공간, 처리 능력이 증가한다.
- 반면, 클라이언트-서버 네트워크에서는 중앙 서버에 대한 클라이언트 요청이 증가할수록 클라이언트 당 이용할 수 있는 자원이 줄어든다.