'토런트'에 해당되는 글 1건

  1. 2010.03.31 BitTorrent, 정보 공유의 벽을 무너뜨려라~ 1

BitTorrent, 정보 공유의 벽을 무너뜨려라~

|
1. Description

BitTorrent는 많은 양의 데이터를 확산시키기 위해 사용되는 P2P(peer-to-peer) 파일 공유 프로토콜(통신규약)이다.
BitTorrent는 대용량의 파일을 전송하기 위한 프로토콜로 가장 보편적이고 유명한 방법 중에 하나이며, 2009년 2월 통계로 전세계 인터넷 트래픽의 43% 이상을 차지할 정도이다.

2001년 4월 프로그래머 Bram Cohen에 의해 개발되어 2001년 7월 2일 첫번째 버젼이 배포되었으며 지금은 BitTorrent, Inc.사에 의해 운영되고 있다.

BitTorrent 사용자는 BitTorrent 프로토콜을 실행할 수 있는 어떤 종류의 프로그램이든 이용할 수 있다.
BitTorrent 프로토콜을 실행가능한 사용자 프로그램들로는
torrent의 선구자인 BitTorrent,
국내외 가장 많은 이용자를 보유하고 있는 uTorrent,
Mac이나 Linux에서 많이 사용하는 TransmissionDeluge 같은 프로그램들이 대표적이며,
이외에도 Azureus, BitComet 등등 그 종류는 매우 다양하다.

2. Operation

BitTorrent는
위에서 언급한 프로토콜과 호환되는 클라이언트 프로그램을 설치해야 한다. 이 프로그램들은 모두 .torrent라는 확장자 파일을 이용하여 파일을 공유할 수 있도록 되어 있다.

[ .torrent 파일 ]
씨앗파일이라고도 불리는 .torrent 파일은 공유하고자 하는 파일의 정보, 즉 메타데이터, 호스트 컴퓨터의 정보 등이 기록되어 있는 파일이다.

이 때 메타데이터(Metadata)란 어떤 데이터의 구조적 정보나 데이터를 분류하고 분석하기 위한 부가적인 데이터를 말한다. 예를 들면 디지털 카메라에서 사진을 찍어 저장할 때 화상데이터 외에 메타데이터로 카메라 정보와 촬영 정보(조리개수치, 초점, 촬영모드, 해상도 등)가 함께 저장되는 것이다.

Torrent 파일에도 이러한 메타데이터가 포함되어 있어 공유하고자 하는 파일의 구체적 정보와 함께, "트래커(Tracker)"의 URL 정보를 포함하고 있다.

즉 공유하는 파일의 네트워크상 위치, 파일의 이름 및 크기, 파일 조각의 구성 등의 정보를 담고 있어 이 파일을 torrent 클라이언트 프로그램 상에서 실행시키면 해당 파일을 함께 실행하고 있는 사용자와 파일을 주고 받을 수 있다.

이러한 .torrent 파일은 흔히 시드(seed) 파일 혹은 씨앗 파일이라고 부르고, 이 씨앗파일을 등록하고 필요한 사용자가 다운 받도록 연결해주는 곳을 트래커(Tracker)라고 한다.

위의 그림은 1개의 파일 제공자인 seeder(중앙 아래쪽 큰 컴퓨터)와 7개의 사용자간 torrent를 이용한 파일 공유 과정을 애니메이션으로 표현한 것이다. 7개의 사용자 아래 색깔로 표현된 것은 공유하고 있는 파일이며, 최초의 seeder(파일 제공자)는 파일을 한번 제공해준다. 이 후 각 파일을 받은 사용자끼리의 통신을 통해 파일을 주고 받기 때문에 어느 한 시스템에 의존하지 않는 전형적인 P2P 사용의 장점을 나타내고 있다.

[ 트래커(Tracker) ]
트래커란 torrent 파일이 등록되어 있는 웹사이트이다.

이 트래커에서는 torrent 파일을 다운 받아 비트토런트 클라이언트 프로그램을 이용하여 torrent 파일을 열 수 있다. 위에서도 언급했듯이 이 torrent 파일은 흔히 시더파일 혹은 씨앗파일이라 부른다. 파일을 공유하기 위한 최소한의 용량에 필요한 정보만을 포함하고 있는 파일이기에 이렇게 부른다.
이 씨앗파일 내에는 해당 트래커의 정보와 공유된 파일의 정보가 들어 있어 해당 트래커를 이용하여 파일을 공유하고 있는 모든 사람들과 파일을 주고 받을 수 있다.

