위키백과에 따르면, 

P2P는 비교적 소수의 서버에 집중하기보다는 '망'구성에 참여하는 기계들의 계산과 대역폭 성능에 의존하여 구성되는 통신망이다.라고 나와 있다. 

▶ 이전에 작성한 글들은 왼쪽 그림처럼 서버 중심의 중앙 집중형 시스템을 사용하여 서버에 의존하는 형태였다면,

오른쪽 그림처럼 P2P 구조는 이름에서 알 수 있듯이 특정 서버를 통하지 않고 피어(사용자가 제어하는 개인 PC)가 서로 직접 통신하는 형태이다. 

 

장점 

1. 중앙 서버가 없기 때문에 중앙 서버가 해킹되거나 변조되는 일이 없음

2. 서버의 부하가 줄어들거나 사용작가 분담할 수 있도록 하여 비용을 줄일 수 있음

3. 피어 수가 늘어나면 파일 전송 속도가 올라감

 

단점

1. 모든 클라이언트가 서버 역할을 대신하기 때문에 자신의 IP주소가 다른 클라이언트에게 노출됨

2. 피어 수가 적으면 파일 전송 속도가 떨어짐

3. 데이터 처리와 통신 작업의 분담으로 클라이언트의 컴퓨터 성능을 높여야 함

 

 

client-server와 P2P 구조 비교

1. P2P 구조는 자가 확장성을 가지고 있다. 

▶ 위의 내용을 설명하기 위해 파일 분배하는 방법을 확인하자. 

**분배 시간은 모든 N개의 피어들이 파일의 복사본을 얻는 데 걸리는 시간

분배 시간에 대한 분석에서 client-server와 P2P 구조 모두의 경우, 인터넷 코어가 풍부한 대역폭을 갖고 있다는 가정 한다. 또한 client-server는 다른 네트워크 애플리케이션에 참여하지 않아서 이들의 모든 업로드와 다운로드 접속 대역폭은 이 파일 분배에 모두 사용된다고 가정한다. 

(F: 분배되는 파일의 크기)

먼저 client-server 구조에 따르면,

  1. 서버는 파일 복사본을 N개의 피어 각각에서 전송해야 한다. 따라서 서버는 NF 비트를 전송해야 한다. 서버의 업로드 속도가 ㎲이기 때문에 파일을 분배하는 시간은 적어도 NF/㎲이다. 
  2. dmin이 가장 작은 다운로드 속도를 가진 피어의 다운로드 속도를 나타낸다고 가정한다. 
  3. 가장 낮은 다운로드 속도를 가진 피어는 F/dmin초보다 적은 시간에 파일의 모든 F 비트를 얻을 수 없다. 따라서 분배 시간은 적어도 F/dmin이다.

수식을 보면 분배 시간은 피어의 수 N에 따라 선형적으로 증가한다. 예를 들어, 한 주에서 다음 주까지 피어의 수가 천에서 백만으로 천 배 증가한다면, 파일을 모든 피어들에게 분배하는 데 필요한 시간도 천 배 증가한다.

 

P2P 구조를 살펴보면

client-server 구조보다 복잡한다. 이유는 분배 시간이 각 피어가 다른 피어에게 파일의 일부를 어떻게 분배하느냐에 달려 있기 때문이다. 

  1. 분배가 시작되면 서버만이 파일을 갖고 있다. 이 파일이 피어 커뮤니티에 도달할 수 있도록 하기 위해, 서버는 적어도 한 번 접속 링크로 파일의 각 비트를 보내야 한다. 따라서 최소 분배 시간은 적어도 F/㎲이다. (client-server와 달리 피어들 사이에 해당 비트를 재분배할 수 있기 때문에 서버가 한 번 보낸 비트는 다시 보낼 필요가 없다.)
  2. client-server와 같이 가장 낮은 다운로드 속도를 가진 피어는 F/dmin초이다. 
  3. 시스템의 전체 업로드 용량전체적으로 서버의 업로드 속도 각 피어들의 업로드 속도 더한 것이다. 시스템은 N개 피어들 각각 F 비트를 전달 (업로드) 해야 한다. 이는 Utotal보다 더 빠른 속도로 할 수는 없다. 따라서 최소 분배 시간은 NF/(us+u1+....+un)이다.

