[네트워크]BitTorrent P2P system

정태규·2023년 4월 14일
0

네트워크

목록 보기
13/19

BitTorrent

✍️ Hybrid architecture

  • tracker를 기본으로하는 중앙화된 구조(중앙 서버가 있는 구조)

    서버는 밑에 사항을 포함하는 ".torrent"file을 유지한다.

    • tracker의 주소
    • 배포된 파일에 대한 정보
  • trackerless한 중앙화 되지 않는 구조(중앙 서버가 없는 구조)

    Kademlia DHT를 사용

✍️torrent file

three entities


peer들은 전체 파일을 가지고 있거나, 파일을 쪼개서 일부만 가지고 있다.
트래커를 통해 다른 피어들로 부터 파일 조각을 모아서 온전한 파일 하나로 합쳐서 파일을 다운로드 할 수 있게 된다.
피어 자신도 다른 피어의 요청이 오면 파일 조각을 건내주고, 이런 자신의 상태를 트래커와 공유한다.

  • tracker: swarm들을 관리한다. 어떤 peer가 seeder고 어떤 조각을 가지는지 알고 있다.
  • seeders: 전체 자료를 가지고 있는 peer
  • Leechers: seeder가 아닌 peer
  • swarm: file directory,file piece, file information 등등을 가지고 있는 같은 파일 형식지정자를 가진 content를 가지는 peer group

bitTorrent operation

  1. seeder가 한 완전한 content를 공유하길 원할때, seeder가 tracker에게 알린다. 그리고 토렌트 파일을 웹서버에 업로드한다.
  2. 그 content를 다운받기를 원하는 한 client가 웹서버에서 해당 토렌트 파일을 찾는다.
  3. 토렌트파일의 정보를 가지면, client는 tracker를 가지고 TCP connection을 만든다.
  4. traker로 부터 해당 content와 연관된 peer들의 리스트를 요청한다.
  5. tracker는 찾고있는 swarm이 있나 확인한다.
  6. swarm을 찾으면, tracker는 swarm으로부터 그들의 ip address와 peer number를 가진 정보를 제공한다.
  7. client는 tracker를 거치지 않고 직접 리스트에 있던 peer들과 연결을 시작한다.
  8. 다른 peer들은 같은 과정으로 content를 얻거나 제공한다.

requesting chunks

  • 주어진 시간에, 다른 피어들은 파일의 각각 다른 일부분을 가진다.
  • 주기적으로 서로 피어에게 그들이 가진 chunk 목록을 물어본다.
  • 각 peer들은 누락된 chunk들을 요청한다.(가장 드문 경우부터)

sending chunks:tit-for-tat

  • 현재 자신의 chunk를 가장 빠른 속도로 보낼 수 있는 4개의 peer에게 chunk를 보낸다.

    다른 peer들은 chunk를 받지 못하고 막힌다.
    10초마다 제일 빠른 4 peer를 재평가한다.

  • 30초마다, chunk를 보내기 시작할 peer들을 랜덤으로 선택한다.

    새롭게 선택한 peer들은 top4에 합류할수 있을 것이다.

이런식으로 더 빨라지게 된다.

0개의 댓글