물론 현재의 BitTorrent 프로그램들은 반드시 트래커를 거쳐야만 파일을 공유할 수 있는 것은 아니며 동일한 씨앗파일을 오픈하였다면 누구나 이용이 가능하다. 하지만 트래커를 이용하면 동일한 파일을 가지고 있는 사람들과의 연결이 매우 용이하기 때문에 일반적으로 트래커를 많이 이용하게 된다.

업로더와 다운로더를 연결해주는 곳인 트래커는 해당 트래커에 동일한 torrent 파일(즉, 동일한 hash code)을 오픈한 사람들끼만 연결시켜준다. 이때 트래커가 연결시켜준 이들의 정보, 즉 시더(seeder)와 리처(leecher)의 정보를 관리하게 된다.

BitTorrent에서 트래커의 역할은 파일 공유의 중심이 아니라, 네트워크 형성의 기점 역할만 한다. 이 점은 기존에 가장 유명했던 P2P 형태인 당나귀(eDonkey)와 비교되는 점이다. 기존의 당나귀 시스템은 중앙 네트워크 방식이었다면 BitTorrent는 분산 네트워크의 형태를 가지고 있다.

기존의 당나귀 네트워크는 서버 중심의 파일공유 시스템이어서, 서버접속 후 서버에게 다운받을 파일의 소스와 위치를 묻게 된다. 이 때 서버는 요청한 내용의 소스를 파악하고 다운로드와 업로드를 조정, 관할하기 때문에 서버의 의존도가 높다.

반면 BitTorrent는 torrent 파일의 오픈을 통해 지정된 트래커에 접속하게 되고 이 트래커에서 해당 파일에 관심이 있는 사람들끼리만 연결해주기 때문에 트래커가 소스를 찾기위한 시간은 필요없게 된다.

트래커는 크게 공개트래커와 비공개트래커로 나뉜다. 이는 해당 트래커의 접근 혹은 가입을 공개적으로 누구나 할 수 있느냐, 초대장 등의 방식을 통해 비공개적인 가입만을 허용하는냐의 차이이다.

비공개 트래커의 존재는 정보 공유의 경우 저작권 문제에 쉽게 휘말리기 쉽기 때문이다. 일반적인 트래커는 웹하드 업체들처럼 수익구조를 가지고 있는 것이 아니기 때문에, 자유롭게 가입만 하면 돈을 내고 파일을 다운받을 수 있는 것과는 그 구조의 차별화를 둘 수 밖에 없다.
이러한 수익구조를 가지고 있는 웹하드 업체들은 가입이 쉽고 탈퇴가 어려운 반면, 수익구조를 가지고 있지 않은 트래커들은 일반적으로 가입이 어렵고 탈퇴는 간단한 구조를 가지고 있다.

트래커는 운영 목적 자체가 공유라는 특성 때문에 컨텐츠의 내용의 보안이 중요시 된다. 또한 운영 면에서도 트래커의 운영자가 직접 자료를 구성하고 다운받도록 하는 것이 아니고 사용자가 자발적으로 자료를 올리고 다운받는 구조를 가지고 있어 운영자 입장에서 제한된 서버의 한도 내에서 상대적으로 적극적이며 양질의 사용자를 보호하고 싶은 목적에서 비공개트래커를 많이 운영한다.

이런 이유로 고레벨 혹은 좋은 비공개 트래커를 이용하기 위해서는 본인이 먹튀(원하는 파일의 다운만 받고 도망가는 유저)가 아님을 증명해야 한다. 즉 다운받는 파일의 양보다 업로드하는 파일의 양과 시간, 용량이 훨씬 높다는 것을 증명하여야만 가입을 위한 초대를 받을 수 있다. 또한 비공개 트래커를 지속적으로 이용하기 위해서는 지속적인 파일 업로드를 통해 자신의 계정을 관리해야만 가능하다.

[ 피어(Peer)의 개념 ]
피어(Peer)란 특정 자료에 접근한 모든 사용자를 말한다. 이는 P2P가 Peer-to-Peer의 약어이고, 이것은 사용자와 사용자를 직접 연결하는 방식을 공유를 의미하는 것이라면 좀 더 쉽게 이해가 될 것이다. BitTorrent에서도 피어의 개념은 이와 크게 다르지 않다.

BitTorrent에서는 이런 피어는 크게 시더(Seeder)리처(Leecher)를 함께 이컫는 말이기도 하다.

