출처 : http://www.torrentdown.com/bbs/board.php?bo_table=in_co_ta&wr_id=763&sca=&sfl=&stx=&spt=&page=9


비트토렌트란 무엇인가?

 

BitTorrent(비트토렌트)는 개인들간 피어투피어(peer-to-peer)로 연결하여 대용량 파일을 빠

른 속도로 공유하도록 만들어진 프로토콜이다. 트래커(tracker)라 불리는 중앙 서버가 사용자들간

의 파일 교환을 조정해 준다. 트래커는 사용자간의 연결만을 도와 줄 뿐이며 공유되는 파일의 내

용에 대한 정보는 취급하고 있지 않기 때문에 비교적 적은 대역폭으로도 많은 수의 사용자간의 파

일공유를 가능하게 해준다.
 
토렌트의 핵심 철학은 사용자들이 파일을 업로드 해 주어야만 다운로드 할 수 있다는 것이다.

즉 자신의 다운로드 속도는 자신의 업로드 속도에 비례한다. (이는 당나귀(eDonkey)를 이용해본

사람들은 잘 이해할 것이다.) 이렇게 함으로써 네트워크 대역폭을 가장 효율적으로 이용할 수 있

으며 특정 파일을 다운하고자하는 사람들의 숫자가 늘면 늘수록 토렌트를 통한 파일 공유의 효율

은 더 증가하게 되는 것이다.

 

 

 

비트토렌트는 어떻게 작동하는가?

 

비트토렌트를 이용해서 파일을 공유하려면 3가지가 필요하다.

(1) 비트토렌트 클라이언트, 즉 다운로드 프로그램,

(2) 공유 파일의 정보를 내장하고 있는 토렌트 파일 (확장자가 .torrent로 끝나는 파일)

(3) 클라이언트에게 파일의 소스의 위치를 추적(track)해 주고, 각 클라이언트간 파일의 업로드와
다운로드를 조정해 주는 트래커(tracker). 트래커는 당나귀 네트워크에서 중앙 서버의 역할을 해

준다.

 

비트토렌트 클라이언트는 당나귀 클라이언트와 달리 독자적으로 오픈되지 않는다.

즉, torrent 파일을 클릭하지 않는 이상 비트토렌트 클라이언트는 항상 비활성 상태로 있게 된다.


http://www.suprnova.org

 같은 토렌트 정보 사이트에 올라와 있는 토렌트 파일을 클릭하거

나 이미 자신의 컴퓨터에 다운로드 받아놓은 토렌트 파일을 클릭하면 비로소 비트토렌트 클라이

언트는 활성화되어 다운로드와 업로드 기능을 수행한다. 즉, 토렌트파일이 없는 경우는 작동하지

않는 것이다. 혹 시작메뉴에 있는 비트토렌트 클라이언트를 클릭하면 클라이언트는 토렌트 파일

을 열것을 요구한다. 토렌트 파일이 없으면 비트토렌트 클라이언트는 자동으로 다시 닫히게 된다.

 

트래커는 동일한 토렌트 파일(즉, 동일한 hash code를 가지고 있는 토렌트 파일)을 오픈한 사

람들끼리만 연결시켜 준다. 만일 내가 2개의 서로 다른 트래커에 등록된 2개의 토렌트 파일을 오

픈시켜 2가지 다른 파일을 동시에 다운로드 받고 있다고 한다면 (예를들

어,Lord.of.the.Rings.3.Screener.3CD.torrent와 Kill.Bill.Screener.2CD.torrent를 이용하여 두 영

화를 동시에 다운하는 경우),

내 컴퓨터에는 두개의 비트토렌트 클라이언트가 오픈 되어 서로 다른

트래커와 연결 되어 파일을 다운로드/업로드하고 있을 것이다. 이점이 비트토렌트가 당나귀 네트

워크와 가장 크게 다른점이다.

즉, 당나귀 네트워크는 서버 중심의 파일공유 시스템인데 반해, 비트토렌트 네트워크는 트래커가

중심이 아니라, 공유되는 파일을 중심으로 네트워크가 형성되는 것이다.

즉, 당나귀의 경우는 서버접속 --> 서버에게 다운받을 파일의 소스의 위치와 숫자 문의 --> 서버

가 소스파악/다운로드/업로드 조정의 순서로 일처리를 한다면, 비트토렌트의 경우는 토