(현실에서는 개별적인 비트보다는 파일의 청크(chunk)가 재분배됨)

 

모든 피어가 같은 업로드 속도 u를 갖고 있다고 가정하고 최소 분배 시간을 비교하면,

피어는 전체 파일을 한 시간 안에 보낼 수 있고, 서버 전송 속도는 피어 업로드 속도의 10배이며, 피어 다운로드 속도는 영향을 받지 않을 정도로 충분히 크게 설정된다. (=> 항상 client-server 구조보다 분배 시간이 적은 건 아니다.)

 

- client-server 구조는 피어의 수가 증가함에 따라 분배 시간이 선형적으로, 한계 없이 증가한다. 

- P2P 구조는 피어들이 파일을 요구함으로써 작업 부하를 만들지만 각 피어들은 또한 파일을 다른 피어들에게 분배해 서비스 능력을 추가한다.

 

■ P2P 구조의 자기 확장성은 피어가 비트의 소비자이자 재분배자인 것의 직접인 결과다.

 

2. P2P 구조는 비용이 효율적이다.

▶ 일반적으로 상당한 서버 기반구조와 서버 대역폭을 구하지 않기 때문이다. 

 

 

비트토렌트

: 파일 분배를 위한 인기 있는 P2P 프로토콜

: 음악, 영화, 문서 등 다양한 파일을 인터넷상에서 P2P방식으로 공유할 수 있도록 하는 플랫폼

여기서 토렌트는 파일의 분배에 참여하는 모든 피어들의 모임이다.

비트토렌트의 파일 분배

△ 트랙커 : 1) 기반구조 노드, 2) 토렌트에 가입할 때 트랙커에 등록하고 주기적으로 트랙커에서 알림 , 3) 토렌트에 참여하는 피어들을 추적

1. 새로운 피어 앨리스가 토렌트에 가입할 때 트랙커는 참여하고 있는 피어 집합에서 임의로 피어들의 부분 집합을 선택하여 피어들의 IP주소를 앨리스에게 보냄

2. 피어들의 리스트를 얻고 나서, 앨리스는 리스트에 있는 모든 피어들과 동시에 TCP 연결을 설정

3. TCP 연결이 성공적으로 설정된 모든 피어들은 이웃 피어라 부름 -> 시간이 지남에 따라 이웃 피어들이 떠나고 다시 TCP 연결을 함

4. 임의의 주어진 시간에 각 피어는 파일 청크들의 일부를 갖고 있으며, 서로 다른 피어들은 다른 부분을 갖고 있음

5. 앨리스는 TCP 연결을 통해 이웃 피어들에게 갖고 있는 청크 리스트 요구(앨리스가 갖고 있지 않는 청크 요구)

▷ 앨리스는 피어 중 가장 드문 것을 갖고 있는 피어에게 먼저(rarest first) 요구 => 이웃들 중에 가장 적은 반복 복사본을 가진 청크를 결정

 

▶ 비트토렌트는 TFT(tit-for-tat) 방식을 사용한다. TFT는 눈에는 눈, 이에는 이라는 말로 반복 게임에서, 경기자가 이전 게임에서 상대가 한 행동을 이번 게임에서 그대로 따라 하는 전략을 말한다. 

TFT 없이 설계했다면 대부분의 사용자들은 무임승차하기 때문에 비트토렌트는 존재하지 않았을 것이다.

 

 

P2P 구조의 다른 예

쉰레이(Xunlei) :: 피어-지원 다운로드 가속기

스카이프 :: 인터넷 전화 및 비디오 콘퍼런스

암호화폐와 블록체인 :: 중앙 통화 발행자나 교환소 없이 사용자가 결제를 처리하고 확인할 수 있는 네트워크

블루투스 :: 중앙 서버나 서비스의 개입 없이 일대일로 연결

 

 

 

 

 

 

 

 

 

-"컴퓨터 네트워킹 하향식 접근 제7판" 참고했습니다.

'Study > Network' 카테고리의 다른 글

소켓 _ 네트워크 애플리케이션  (0) 2023.07.05
웹 캐시(Web Cache)란?  (0) 2023.01.16
HTTP 란?  (0) 2023.01.16

+ Recent posts