이 때 시더(Seeder)는 파일의 공급자 혹은 업로더의 개념으로 좀 더 정확하게는 해당 torrent의 파일을 모두 가지고 있는 사람을 의미한다. 시더의 수가 1명 이상이라면 온전히 파일을 모두 받을 수 있다는 뜻이다.
반면 리처(Leecher)는 흔히 해당 torrent를 다운받고 있는 사람을 의미하지만 좀 더 정확하게는 해당 torrent를 구성하고 있는 파일의 일부분을 보유하고 있는 사람을 의미한다. 이 리처는 현재 파일의 모든 부분을 갖고 있지는 못하지만 일부를 가지고 있는 상태이기 때문에 다른 이들에게 해당 부분을 다른 이에게 제공해줄 수도 있다.

즉 시더가 많은 torrent는 완전히 다운받을 확률이 높은 자료이며, 리처가 많은 torrent는 최신 자료이거나 혹은 현재 인기가 급상승 중인 자료일 확률이 크다. 이외에도 스내치(Snatch, 다운을 완료한 사람) 수가 많은 자료는 이전에 인기가 많았던 자료로 분류해 볼 수 있다.

[ 자료의 업/다운로드 ]
BitTorrent 프로토콜의 업/다운로드 과정은 위의 애니메이션 그림에 잘 나타나있다.

BitTorrent를 이용하여 트래커에서 필요한 자료를 확인하였다면 해당 자료의 씨앗파일(.torrent)을 내려받아 BitTorrent 클라이언트 프로그램에서 열면 된다. 이 때 BitTorrent 클라이언트 프로그램은 해당 씨앗파일에 포함된 트래커 서버에 접속해 현재 공유 파일의 시더와 리처 등의 피어 정보를 가지고 오며 이들과 해당 자료를 주고 받을 수 있도록 해준다.

처음에는 위의 그림과 같이 피어가 하나도 없을 것이다. 단지 해당 파일을 온전히 가지고 있는 최초의 시더만 존재한다. 새로운 사용자가 자료를 받기 위해 씨앗파일을 열었다면 이 시더로부터 자료를 받기 시작한다. BitTorrent 프로토콜은 파일을 여러 조각으로 나누어서 조그만 파일로 만든 후 이에 대한 정보를 씨앗 파일인 .torrent 파일에 담아두므로 시더로부터 자료를 다운받는 것은 이 작은 단위의 파일 조각을 하나씩 다운 받는 것이다. 그리고 하나의 조각이 다운 완료되면 해시(hash) 알고리즘을 통해 에러 여부를 점검한다.

여러 사람들이 파일을 다운 받기 시작하면서 피어의 숫자가 늘어나고 최초의 시더가 아닌 다른 피어들 사이에서도 가지고 있는 작은 파일 조각들을 공유하기 시작한다. 다운을 받는 피어들은 랜덤하게 파일 조각을 받기 때문에 서로 받은 조각들을 공유할 수 있으며, 이런 원리로 원본 파일을 가지고 있는 시더에게 전송 부하(Bandwidth)를 줄이게 된다.

P2P의 효율은 클라이언트 간의 데이터를 주고 받는 정책에 의해 결정되며, 특정 클라이언트는 자기에게 파일을 준 클라이언트에게 다시 파일을 주는 형식으로 구성하여 공유의 효율을 높인다. BitTorrent는 피어가 많을수록 효율이 좋아지며 당나귀와 같은 다른 P2P와는 다르게 Queue(줄) 서서 기다리는 것이 없다. 또한 BitTorrent는 "optimistic unchoking"이라는 메커니즘을 통해 클라이언트에 일정의 전송 부하를 할당해 무작위로 피어들한테 보내서 모든 피어들이 일정한 양의 조각을 가지고 있을 수 있도록 한다. 그렇게 되면 모든 피어들이 다 다른 조각을 가지고 있으므로 공유의 효율이 높아진다.

[ BitTorrent 프로토콜 작동의 특징 ]
지금까지 언급한 내용을 종합해보면, BitTorrent 프로토콜을 이용하여 파일 한 개(혹은 파일 그룹)을 공유하려면 우선 최초 시더는 .torrent 파일을 하나 생성해야 한다. 이 작은 씨앗파일은 공유할 파일 및 트래커에 대한 메타데이터를 담고 있다. 해당 파일을 다운 받고 싶은 리처는 우선 이 씨앗파일을 획득해야 하며 이를 위해 특정한 트래커에 접속해야 한다. 그리고 이 씨앗파일을 BitTorrent 클라이언트 프로그램 내에서 열게 되면 해당 정보를 공유하여 공유하고자 하는 파일의 조각들을 랜덤하게 받게 된다.

