티스토리 툴바


프로그램2009/07/15 14:35


BitTorrent(비트토렌트)는 개인들간을 p2p (peer-to-peer)로 연결하여 대용량 파일을 빠른 속도로 공유하도록
만들어진 프로토콜 이다 토렌트파일 (확장자가 .torrent로 끝나는 파일) 이라는 매우 작은 정보 파일 하나로
특별한 중앙서버의 지원 없이 분산된 정보를 연결 시켜 주는 비트토랜트는 2001년 브램 코헨(Bram Cohen )
이라는 미국의 젊은 프로그래머가 개발 하였다.
개발자인 코헨은 아무도 안 알아 주는 이 비트토렌트를 많은 사람에게 알리기 위하여 엄청난 물량의 "야동"을
자신의 서버로 직접 배포 하였고 때문에 토랜트=야동 이라는 인식이 아직도 일부 남아 있다. 하지만 워낙 뛰어난
기능은 곧 널리 알려지게 되었고 수 많은 트래커와 인덱스 사이트들이 좋은 콘텐츠(Content)를 제공 하게 되고
이제는 p2p의 최고봉으로 여겨 지고 있다.

비트토렌트 장점은 마치 전자 지문과 같이 특정 파일 정보를 지닌 torrent파일에 “info”라는 섹션에는 파일의 이름,
길이, 파일 조각의 길이, 그리고 파일의 무결성을 진단하기 위한 각 조각의 SHA-1 해시 코드(Hash Code) 포함
되어 있다. 비트토렌트 클라이언트를 이용하여 torrent파일을 열면 클라이언트는 tracker 서버에 접속을 하여 현재
공유파일의 Seeder와 Peer에 대한 정보를 가지고 온다. 다시 말해서 현재 다운을 받고 있는 사람과 업로드를 하고
있는 사람의 수를 가지고 오는데. 이 모든 사람들을 통 틀어서스웜(Swarm) 이라고 한다.
 
비트토렌트 프로토콜은 파일을 여러 조각으로 나누어서 전송을 하는데 한 조각의 최소크기는 256kb 정도 이다.
전체 파일 크기가 클수록 조각의 크기는 커진다  예를 들어, 4.37GB의 한 조각은 4.3MB 정도이다. 즉 한 파일을
1,000 조각 정도로 잘게 자르고 하나의 조각이 다운 받아질 때마다 해시 알고리즘(Algorithm)을 이용하여 에러의
여부를 점검 을 진행 한다.
Swarm 안에 있는 Peer의 숫자가 늘어나면 Peer 들이 서로 조각들을 공유하기 시작 하는데 다운을 받고 있는
Peer들은 랜덤하게 조각을 받아 서로 받은 조각들을 그 조각을 가지고 있지 않은 다른 피어들에게 나누어 주어
원본 파일을 가지고 있는 Seeder 에게 한조각을 받는 순간 즉시 다른 제3의 피어에게 그 조각을 나누어 주어
Seeder의 전송 부하를 분산 시켜 준다. 또 시더가 아닌 피어들 끼리도 그나마 자신이 받은 파일의 조각을 밑천
으로 자신에게 파일을 준 클라이언트와 패를 맞추어 그가 가지고 있지 않은 파일을 상대에게 주는 형식으로 공유의
효율성을 높인다.
 
즉 주는자와 받는자가 따로 작동 하는것이 아니라 현재 접속된 클라이언트 와 서로 주고 받으며 서로 공유를 하고
더 이상 주고 받을 것이 없을때는 다른 클라이언트에게 다른 조각을 요구 한다. 바로 이러한 영악함 때문에 공유의
효율성, 다운 받는 속도, 업로드 속도 등이 여타 p2p 와는 현격한 차이를 보이게 되는 것이다.
클라이언트 끼리의 연결은 트래커가 고리를 맺어 주는데 트래커는 일종위 중앙 서버 역활을 하지만 직접 원본
파일의전송에 관여를 안하기 때문에 매우 작은 대역폭 만으로도 엄청난 정보 전달 창구를 제공 할수 있다.
 
반면에 비트토렌트는  상호 연결의 폭이 토렌트 단위로 매우 세분화 되어 있기 때문에 그 폭이 매우 적고 사용자의
제어가 비교적 용이해 받기만 하고 지속을 안하는 사용자(먹튀)가 많아 자료의 공유 기간이 매우 짧다는 단점이
있으나 사용자의 범위와 수가 점점 늘어나며 (하도 급증 하는 추세라 집계가 불가능 하다고 한다..) 그러한 문제도
줄어 들고 있다.

