CS/Computer Network

[컴퓨터네트워크/Computer Network] 파일 분배 : client-server vs. P2P

binaryroot 2026. 4. 20. 07:53
728x90

이번 글에서는 client-server 와 P2P의 파일 분배에 대해서 알아보고자 한다.

어려운 개념은 아니지만 컴퓨터 네트워크 과목을 수강하면서 이 부분이 은근히 이해가 안 갔다.

 

이 글에서 핵심 질문은 다음과 같다.

인터넷에서 파일을 다운로드할 때, 사람이 많아지면 느려지는 게 당연할까?

 

네크워크의 client-server와 P2P(Peer-to-Peer) 방식의 차이에 대해 알아보고자 한다.

"누가 일을 도와주는가" 가 핵심이다. 비유를 통해 알아보자.

여기서 사용할 단위는 다음과 같다.

 

  • F (File): 나눠줄 파일의 크기 (피자 한 판)
  • (Upload): 파일을 보내는 속도 (서빙 속도)
  • (Download): 파일을 받는 속도 (먹는 속도)
  • N (Number): 파일을 받으려는 사람 수 (손님 수)

파일 분배

Client-Server (클라이언트-서버) 방식

우리가 흔히 아는 방식이다. 중앙에 서버가 있고, 파일을 받고 싶은 사람은 sever를 통해서만 파일을 수신한다.

손님(N)이 늘어나면 사장은 피자를 더 많이 구워서 일일히 배달해야 한다.

  • 시간 계산 (Ds) : 

 

  • 한계점 : 손님(N)이 1,000배 늘어나면 배달 시간도 1,000배 늘어난다. 아래에 첨부하겠지만 그래프를 보면 사람 수에 따라서 시간이 선형적으로(linear) 증가하는 것을 볼 수 있다.

P2P 방식

P2P는 피자를 한 조각이라도 받은 손님이 옆 사람에게 그 조각을 나누어 주는 방식이라고 생각하면 쉽다.

  • 특징 : 손님이 늘어나는 건 위에서 언급했던 배달을 "도와주는 사람"이 늘어난 것이다.
  • 시간 계산 (Dp2p) :
    • 분모에 있는 시그마 기호가 핵심이다. 모든 손님의 업로드(서빙) 속도를 다 더한 게 전체 능력값이 된다.

  • 장점 : 사람이 많아져도 도와줄 사람(Peer)도 많아지기 때문에, 어느 정도 시간이 지나면 배달 시간이 거의 늘지 않고 일정하게 유지된다. 자가 확장성이 매우 높다.

그래프로 비교해보면 다음과 같다.

 

파일 분배에 대한 개념을 학습하였으니,

P2P 파일 분배의 예시 중 하나인 BitTorrent에 대해 알아보자.

 

BitTorrent

비트토렌트는 위에서 설명한 P2P 모델을 실제로 구현한 프로토콜이다.

파일을 청크(Chunk, 약 256kb) 단위로 분할하여 관리한다.

728x90

트래커(Tracker)

피어가 토렌트에 가입하면 트래커에 자신을 등록한다. 트래커는 해당 파일 분배에 참여 중인 피어들의 리스트를 관리하며, 새로운 피어에게 이웃 피어들의 IP 주소를 제공하여 TCP 연결을 돕는다.

 

그렇다면 청크를 어떤 기준으로 선택할까?

Rarest First

피어는 이웃들이 가진 청크 목록을 주기적으로 확인한다. 이때 Rarest First(가장 드문 조각)을 우선적으로 요청한다. 이는 네트워크 내에서 특정 청크가 소멸되는 것을 방지하고, 모든 청크의 복사본 수를 균등하게 유지하여 전체적인 분배 효율을 높이기 위함이다.

 

교역 알고리즘: Tit-for-Tat (TFT)

비트토렌트는 무임승차(Free-riding)를 방지하고 상호 협력을 유도하기 위해 보상 기반 알고리즘을 사용한다.

  1. Unchocked (활성화)
    : 자신에게 데이터를 가장 빠른 속도로 보내주는 상위 4명의 피어를 선정하여 데이터를 우선적으로 제공한다. (10초마다 갱신)
  2. Optimistic Unchoking (낙관적 활성화)
    : 30초마다 무작위로 한 명의 피어를 선택하여 데이터를 보낸다. 이를 통해서 새로운 피어가 교역 파트너가 될 기회를 제공하고 더 ㅇ나은 파트너를 탐색한다.
  3. Choked (비활성화)
    : 위 두 개의 범주에 들어가지 못한 나머지 이웃 피어들에게는 청크를 전송하지 않는다.

자가 확장성(self-scaliability)의 의의

비트토렌트의 성공 요인은 피어가 데이터의 소비자인 동시에 공급자가 되도록 설계된 알고리즘이라는 것이다. 이러한 자가 확장성 덕분에 수백만 명의 사용자가 동시에 접속하더라도 시스템이 붕괴되지 않고 효율적인 데이터 분배가 가능해지는 것이다.

 

그렇다면 두 모델의 파일 분배 시간이 같아지는 조건은 없을까?

모든 피어의 업로드 속도가 0이 되거나, 시스템의 bottleneck이 가장 느린 다운로드 속도를 가지고 있으면 될 것 같다.

 

 

파일 분배에 대해 알아보았다.

헷갈렸던 부분이 해결된 것 같아 좋다.

 

마지막 질문에 대한 답은 맞는지 잘 모르겠다.

편하게 의견 주시면 감사하겠습니다..

 

 

 

참고 문헌

  • Computer Networking: A Top-Down Approach, Kurose & Ross.
728x90