[Computer Network] 2-5 P2P 파일 분배

2025. 4. 13. 23:27·Computer Science/Computer Network

본 내용은 컴퓨터 네트워크 - 하향식 접근 책을 바탕으로 정리하였습니다. 

 

P2P applications

1. Pure P2P architecture

P2P 구조: 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하는 방식.

  • 피어는 서비스 제공자가 소유하지 않고, 사용자들이 제어하는 데스크톱과 랩톰임. 
  • 한 피어가 서버 역할을 하기도 하고, 클라이언트 역할을 하기도 함.

 

2. File distribution: client-server vs P2P

  • u_s: 서버의 접속 링크 업로드 속도
  • u_i: i번째 피어의 접속 링크 업로드 속도
  • d_i: i번째 피어의 접속 링크 다운로드 속도
  • F: 분배되는 파일의 크기
  • N​: 파일의 복사본을 얻고자 하는 피어들의 수

클라이언트-서버 

  • N개의 피어에게 업로드 속도 u_s로 파일을 분배하는 시간 -> NF/u_s
  • d_min이 가장 낮은 다운로드 속도를 가진 피어의 다운로드 속도를 나타낸다고 할 때, 최소 분배 시간 -> F/d_min

P2P

  • 서버만이 갖고있는 파일이 피어 커뮤니티에 도달할 수 있도록 하기 위해, 서버는 적어도 한 번 접속 링크로 파일의 각 비트를 보내야 함.
    • 최소 분배 시간 -> F/u_s
  • 클라이언트-서버 구조와 마찬가지고 최소 분배 시간 -> F/d_min
  • 시스템의 전체 업로드 용량 = 서버의 업로드 속도 + 각 피어들의 업로드 속도
    • NF/(u_s + u_1 + ... + u_N)

F/u = 1, u_s = 10u, d_min >= u_s 로 설정하면

클라이언트-서버 구조 -> NF/u_s = N/10

P2P 구조 -> NF/(u_s + u_1 + ... + u_N) = N/10+N 

 

3. BitTorrent

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

  • 토렌트(torrent): 특정 파일의 분배에 참여하는 모든 피어들의 모임
  • 청크(chunk): 토렌트에 참여하는 피어들이 서로에게서 같은 크기의 청크를 다운로드함.
  • 트랙커(tracker): 각 토렌트는 트랙커라고 부르는 기반구조 노드를 갖고 있음. 각 피어가 토렌트에 가입할 때 트랙커에 자신을 등록하고 주기적으로 토렌트에 있음을 알림으로써, 트랙커는 토렌트에 참여하는 피어들을 추적함. 
  • 과정
    • 새로운 피어 A가 토렌트에 가입할 때 트렉커는 참여하고 있는 피어 집합에서 임의로 피어들의 부분 집합을 선택하여 이들 피어들의 IP 주소를 A에게 보냄.
    • 이 피어들의 리스트를 얻고 나서, A는 이 리스트에 있는 모든 피어들과 동시에 TCP연결을 설정함. 성공적으로 TCP 연결을 설정한 모든 피어들을 "이웃 피어"라고 함.
    • A는 이웃 피어들에게 그들이 갖고 있는 청크 리스트를 요구하고 주고 받음.
  • 어떤 청크를 요구할 것인가?
    • 가장 드문 것 먼저(rarest first) - 이웃들 중에 가장 적은 반복 복사본을 가진 청크. -> 가장 드문 청크들은 더 빨리 재분배 될 수 있음!
  • selfishly, altruistically
    • selfishly: 한 피어가 전체 파일을 얻으면 토렌트를 (이기적으로) 떠남.
    • altruistically: (이타적으로) 토렌트에 남아서 다른 피어들로 청크를 계속해서 업로드 함.
  • unchocked, optimistically unchocked
    • A가 비트를 수신하는 속도를 측정하고 가장 빠르게 전송(highest rate)하는 4개의 피어들을 결정함. 그리고 나서 A는 4개의 피어들에게 청크를 보냄. 매 10초마다 재계산해서 4개의 피어 집합을 수정함.
    • 이 4개의 피어들을 활성화(unchocked)라고 함! 
    • 30초마다 임의로 하나의 피어를 추가로 선택해 그것에게 청크를 보냄. 이렇게 선택된 피어를 낙관적으로 활성화(optimistically unchocked)되었다고 함! 
  • tit-for-tat
    • "가는 말이 고와야 오는 말이 곱다!" 라는 말과 같음!
    • 위에 적은 교역을 위한 보상 방식

 

'Computer Science > Computer Network' 카테고리의 다른 글

[Computer Network] 3-1 Transport Layer  (0) 2025.04.16
[Computer Network] 2-6 비디오 스트리밍과 컨텐츠 분배 네트워크  (2) 2025.04.14
[Computer Network] 2-4 DNS  (0) 2025.04.09
[Computer Network] 2-3 FTP, electronic mail  (0) 2025.04.08
[Computer Network] 2-2 Web and HTTP  (0) 2025.04.07
'Computer Science/Computer Network' 카테고리의 다른 글
  • [Computer Network] 3-1 Transport Layer
  • [Computer Network] 2-6 비디오 스트리밍과 컨텐츠 분배 네트워크
  • [Computer Network] 2-4 DNS
  • [Computer Network] 2-3 FTP, electronic mail
찌요.
찌요.
  • 찌요.
    jiho's Tech Blog
    찌요.
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • Computer Science (14)
        • Computer Network (12)
        • Operating System (2)
      • Backend (2)
        • Node.js (2)
      • Program Solving (38)
        • Python (30)
        • C++ (8)
      • 회고록 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    boj
    OS
    CCW
    백준
    UDP
    P2P
    CDN
    Checksum
    해시맵
    Protocol
    C++
    Internet
    누적합
    시뮬레이션
    computer network
    vector
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
찌요.
[Computer Network] 2-5 P2P 파일 분배
상단으로

티스토리툴바