파일을 공유하고 공유받는 모든 사람들을 피어(Peer)라고 하고, 그 중에서도 파일을 완전히 가지고 있는 사람을 시더(Seeder)라고 한다. 리처(Leecher)는 파일을 다운로드 받는 사람을 말한다.
비트토렌트로 파일을 공유받기 위해서는 시드 파일이나 마그넷 주소가 필요하다. 씨앗 파일은 .torrent 확장자의 수십~수백KB수준의 작은 파일이다. 이 씨앗 파일에는 파일의 정보가 들어있다.
(1) 마그넷 주소는 magnet:?xt=urn:btih로 시작하는 문자열로, 별도의 파일 없이도 DHT(분산 해시 테이블) 네트워크를 통해 피어를 찾아 파일의 정보를 불러와 다운로드를 시작할 수 있다.
트래커는 피어간의 연결을 중계해주는 역할을 하는 서버이다. 물론 트래커가 없어도 토렌트는 작동하지만, 트래커가 있으면 다운로드 시작이 더 빠르다. 이 트래커는 피어간의 파일 전송에 관여하지 않으며, 피어간에 연결을 도와주는 연결 중계 역할만 한다.
비트토렌트 클라이언트로 파일을 내려받으면 파일은 여러 작은 조각으로 나뉘어서 전송된다. 전송되는 조각은 앞에서부터 차례대로 맞춰지는게 아닌 랜덤으로 받아진다. 이 과정에서 자신에게 없는 파일 조각을 그 파일 조각을 가지고 있는 다른 피어로부터 받아오고, 자신이 가지고 있는 조각을 그 조각이 없는 피어에게 전송한다. 이렇게 서로 파일의 조각을 맞춰나가면서 파일을 완성한다. 이 과정에서 비트토렌트 이용 시 필연적으로 업로드가 발생한다.
하나의 파일 조각은 일반적으로 4MB정도이다. 파일이 다 받아질때마다 SHA-1값을 계산하여 파일의 무결성을 검사한다. 씨앗 파일에 이미 파일의 SHA-1값이 있기 때문에 비교하면 이 파일이 온전히 잘 받아진건지 아니면 중간에 깨진것인지 확인할 수 있다.
기존의 중앙 집중식 서버 다운로드 방식(HTTP/FTP)은 서버의 사양과 대역폭의 한계가 있어서 많은 사람들이 몰리면 서버가 다운되거나 속도가 느려지는 등의 문제가 있다. 하지만 비트토렌트는 파일을 다운로드하는 수많은 사람들(Peer)이 서로 파일을 조각내어 교환하는 방식(Swarming)을 사용하기 때문에, 사람이 몰릴수록 다운로드 속도가 빨라지고 안정적인 장점이 있다.
많은 사람들이 동시에 다운받을수록 더 많은 사람들이 서로 실시간으로 파일 조각을 공유하고, 특정 서버나 사용자에게 트래픽이 몰리지 않음으로 사람이 많아지면 많아질수록 속도가 더 빨라지고 안정적인 장점이 있다.
물론 시더가 다 도망가면 속도는 0에 수렴한다.