비트토렌트란 무엇인가요?
페이지 정보
작성자 서진네트웍스 댓글 0건 조회 33,594회 작성일 09-07-24 14:20본문
비트토렌트란?
비트토렌트(BitTorrent)는 P2P(peer-to-peer) 파일 전송 프로토콜의 이름이자 그것을 이용하는 응용프로그램의 이름이다. 비트토렌트를 이용하면 파일을 인터넷 상에 분산하여 저장하여 놓고 다수의 접속을 사용하여 여러 곳에서 동시에 파일을 가져오게 되어 전송 속도가 빨라진다.
비트토렌트 프로토콜은 프로그래머 브램 코헨이 창안하였는데, 그는 2001년 4월 이것의 설계를 하였고 최초의 구현을 2001년 7월 2일 발표하였다. 현재는 코헨이 창립한 회사인 비트토렌트, Inc.가 이것을 유지보수하고 있다. 본래 비트토렌트 프로그램은 파이썬으로 작성되었으며 오픈 소스 저작권하에서 배포되고 있다. 요즘에는 비트토렌트 프로토콜과 호환되는 각종 비트토렌트 클라이언트가 수없이 나와 있다. 각양각색의 프로그래밍 언어로 쓰여진 것, 각양각색의 컴퓨팅 플랫폼 상에서 동작하는 것들 말이다.
이 프로토콜을 사용하는 인터넷 트래픽이 전세계 인터넷 트래픽 중 상당 부분을 차지하고 있다. 하지만 정확한 통계는 측정할 수 없는 것으로 알려져 있다.
이용 방법
이 움직이는 그림에서, 모든 클라이언트 아래에 있는 색으로 된 막대들은 각 파일의 부분을 보여 준다. 제공자로부터 초기의 조각을 전송 받으면, 이러한 조각들은 개별적으로 클라이언트끼리 전송한다. 초기의 제공자는 모든 클라이언트가 복사본을 받을 수 있도록 파일의 복사본을 하나 보내야 한다.비트토렌트 프로토콜을 이용하기 위해서는 비트토렌트 프로토콜과 호환되는 비트토렌트 클라이언트를 설치해야 한다. 비트토렌트를 이용해서 파일을 공유하고 싶으면 첫째 torrent 파일을 생성해야 한다. Torrent 파일 공유를 하고자 하는 파일에 해당되는 메타 데이터를 저장하고 있는 작은 파일이다. Torrent 파일에는 공유하고자 하는 파일의 정보, 호스트 컴퓨터의 정보 등이 정해져 있다. Torrent 파일의 구체적인 내용은 비트토렌트 프로토콜 버전에 따라서 다르다. Torrent 파일 형식은 항상 .torrent이다.
.torrent 파일
Torrent 파일에는 “announce” 섹션이라고 있는데 이것은 “tracker”의 URL 정보를 가지고 있다. Tracker란 일종의 서버로 swarm안에 seeder와 peer를 모니터링 한다. 클라이언트는 tracker 서버로 자기 정보를 보내고 현재 swarm안의 seeder와 peer에 관한 정보를 받는다. Tracker 서버는 데이터 전송에 직접적인 영향이나 관계는 없으며 공유되는 파일의 복사본을 가지고 있지 않는다. 현재 비트토렌트 버전은 tracker 서버 없이도 구현이 가능하도록 되어 있다. 그러나 대부분이 비트토렌트는 현재까지는 tracker 서버를 많이 사용하고 있다.
torrent파일에“info”라는 섹션은 파일의 이름, 길이, 파일 조각의 길이, 그리고 파일의 무결성을 진단하기 위한 각 조각의 SHA-1 해시 코드가 포함되어 있다. 파일을 다 받은 클라이언트는 Seeder 역할을 수행할 수 있어서 파일 공유의 효율을 높일 수 있다.
공유하고자 하는 파일의 torrent파일을 생성한 후에는 웹사이트 등에 torrent파일을 publish해서 tracker 서버에 등록을 할 수도 있다. 이 방식은 현재까지 가장 많이 사용되고 있는 torrent 파일의 공유 방법이다.
업/다운로드
사용자는 torrent파일이 등록되어 있는 웹사이트에 가서 torrent파일을 다운 받아 비트토렌트 클라이언트를 이용하여 torrent파일을 연다. 비트토렌트 클라이언트는 tracker 서버에 접속을 하여 현재 공유파일의 Seeder와 Peer에 대한 정보를 가지고 온다. 다시 말해서 현재 다운을 받고 있는 사람과 업로드를 하고 있는 사람의 수를 가지고 온다. 이 모든 사람들을 통 틀어서 Swarm이라고 한다.
처음에는 Peer가 하나도 없을 수 있다. 단지 처음 파일을 올린 사람인 Seeder만 있을 수 있다. 이렇게 되면 첫 Seeder로부터 파일을 받기 시작을 한다. 비트토렌트 프로토콜은 파일을 여러 조각으로 나누어서 조그만 파일로 만들어서 전송을 한다. 일반적으로 한 조각의 크기는 256kb 정도 이다. 일반적으로 파일 크기가 클수록 조각의 크기도 커진다. 예를 들어, 4.37GB의 한 조각은 4.3MB 정도이다. 하나의 조각이 다운 받아질 때마다 해시 알고리즘을 이용하여 에러의 여부를 점검한다.
여러 사람들이 파일을 다운 받기 시작하면서 Swarm안에 있는 Peer의 숫자는 늘어난다. Peer들이 생기면서 서로 조각들을 공유하기 시작한다. 다운을 받고 있는 Peer들은 랜덤하게 조각을 받기 때문에 서로 받은 조각들을 공유를 할 수 있게 된다. 그러므로 원본 파일을 가지고 있는 Seeder에 밴드위스 부하를 줄인다.
P2P의 효율성을 높이는데 중요한 역할을 하는 요소는 클라이언트간의 데이터를 주고 받는 정책이다. 클라이언트들은 자기에게 파일을 준 클라이언트에 다시 파일을 주는 형식으로 구성하여 공유의 효율성을 높인다. 이러한 여러 가지 정책에 따라 공유의 효율성, 다운 받는 속도, 업로드 속도 등의 차이가 난다. 비트토렌트는 공유를 많이 할수록 좋으며 대신 다른 P2P와 다르게 Queue(줄) 서서 기다리는 것이 없다. 비트토렌트는 “optimistic unchoking”라는 메커니즘을 이용한다. 이 메커니즘은 클라이언트의 일정의 밴드위스를 할당하여 무작위로 Peer들한테 조각을 보내서 모든 Peer들이 일정한 양의 조각을 가지고 있을 수 있게 한다. 그렇게 되면 모든 Peer들이 다 다른 조각을 가지고 있게 되므로 공유의 효율성이 높아진다.
동작
비트토렌트 프로토콜을 구현하기만 하면 비트토렌트 클라이언트라고 간주할 수 있다. 각 클라이언트는 이 프로토콜을 사용하여 임의의 종류의 컴퓨터 파일을 네트웍 상에서 예비하고, 요청하고, 전송할 수 있다. 이 때, 클라이언트가 동작하고 있는 컴퓨터를 피어라 부른다.
파일 한 개(혹은 파일의 그룹)을 공유하고 싶으면, 우선 피어는 torrent를 하나 생성해야 한다. 이 작은 파일은, 공유할 파일 및 tracker(파일 디스트리뷰션을 조율하는 컴퓨터)에 대한 메타데이터를 담고 있다. 피어는 어떤 파일을 받기 위해서는, 우선 그 파일을 위한 torrent 파일을 획득하여야 하며, 그 파일의 조각조각을 받기 위해서 어떤 피어들에게 접속해야하는지를 알려주는 소정의 tracker에 접속해야 한다.
네트웍 상에서 파일을 다운로드 받을 수 있게 해준다는 점에서는 비슷하지만, 비트토렌트 다운로드와 전통적인 풀-파일 HTTP 요청 사이에는 다음과 같은 근본적인 차이가 있다:
비트토렌트는 많은 수의 소규모 P2P 요청(request)를 여러 개의 TCP 소켓을 이용하여 생성한다. 반면, 웹 브라우저는 일반적으로 한 개의 HTTP GET 요청(request)를한개의 TCP 소켓 상에서 생성한다.
비트토렌트 다운로드는 랜덤(random) 방식이거나 "희귀한 것 우선"(rarest-first) 방식이다. 이러한 어프로치는 고 가용성(high availability)를 보장한다. 반면 일반적으로 HTTP 다운로드는 순차적 방식이다.
상기 두 가지 차이점 덕분에, 비트토렌트는 매우 싼 값에, 매우 큰 리던던시(redundancy)를 확보할 수 있었으며, 일반적인 HTTP 서버보다 어뷰즈(abuse) 나 "플래시 크라우드"에 강한 면모를 보인다. 하지만 이러한 프로텍션 효과는 그냥 얻어지지는 않는다: 다시 말해 다운로드는 최고 속도(full speed)에 이르기까지 시간이 걸린다. 왜냐하면 충분한 피어 접속들이 이루어지기까지는 시간이 걸리기 때문이며, 또한 한 개의 노드(node)가 효용 있는 업로더(uploader)가 되기까지 충분한 데이터를 받아놓는 데까지 시간이 걸리기 때문이다. 결론적으로 일반적인 비트토렌트 다운로드는 처음에 낮은 속도로 시작하였다가 속도가 점점 증가해 최고 속도에 이르게 되며, 다운로드의 종료시점까지 점점 속도가 떨어지게 된다. 이러한 점에서, 매우 빨리 최고 속도에 이르며 스피드 스루아웃(throughout)을 계속 유지하는 HTTP 다운로드와는 차이가 있다.
일반적으로, 인접 구간을 받지 않는(non-contiguous) 비트토렌트 다운로드 방식으로서는 "프로그레시브 다운로드"나 "스트리밍 재생"의 구현이 어렵다고 간주되어 왔다. 최근들어, 브램 코헨은 토렌트 다운로드를 이용한 스트리밍 재생이 널리 구현될 것이라고 언급하기는 하였지만 말이다.
프로토콜의 채택
개인이나 회사가 비트토렌트를 사용하여 그들 소유의 라이선스가 있는 자료를 배포하는 사례가 늘고 있다. 하드웨어 및 밴드위스 요구를 줄여주는 비트토렌트 기술이 없었다면, 이러한 개인이나 회사가 그들의 파일을 배포하는 데에는 꽤 많은 비용이 들었을 것이다.
영화, 비디오, 음악
BitTorrent Inc. 는 할리우드 스튜디오로부터 라이선스를 몇 개 받아 놓은 상태이다. 이 회사 웹사이트에서 인기있는 콘텐트들을 배포하기 위함이다.
Sub Pop 레코드는 1000여 개의 앨범을 배포하기 위해 곡(track)들과 비디오들을 비트토렌트 Inc. 를 통해 배급하고 있다. 음악 밴드인 윈(Ween)은 공짜 오디오와 비디오 레코딩 및 라이브 쇼를 배포하기 위해 웹사이트 Browntracker.net 을 사용하고 있다. 또한 Babyshambles 및 The Libertines이라는 밴드(Pete Doherty와 관련 있음)는 그들의 데모 음악과 라이브 비디오를 배포하기 위해 토렌트를 활발히 이용하고 있다.
밸브 소프트웨어는 스팀 미디어 스트리밍 프론트엔드에 비트토렌트 프로토콜을 사용하고 있다. 비트토렌트 프로토콜의 창시자인 브램 코헨은 한 때 밸브 소프트웨어에서 일했었다.
팟캐스팅 소프트웨어들도 비트토렌트를 내장(integrate)하려 하고 있다. 팟캐스터들로 하여금 그들의 MP3 라디오 프로그램들의 다운로드 부하를 충족시킬 수 있게 말이다. Juice (podcasting) 및 Miro Media Player (예전 이름은 데모크래시 플레이어 Democracy Player) 같은 플레이어들은 자동적으로 RSS 피드로부터 .torrent 파일을 뽑아내어 처리하고 있다. 마찬가지로 비트 토렌트 클라이언트 – µTorrent 같은 것들도 웹 피드들을 처리하여 그 안에 들어있는 콘텐트를 자동적으로 다운로드받을 수 있게 해주고 있다.
개인 자료
Amazon S3 "심플 스토리지 서비스"는 스케일러블한 인터넷-기반 저장공간 서비스이며, 간단한 웹 서비스 인터페이스를 채택하고 있다. 또한 비트토렌트 지원 기능을 내장하였다.
블로그 토렌트는 블로거들과 일반 사용자들이 그들의 사이트에서 트랙커를 호스트할 수 있도록 해 준다. 블로그 토렌트는 블로그 방문자들로 하여금 "스텁"(stub) 로더를 다운로드할수있게 해 준다. 이 스텁 로더는 그 특정 파일을 다운로드받게 해주는 비트토렌트 클라이언트로서 동작하며, 특별히 다른 비트토렌트 클라이언트가 필요 없게 해준다. 이것은 자동 풀림 압축 파일과 같은 개념이라 말할 수 있다.
소프트웨어
많은 주요 오픈소스 및 자유 소프트웨어 프로젝트는 비트토렌트를 채택하고 있다. 서버의 부하를 줄이고 가용성을 높이기 위해서이다.
게임
블리자드 엔터테인먼트 월드 오브 워크래프트 게임은 비트토렌트 프로토콜을 이용하여 게임의 클라이언트 업데이트를 배포한다.
건즈 온라인에서는 비트토렌트 클라이언트를 내장하고 있다.