글 작성자: 써니루루
출처 : http://www.mimul.com/pebble/default/2007/05/20/1179671460000.html

BitTorrent의 구조는 아래 그림과 같다.



사용자 삽입 이미지


먼저 BitTorrent는 File Server에 호스팅된 torrent파일과 Tracker, Peer들로 구성된다.

우리가 가장 궁금한 것은 BittTorrent 방식에서의 다운로드는 어떻게 되는가인데..

이 부분은 원본 사이트의 내용을 참조하도록 한다.


특정 이용자가 올린 파일은 BitTorrent 프로토콜의 운영에 동의한 파일이라는 가정하에 아래 시나리오를 정리했습니다.
  • 클라이언트인 Leech가 원하는 파일을 얻기 위해서 Tracker에 Peer-List의 정보를 요청하여 정보를 받습니다.
  • Leech는 클라이언트 정보를 파악하여 네트워크나 서버 정보가 좋은 클라이언트에게 Hash정보를 가지고 특정 파일 조각(pieces)을 요청한다.
  • Seed는 특정 파일 조각(pieces)을 Leech에게 제공한다.
  • Leech는 파일의 조각의 해시값을 비교하여 파일을 조합한다. 이때 Leech는 다운로드 받을 전체 파일의 사이즈를 미리 할당해 놓은 상태입니다.
  • Seed가 자신의 서버 부하 상태가 나빠질 경우 uncoke를 통해서 Tracker와 최신의 상태 정보를 공유하게 됩니다.

BitTorrent의 제한점

  • 파일 다운 받을 수 있는 Peer정보들을 가지고 있고 수시로 Peer정보를 최상의 상태로 만들어야 하기에 Tracker의 성능이 좋아야 한다. Tracker가 다운되면 BitTorrent 시스템은 불가능하게 된다.
  • 파일 조각의 사이징에 따라 다운로드 성능에 영향을 많이 받는다.
  • 작은 파일들의 전송시에 네트웍 오버헤드가 높아진다.
  • Peer들에게 Attack의 대상이 되기도 한다.

보완 되어야 할 점

고객들의 자원을 활용하므로 인해 네트워크에 대한 비용 전가에 대한 혜택을 제공해야 합니다. 그리고 Peer들의 공격의 대상이 될 수도있고 바이러스의 전파 경로로 활용, 보안 등으로 이용될 수 있어 이런 문제점 해결이 보완되어야 합니다.