렌트 파일 오픈 --> 지정된 트래커 접속 --> 트래커의 다운로드/업로드 조정의 순서로 일이 처리

되는 것이다.
 
따라서 비트토렌트의 경우는 토렌트 파일을 매개로 공유되는 특정 파일에 관심이 있

는 사람들끼리만 연결시켜 줌으로써 트래커가 소스를 찾기 위해 시간을 허비하지 않아도 되는 것

이다. 이런 이유로 당나귀 네트워크와 비교한다면, 당나귀는 중앙 네트워크 방식인 반면에, 비트

토렌트는 분산 네트워크 방식이라고 불리워지는 것이다.

 

비트토렌트의 분산 네트워크 방식은 당나귀에 비해서 빠른 연결과 다운로드/업로드 조정을 함

으로써 파일 공유 속도가 빠른 반면에, 네트워크의 안정성이 매우 약하다. 즉, 공유 네트워크가 특

정 파일에 관해 관심을 가진 사람들 위주로 분산적으로 형성되기때문에, 시간이 지남에 따라 파일
공유자의 숫자가 줄어 들면, 그만큼 특정 파일의 공유 네트워크의 폭이 줄어드는 것이다.

즉, 비트토렌트 네트워크는 생성되고 소멸되는 주기가 굉장히 짧은 일종의 게릴라식 네트워크라

는 것이다.

이 때문에 비트토렌트를 이용하여 오래전에 공유되었던 파일을 다운로드하기란 정말 어렵다.

최초로 공유된지 한달정도 지난 파일의 경우, 인기 있는 파일이어서 계속 공유자들이 릴레이 되지
않는 이상, 그 소스를 찾기란 당나귀처럼 쉽지 않다.

그대신 많은 사람들이 동시에 관심을 가지고 있는 최신의 파일인 경우는 동시에 많은 사람들이 공

유하기 때문에 쉽고 빠르게 다운로드 할 수 있다. (하지만 최근에는 비토렌트 서치엔진


http://www.n4p.com 같은 것이 등장하고, 또 트래커의 안정성이 예전보다 향상되고 있기 때

문에, 파일 공유주기가 예전에 비해 점점 늘어나고 있는 추세이다. 따라서 비트토렌트 네트워크를
통해서 구할 수 있는 파일의 숫자가 엄청 늘어나고 있음.)

 

 

 

비트토렌트가 당나귀와 다른 점은 무엇인가?

 

비트토렌트는 당나귀 네트워크와 같이 파일을 조각내어 공유한다는 면에서는 파일 공유 방식

이 동일하다. 하지만 동일한 조건이라면 (즉, 소스를 가지고 있는 사람의 수와 인터넷 회선의 속

도가 같은 경우) 당나귀 네트워크보다 다운로드 속도가 훨씬 더 빠르다.

왜냐하면, (1) 파일의 소스를 추적(track)하여 원하는 사람에게 연결시켜 주는 당나귀 네트워크의
중앙 서버 역할을 하는 트래커(tracker)는 파일의 내용에 관한 정보를 포함하고 있지 않기 때문에,
파일 공유 조정(coordination)에 필요한 정보량이 당나귀네트워크 방식보다 훨씬 적어서 다운로

드하려는 사람과 업로드 하는 사람간의 연결 속도가 더 빠르기 때문이다.

(2) 파일 찾기 기능이 없는 것이 단점이기는 하지만 이것 또한 다운로드 속도가 당나귀에 비해 빠

른 이유 중에 하나이다. 당나귀와는 달리, 비트토렌트는 이미 설명했듯이 분산 네트워크 방식을

취한다. 즉 트래커는 오직 하나의 공유 단위(단일 파일일 수도 있고 여러개의 파일을 포함한 디렉

토리일 수도 있음)에 관심이 있는 사람들끼리 연결을 시켜준다.

(3) 트래커가 파일조각 (file parts)을 연결된 클라이언트들에 배분할 때 따른 클라이언트가 받지

않은 조각들을 우선해서 배분해 준다. 즉, 각 클라이언트들에게 서로 다른 조각들을 우선해서 배

분해주므로, 각 클라이언트가 같은 조각을 받기 위해 대기하는 시간을 최소화 해주고, 또한 각 클

라이언트간에 서로 다른 파일 조각들을 교환하게 함으로써 최단 시간내에 파일 공유를 극대화시

켜준다.

(4) 또한 비트토렌트는 당나귀에 비해 리소스를 훨씬 적게 사용하기 때문에, 비트토렌트 사용 중