네트워크 상에서 파일을 업/다운로드 받을 수 있게 해준다는 점에서는 비슷하지만, BitTorrent 다운로드와 전통적인 Full-file HTTP 요청 사이에는 근본적인 차이가 있다.
  • 비트토런트는 많은 수의 소규모 P2P 요청을 여러 개의 TCP 소켓을 이용한다. 반면, 웹브라우저는 일반적으로 한 개의 HTTP 요청을 한 개의 TCP 소켓 상에서 생성한다.
  • 비트토런트는 랜덤 다운로드 방식 혹은 희귀한 것 우선(rarest-first) 다운로드 방식이다. 이런 방식은 높은 가용성을 보장한다. 반면 HTTP 다운로드는 순차적 방식이다.
이러한 차이로 BitTorrent 프로토콜은 아래의 특징을 지닌다.
  • 비트토런트는 위의 이유들로 매우 큰 신뢰도(redundancy)를 갖고 있어 어뷰즈(abuse)나 "플래시 크라우드"에 강한 면을 보인다.
  • 충분한 피어 접속을 위한 시간이 걸려 최고 속도에 이르기까지 시간이 걸린다.

3.  Postscript

BitTorrent 프로토콜은 블리자드 엔터테인먼트 월드 오브 워크래프트와 건즈 온라인 등과 같은 큰 용량의 파일 전송과 개인 자료 및 소프트웨어의 원할한 배포 및 제공을 위해 사용되고 있다. 이는 서버의 부하를 줄여 가용성을 높이기 위한 방법으로 BitTorrent의 장점을 활용한 것이다.

수년전까지 많은 사람들이 애용하던 P2P 시스템인 당나귀도 그 한계를 드러내며 이제는 BitTorrent 프로토콜을 이용한 자료의 공유가 대세를 이루고 있다.

국내에도 빗코리아(http://bitcorea.org)비트토크(http://bittalk.org)와 같은 토렌트 포럼을 통해 많은 사람들이 BitTorrent와 관련한 정보를 공유하고 있다. 이곳에서는 국내외 비공개 트래커들의 정보와 초대가 활발히 이루어지고 있지만 처음 접하는 초보자에게는 그리 호락호락한 편은 아니다.

이곳에서 비공개트래커는 진입은 마치 게임 상의 아이템 획득과 같이 수집욕을 불러일으키는 존재이다.

진입한 비공개트래커에서 퇴출(ban)당하지 않고 살아남기 위해서는 필요한 자료의 획득보다는 다른 사람의 필요를 미리 읽고 제공하거나 혹은 현재의 자료의 공유를 원할하도록 돕는 역할이 중요하다. 비공개트래커는 그 특성상 지속적인 시딩이 가능한 양질의 업로더, 즉 다운로더보다는 업로더에게 더 의미를 두고 우대하는 곳이기 때문이다. 이런 역할은 고레벨의 비공개트래커(주로 해외의 특성화된 트래커들)로 갈수록 더욱 어렵고 또한 많은 경험이 필요로 하기도 한다.

때문에 비공개트래커는 자료를 다운받고 제공하기 위한 곳이라기 보다 트래커에 진입하여 이를 관리할 대상으로서의 의미를 갖기도 한다. 이런 의미를 더 크게 두는 사람들을 일컬어 트래커콜렉터(Tracker Collector)라고 부르며, 이들에게 자료의 다운은 큰 의미가 없다. 이들에게는 사용자들이 많은 요구가 있을 법한 시기에 해당 자료의 공유를 돕고, 여기저기 흩어져 있는 파일들을 모아 잘 정리한 후 필요한 사람들의 용이한 접근을 도우며, 새롭게 트래커에 진입한 사람들의 원할한 트래커 활용의 적응을 돕는다. 

이러한 트래커의 종류에 대해서는 추후에 포스팅하도록 하겠지만, 우선 위의 국내 BitTorrent 포럼에서 그 정보를 하나씩 얻어보는 것도 좋을 듯 싶다.

BitTorrent는 애초의 빠른 파일 전송 및 공유의 목적을 넘어 또 다른 매니아들의 새로운 문화를 만들어가는 곳이기도 하기 때문이다.


And
prev | 1 | next