[네트워크] P2P - BitTorrent

KoK·2022년 10월 12일
1

네트워크

목록 보기
2/4

🔎 P2P - BitTorrent

  • p2p방식
  • 파일을 여러개의 typical size의 chunks로 나누어 peer들에게 배분한다.
  • peer들끼리 세션을 생성하여 자신이 소유한 chunk정보를 알려주고 상대 peer로부터 필요한 chunk를 요청하여 받는다.
  • peer가 많아질수록 peer간의 세션 수는 증가하고, 사용자의 다운로드 속도도 늘어나게 된다.

Tracker: 파일의 chunk를 소유한 peer들의 정보를 가진 서버. 파일 자체 정보는 없고 torrent의 위치 정보만 가지고 있음
Torrent: 한 파일에 대한 chunk를 소유하고 이것을 공유하는 peer들의 그룹

  • peer는 자신의 정보를 tracker에 등록한 뒤, 파일정보 공유가 가능한 peer들의 목록중 일부를 랜덤하게 tracker로부터 얻는다(주기적으로 tracker는 peer들이 여전히 torrent에 속해 있는 지를 확인함).
  • peer는 tracker로부터 받은 peer들의 목록(=neighboring peer)에 존재하는 peer들의 일부와 세션을 만들어 연결을 시도한다.
  • 이러한 연결을 통해 파일을 다운로드 받는 과정에서 처음에 chunk를 가지고 있지 않던 peer도 점점 chunk를 모아 소유하게 된다.
  • peer는 chunk를 교환하는 peer들에게 자신이 가진 chunk를 공유하는 과정에서 영향을 줄 수 있다.(= churn-휘젓다)
  • peer가 전체 파일 정보를 얻게 되면, torrent를 자유롭게 떠날 수도 있고 남을 수도 있다.

[Requesting chunks]

  • peer들은 각각 서로 다른 chunks를 가지고 있다.
  • 주기적으로 peer는 peer들의 목록에 있는 peer들에게 그들이 소유한 chunk 리스트를 보내달라 요청한다.
  • peer는 자신이 소유하지 않은 chunk를 보내달라고 요청한다.
  • rarest first: 각 peer들이 소유한 chunk리스트를 토대로 그 중 가장 희소한 것들을 먼저 요청한다.

[Sending chunks: tit-for-tat]

  • peer는 chunk를 공유할 때 자신에게 가장 높은 비율로 chunks를 보내고 있는 4개의 peer들에게 자신의 chunks를 보낸다.
  • 이 외의 다른 peer들은 chunks를 받지 못한다.
  • 10초마다 높은 비율로 chunks를 보내는 4개 peer들을 재평가 한다.
  • torrent에 참여한 지 얼마 안된 신생 peer들의 위해 30초마다 랜덤하게 peer를 골라서 걔한테만 chunks를 공유해준다.
  • 선택된 이 peer를 optimistically unchoke한다고 말함. 낙관적으로 중단없이 전송해준다는 것.
  • optimistically unchoke하는 방식으로 peer와 랜덤으로 선택된 다른 peer가 서로의 top4안에 들게 될 수도 있다.
  • tit-for-tat은 Free riding을 막기 위해 만들어진 방법이다.

* 시간날 때 DHT(Distributed Hash Table)에 대해 공부해보기!

profile
100% + 100%

0개의 댓글