컴퓨터가 느려진다거나 하는 일이 없으므로 다른 프로그램을 사용하는데에 큰 지장이 없다.

 

그 대신 비트토렌트의 경우는 당나귀와 같은 검색 기능이 없다. 당나귀의 경우는 사용자가 다

운로드 받은 파일을 공유 폴더에 넣어 두기만 하면 자신은 다른 파일을 다운 받더라도 그것을 원

하는 사람이 서버를 통해서 계속해서 그 파일을 다운 받을 수 있지만 (즉, 업로드/다운로드 파일

이 다를 수 있지만), 비트 토렌트의 경우는 소스를 가진 사람이 토렌트 파일을 오픈시켜 놓지 않

는 이상 (이를 seeding이라 한다. 즉, 완전체를 가진 사람이 업로드만 해주는 경우, 이를 시딩이

라고 한다.) 파일의 소스를 구할 수는 없는 것이다. (제작자 Bram Cohen의 설명에 의하면seeder

(완전체를 가진 사람)가 없더라도 각 클라이언트들이 가진 서로 다른 파일 조각들의 합이 100 퍼

센트이면 seeder없이도 파일을 100퍼센트 받을수 있다고 함.)

 

파일 검색 기능이 없는 것이 비트토렌트의 불편한 점이기는 하지만, 무수히 많은 공유 사이트

를 통해서 많은 사람들이 관심을 갖고 있는 최신 파일(영화/게임/애니/유틸 등등)을 구하기란 어

렵지 않다.

 

당나귀를 어느 정도 사용한 사람이라면 몇시간, 아니 몇일동안 다운받은 파일이 가짜(페이크)

로 드러나, 허탈해서 화가난 적이 한번쯤은 다 있을 것이다. 하지만, 토렌트 네트워크에서는 가짜

파일이 거의 없다.

 

당나귀의 경우는 다운로드하는 파일과 업로드 하는 파일이 다를 수 있다. 하지만 비트토렌트

의 경우는 2개 이상의 토렌트를 오픈시키지 않는 이상, 다운로드와 업로드하는 파일이 다를 수 없

다. 즉, 특정 토렌트 파일을 오픈시키면 자신이 그 토렌트에 담겨있는 파일을 다운로드하고 동시

에 업로드하는 것이다.

 

당나귀의 경우 공유 단위가 단일 파일인 반면, 비트토렌트는 공유 단위가 파일뿐만 아니라 복

수의 파일을 포함한 디렉토리도 포함된다. 즉, 당나귀 네트워크에서는 복수의 파일을 공유할 경우
압축을 하거나 시디 이미지로 만들어서 1개의 파일로 만들어야만 공유가 가능하지만, 비트토렌트

에서는 자신의 하드에 있는 디렉토리 자체를 하나의 토렌트 파일에 담아서 공유가 가능하다. 물론
별도로 토렌트 파일을 만들어야 하는 번거로움이 있기는 하지만, 공유를 위해 여러개의 파일을 단

일 파일로 압축을 하거나 하나의 시디 이미지로 만들 필요가 없다는 것이다.

 

 

 

그럼 언제 어떤 용도로 비트토렌트를 사용하는것이 좋은가?

 

위에서 살펴보았듯이, 토렌트는 당나귀에 비해 빠른 다운속도라는 장점이 있는 반면, 네트워

크의 안정성, 파일 검색 기능, 오래된 파일을 구하기 힘든점 등의 단점이 있다. 그리고 아직 한국

에서는 쓰는 사람이 많지 않기 때문에 한국 관련 파일도 많이 공유되고 있지 않다. 따라서 현재로

서는 최근에 외국에서 새로 나온 영화/게임/음악/유틸/등등을 다운 받는 경우에 사용하면 당나귀

보다 훨씬 빠른속도로 다운 받을 수 있으리라고 생각된다. 당연한 말이겠지만, 한국 사용자가 늘

면 늘수록 한국 관련 파일들도 비트토렌트를 통해서 구할 수 있게 되리라고 본다.


용어정리

업/다운로드 받을때 나오는 메뉴에 대해 간략하게 설명 드리겠습니다
 
이름    번    크기    완료  상태    배포  피어  다운속도  예상시간  업로드    비율  가용
 
 
 
이중에 이름/번/크기/완료/상태 까지는 누구나 다 아실테고
배포 부터 설명 드리겠습니다
 
