본문 바로가기

나의일상/인터넷지식

토렌트(Torrent)란 무엇인지 알고 써보자


대체 토렌트란 무엇인가?

비트토렌트(BitTorrent)는 P2P(peer-to-peer) 파일 전송 프로토콜의 이름이자 그것을 이용하는 응용 소프트웨어의 이름이다. 비트토런트를 이용하면 파일을 인터넷 상에 분산하여 저장하여 놓고 다수의 접속을 사용하여 여러 곳에서 동시에 파일을 가져오게 되어 전송 속도가 빨라진다.

비트토런트 프로토콜은 프로그래머 브램 코헨이 창안하였으며, 2001년 4월부터 설계되어 최초의 구현이 2001년 7월 2일 발표되였다. 현재는 코헨이 창립한 회사인 비트토런트 Inc.가 이것을 유지보수하고 있다. 본래 비트토런트 프로그램은 분산 해시 테이블을 활용하여 파이썬으로 작성되었으며 오픈 소스 저작권하에서 배포되고 있다. 그 외에도 비트토런트 프로토콜과 호환되는 각종 비트토런트 클라이언트가 출시되어 있다. 대표적으로 u토렌트가 있다. 이 프로토콜을 사용하는 인터넷 트래픽이 전세계 인터넷 트래픽 중 상당 부분을 차지하고 있으나 정확한 통계는 측정할 수 없는 것으로 알려져 있다.

이용 방법
 
비트토런트의 동작 원리비트토런트 프로토콜을 이용하기 위해서는 비트토런트 프로토콜과 호환되는 비트토런트 클라이언트를 설치해야 한다. 비트토런트를 이용해서 파일을 공유하고 싶으면 우선 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에 전송 부하(Bandwidth)를 줄인다.

P2P의 효율성을 높이는 데 중요한 역할을 하는 요소는 클라이언트간의 데이터를 주고 받는 정책이다. 클라이언트들은 자기에게 파일을 준 클라이언트에 다시 파일을 주는 형식으로 구성하여 공유의 효율성을 높인다. 이러한 여러 가지 정책에 따라 공유의 효율성, 다운 받는 속도, 업로드 속도 등의 차이가 난다. 비트토런트는 공유를 많이 할수록 좋으며 대신 다른 P2P와 다르게 Queue(줄) 서서 기다리는 것이 없다. 비트토런트는 “optimistic unchoking”라는 메커니즘을 이용한다. 이 메커니즘은 클라이언트의 일정의 밴드위스를 할당하여 무작위로 Peer들한테 조각을 보내서 모든 Peer들이 일정한 양의 조각을 가지고 있을 수 있게 한다. 그렇게 되면 모든 Peer들이 다 다른 조각을 가지고 있게 되므로 공유의 효율성이 높아진다.


세계적으로 유명한 블리자드 엔터테인먼트 월드 오브 워크래프트 게임도 비트토런트 프로토콜을 이용하여 게임의 클라이언트 업데이트를 배포한다.



출처:http://rkiller.tistory.com/96