트래커는 동일한 토렌트 파일을 오픈한 사람들끼리만 연결시켜 준다.
비트토렌트 클라이언트는 다른 p2p 클라이언트와 달리 독자적으로 오픈되지 않는다.
비트토렌트는 파일을 조각내어 공유한다는 면에서는 다른 p2p와 파일 공유 방식은 동일하다.
하지만 동일한 조건이라면(즉, 피어의 수와 회선의 속도가 같은 경우) 전송 방식이 매우 심플하여 다른 p2p 네트워크보다 속도가 훨씬 더 빠르다.
그 이유는 트래커(Tracker)는 파일의 내용에 관한 정보를 포함하고 있지 않기 때문에, 파일 공유 조정(Coordination)에 필요한 정보량이 다른 p2p방식 보다 훨씬 적어서 다운로드하려는 사람과 업로드 하는 사람간의 연결 속도가 빠르다.
트래커가 파일조각을 연결된 클라이언트들에 배분할 때 원칙적으로 따른 클라이언트가 받지 않은 조각들을 우선해서 배분해 준다. 즉, 각 클라이언트들에게 서로 다른 조각들을 우선해서 배분해주므로, 각 클라이언트가 같은 조각을 받기 위해 대기하는 시간을 최소화 해주고, 또한 각 클라이언트간에 서로 다른 파일 조각들을 교환하게 함으로써 최단 시간내에 파일 공유를 극대화시켜준다.

제작자 브램 코헨(Bram Cohen)의 설명에 의하면 Seeder(완전체를 가진 사람)가 없더라도 나머지 살아있는 클라이언트들이 가진 다른 파일 조각들의 합이 100 퍼센트이면 Seeder 없이도 파일을 100퍼센트 받을수 있다고 하지만 현실적으로 매우 어려운 이야기이다. 따라서 파일의 전송 속도 보다는 Seed의 유지가 매우 중요한 것이다.
비트토렌트는 다른 p2p방식에 비해 리소스를 훨씬 적게 사용하기 때문에, 비트토렌트 사용중 컴퓨터가 다른 작업이나 프로그램을 사용하는데에 큰 무리가 없다.
 
배포(seed): 완전체 파일을 가지고 업로드 해주는 사람을
시딩(Seeding): 파일을 배포하는 행위를 말한다.
시더(Seeder): 배포를 하는 클라이언트를 말합니다. 즉,배포자
피어(Peer): Peer는 같은 파일을 주고 받고 있는 모든 클라이언트를 말한다.
리치(Leech): 자료를 다운받는 사람. Leech가 다운을 종료하고 완전체 소유자가 되어 그대로 유지하면 시더가 된다. 원, 의미는 다운로드만 받거나 소위 히트앤런(받고 튀는것=먹튀) 등의 부정적인 의미가 내포 되어 있다. 그런데 일부에서는 peer를 leech로 표현하기도 하기도 하고 또는 peer에 포함시키기도 한다.
스웜(Swarm): 같은 파일을 서로 주고 받으며 얽혀 있는 Seed, Peer 를 합친무리
트래커(Tracker): 사용자들을 엮어주고 파일을 주고 받을 수 있도록 중개 역할을 하는 서버의 기능을 한다. 트랙커의 종류는 인증방법에 따라 공개 트랙커와 비공개 트랙커로 나누어진다.
벤(Ban): 회원 강제 탈퇴나 아이피 차단을 일컫는 말.
인덱스 사이트(Index Site): 토렌트 정보를 제공하는 사이트. 즉 무비알지나 btjunkie 같은 곳을 말 한다. 그런데 인덱스 사이트를 트랙커로 혼용하기도 한다. 
레이쇼(Ratio): 다운로드 대비 업로드의 수치를 의미 한다. 일부 비공개 트래커는 이 레이쇼로 불량 사용자를 가리는 척도로 사용 되어 진다.
가용(Available): 현재 나와 접속된(괄호 밖의 숫자) 피어(시더포함)의 조각의 합으로 만들수 있는 완전체의 예상 갯수.

http://board-4.blueweb.co.kr/board.cgi?id=wallsoon&bname=wallsoon2&action=view&unum=3&page=1

'프로그램' 카테고리의 다른 글

네이트온 4.0 광고 제거 패치  (0) 2009/07/21
TheWorld Browser 3.0.4.1  (0) 2009/07/18
비트토렌트  (0) 2009/07/15
Half-open limit fix 4.1  (0) 2009/07/15
HWMonitor Version 1.14.0  (0) 2009/07/02
CPU-Z Version 1.51  (0) 2009/06/29
Posted by kdi