* 배포(seeds) -    X (Y)
 
여기서 X 는 자신에게 달라붙은 완전체 값입니다
즉, 100% 인  사람이 몇명이 나에게 화일을 보내주고 있냐 입니다
 
Y 는 현재 온라인 상의 총 완전체 갯수입니다
Y 가 0 이면 완전체가 현재 없다는 것이죠
 
  만약, 자신이 직공으로 화일을 최초 공유 하는 사람이거나 다운이 완료되어 배포자가 되었다면
X 값은 항상 0 입니다
왜냐하면 자신에게 화일을 받아 완료..즉, 100%가 되는순간 그사람은 배포자가 되어
(Y 값이 1증가) 나에게서 떨어져 나가게 되기 때문입니다... 100%를 가지고 있는 사람끼린
서로 화일을 주고 받을 일이 없기때문에... 붙을 필요가 없는것이죠
또... 만약... 어떤사람이 최초 공유자에게서 화일을 받아
다운로드 완료가 되었는데... 토렌트 상의 Y값이 1 증가하지 않는다면
그사람은 다운만 받고 공유를 꺼버린게 되는것이죠
 
직공을 해서 최초 공유를 하다보면 X값은 항상 0이고 Y값이 시간이 흐름에 따라 점점 증가하는것을 보게되고
다운받는 입장이라면... 접속하여 다운되는 순간 X값과 Y값은 일정한 수치를 이미 가지고 있는것을 볼수 있습니다
 
*피어(peers) - A (B)
 
A는 자신에게 붙은 모든 사람을 뜻합니다. 
내게서 다운을 받아가건... 내게 화일소스를 보내주건, 완전체이건.. 받고있는 도중이건....
나와 관계된 사람은 모두 A숫자에 포함됩니다
 
B는 완료된 사람(완전체)을 제외한 이 화일에 관계된 모든 사람을 뜻합니다
나와 관계없고... 서로 지들 끼리 주고받아도... 나와 같은 화일을 주고 받는것이라면
이 숫자에 포함 됩니다
 
*업로드
 
자신이 토랜트를 통해서 여러사람에게 보내준
화일에 대한 총 용량 입니다
다시말해 업로드 양이죠
 
*비율(ratio)
 
화일의 총 용량과... 자신이 업로드한 양에 대한 비율입니다
곱하기 100을 하면 % 값이 나온다고 생각 하심 됩니다
 
*가용(avail)
 자신과 위에 얘기한 A,B들이 현재 가지고있는 소스들을 주고받으면 몇개의
완전체를 만들수 있냐는 소리입니다
 
만약, 자신이 화일을 최초 공유하는 소스라면
공유를 시작하는순간 가용은 1부터 시작합니다
자신이 완전체 이기 때문에 백분율로 따지자면 곱하기 100을 해서
100프로 부터 시작하는것이죠
 
자신이 업로드를 하다보면 배포값 즉 X,Y가 모두 0 일경우라도(완전체가 나 외엔 존재하지 않을경우)
 가용이 2.000 (200%) 가 넘어가 버리면
내가 공유를 끊더라도... 자기들끼리 서로 주고 받아서 완전체를 만들수 있다는 뜻입니다
그러니... 공유를 하다가 2가 넘어가 버리면 공유를 끊고 나와버려도... 계속 완전체가 공유 된단 소립니다...
즉.. 최초 공유를 할때 Y가 1이상이 되거나 가용이 2 이상이 되면 공유를 끊어도 된다는 것이죠
물론 최초 다운로드 완료자가 공유를 끊고 나가지 않는다는 전제하에서말이죠
 
또, 다운자 입장에서...자기가 다운을 받으러 들어갔는데... 완전체가 한명도 없이...
가용이 1이 넘는다면
배포자가 없어도 화일을 끝까지 다 받을수 있다는 얘기입니다
반대로, 배포자(Y)도 0 이고....가용이...0.899  이렇게 되있다면
이화일은 89프로에 까지밖에 받을수 없는 화일입니다
물론 받는 도중..... 완전체가 나타나 마저 공유가 된다면
끝까지 받을수 있겠죠

'개발도 하냐?' 카테고리의 다른 글

hidden frame  (0) 2009.12.27
SI프로젝트 산출물  (0) 2009.12.14
SI개발자 발전단계  (0) 2009.12.06
무능력한 개발자  (0) 2009.12.06
자바개발시 점검사항  (0) 2009.12.06

+ Recent posts