서론 : 왜 BitTorrent 인가?

HTTP / FTP 같은 전통적인 프로토콜은 서버 한 대가 수만 명의 클라이언트에게 파일을 보내야 했다.
사람이 몰릴 수록 서버에는 부하가 발생해 성능과 속도가 모두 저하되었는데, 이를 트래픽 병목 현상이라고 한다.
BitTorrent는 이 문제를 역발상으로 해결했다. 파일을 받는 클라이언트가 동시에 주는 역할도 수행하게 만든 것이다.
"모두가 서버이자 클라이언트가 되는 것", 이것이 BitTorrent가 추구하는 P2P(Peer-to-Peer) 철학의 핵심이다.
1. Bittorrent 구성 요소 (The Swarm)
BitTorrent 네트워크에 접속하는 순간부터 해당 클라이언트는 하나의 거대한 생태계인 Swarm의 요소가 된다.

이 요소는 세 부류로 나뉜다.
- Seeder : 파일을 100% 완벽하게 가지고 있으면서 배포만 하는 관대한 사용자
- Leecher
- 파일을 다운로드 중인 사용자
- 자기가 받은 조각만큼 다른 사람에게 동시에 공유.
- Tracker
- 누가 어떤 파일을 갖고 있는지 알려주는 '중개소'
- 실제 파일을 저장하지 않으며, Peer간 상호 연결을 보조하는 IP 주소 공유 지원

2. Bittorrent 구조도 : .torrent 파일과 Bencoding
.torrent 파일
우리가 흔히 받는 .torrent 파일은 실제 데이터가 아니라, 데이터를 어떻게 가져올지 적힌 설계도다.
메타정보와 데이터 무결성
.torrent 파일 안에는 파일 이름, 크기, 그리고 가장 중요한 조각(piece)들의 해시값이 들어 있다.
BitTorrent는 거대한 파일을 수백, 수천 개의 작은 조각으로 쪼개서 받는다.
이때, 다운로드 받는 조각의 진위 여부를 보장하기 위해 각 조각마다 SHA-1 알고리즘으로 추출한 고유 Hash를 대조한다.
Hash는 1 byte만 틀려도 값이 달라지기 때문에, BitTorrent는 수많은 낯선 사람에게 데이터를 받아도 최종적으로 완벽하게 깨끗한 파일로 조립할 수 있다.
Bencoding 이해
토렌트는 정보를 저장할 때, Bencoding 방식을 사용하는데, 매우 단순해서 어떤 운영체제도 쉽게 읽을 수 있는 것이 특징이다.
- Integers : i<integer in base 10 ASCII>e
- Strings : <length:content>
- Lists : l<content>e
- Dictionaries : d<key:value>e
3. 핵심 동작 메커니즘 : 연결부터 완성까지

Torrent의 다운로드는 단순한 파일 전송이 아니라, 거대한 네트워크 망에 동기화하는 과정이다.
- 기동 (Startup)
- .torrent 파일(혹은 magnet link)을 열면, 클라이언트는 설계도를 분석한다.
- 이후 tracker에게 받고 싶은 파일과 자기 IP 주소를 신고하며 네트워크에 참여한다.
- Peer 탐색
- Tracker는 이미 이 파일을 공유 중인 사람들의 IP 주소들을 사용자에게 전달한다.
- Tracker가 없는 경우 DHT라는 분산 지도를 이용해 스스로 peer를 찾는다.
- 연결 (Handshake)
- 찾아낸 Peer의 BitTorrent 프로토콜 사용 여부를 확인한다.
- 연결이 성공하면 BitField를 교환하며, 각자 어떤 조각을 가졌고 어떤 조각이 필요한지 파악한다.
- 조각(Piece) 교환
- BitField를 대조해 서로에게 필요한 조각을 요청하고 실시간으로 교환을 시작한다.
4. 핵심 알고리즘 : 이기심을 이용한 이타주의
Torrent가 전 세계적인 표준이 된 이유는 공유를 강제하지 않아도 시스템이 원활하게 돌아가도록 설계된 게임 이론 기반의 알고리즘 덕분이다.
Rarest First : 희귀 조각 우선, 가장 흔한 조각은 나중에 받아도 된다.
여러 peer 사이에서 가장 적게 퍼진(희귀한) 조각을 먼저 다운로드한다. 만약 유일하게 그 조각을 가진 seeder가 갑자기 접속을 끊더라도, 이미 그 조각을 받아둔 leecher들이 있어 파일이 없는 상황을 방지한다. 이는 네트워크 전체의 생존력을 높인다.
Tik-for-Tat : BitTorrent의 보상 체계
조각(=데이터)를 잘 주는 사용자에게는 다른 seeder / leecher도 조각을 우선적으로 보내도록 만든다.
이로 인해 데이터를 공유받지 않고 받기만 하는 free-rider는 속도 제한을 받게 된다.

Choking & Unchoking : 전송 대상 선택 / 제한
단일 사용자의 업로드 대역폭은 제한되어 있기 때문에 모든 사람에게 조각을 줄 수 없다.
- Choking : 상태가 좋지 않거나 데이터를 안 주는 peer와의 전송을 잠시 중단한다.
- Unchoking : 데이터를 잘 주는 peer 4~5명을 선별해 집중적으로 데이터를 전송한다.
Optimistic Unchoking (낙관적 개방)
BitTorrent 사용자 중에는 오늘 처음 시작해서 데이터를 한 번도 보내본 적 없는 사용자 또한 존재할 수 있다.
그래서 토렌트는 일정 시간마다 무작위로 한 명의 peer를 골라 무조건 데이터를 보내게 만든다.
이 '낙관적 개방'을 통해 새로 진입한 사용자도 첫 조각을 얻을 수 있고, 네트워크는 더 좋은 전송 파트너를 계속 발굴할 수 있다.
5. 진화하는 분산 기술 : Tracker 없는 토렌트
BitTorrent의 가장 강력한 점은 시간이 흐를 수록 특정 서버에 의존하지 않는 완벽한 탈중앙화로 진화했다는 점이다.
Tracker(=중앙 서버)가 사라져도 토렌트는 멈추지 않는다.
Distributed Hash Table (DHT)
DHT는 tracker 없이 peer node 들이 서로 찾을 수 있는 기술이다.
이때 사용되는 핵심 알고리즘이 Kademlia다.

Kademlia 동작 방식
- 모든 사용자는 방대한 DHT를 한 부씩 나눠 가진다.
- 내가 찾는 peer가 누구인지 가장 가까운 peer에게 묻는다.
- 그 사람이 또 다른 사람에게 물어보며 최종 목적지를 찾아간다.
Peer Exchange (PEX)
이미 연결된 peer들이 서로 알고 있는 다른 peer의 정보를 공유하는 방식이다.
PEX 동작 방식
- peer 한 명과 연결한다.
- 그 peer와 연결된 다른 peer의 목록을 요청하고 수령한다.
- Tracker와 DHT 없이도 PEX 만으로 순식간에 수십 명의 peer와 연결된다.
Magnet Link
과거에는 설계도인 .torrent 파일을 직접 다운로드해야 했지만, 이제는 자석 아이콘이나 링크 하나로 충분하다.

Magnet 링크에는 파일의 실제 내용 대신, 파일의 고유 지문인 Info Hash가 들어있다.
Magnet Link 동작 방식
- 클라이언트가 magnet link의 해시값을 읽는다.
- 해당 해시값을 DHT 네트워크에 질의(query)하여 관련 peer를 찾는다.
- Peer를 찾으면 .torrent 파일에 들어있던 메타데이터를 전송받아 다운로드를 시작한다.
결론 : BitTorrent가 남긴 유산
네트워크 효율성의 극대화와 공유 경제
BitTorrent는 중앙 서버가 모든 짐을 짊어져야 한다는 고정관념을 깨뜨렸다.
사용자가 많아질 수록 서버는 느려지는 것이 아니라 오히려 더 빨라진다.
이는 인프라 비용을 획기적으로 낮추면서도 대규모 데이터를 전송할 수 있는 '기술적 공유 경제'의 기반이 되었다.
현대 분산 기술로 이어지는 BitTorrent 정신
BitTorrent에서 완성된 정교한 알고리즘들은 최신 기술들의 뿌리가 되었다.
- 블록체인 : 전 세계 노드들이 중앙 서버 없이 거래 장부를 동기화하고, 새로운 peer를 찾아 연결한다.
- IPFS (InterPlanetary File System) : 파일의 위치가 아니라 "어떤 내용(해시)인가"를 기준으로 데이터를 찾는 방식으로, BitTorrent의 Info Hash 개념을 발전시킨 형태다.
- Edge Computing 과 CDN : Netflix, YouTube 같은 대형 서비스들이 전 세계 곳곳에 데이터를 분산시켜 전송 속도를 높이는 전략으로, BitTorrent의 분산 전송 효율성에 기반한다.
정리
BitTorrent는 이기적인 개인이 모여 어떻게 가장 이타적인 시스템을 만들 수 있는가에 대한 공학적인 해답이다.
자신의 이득(빠른 다운로드)를 위해 데이터를 공유(업로드)하게 만드는 Tik-for-Tat 알고리즘, 그리고 중앙 통제 없이도 자생하는 DHT 네트워크 같은 원리들을 이해한다면, 미래의 분산형 인터넷(Web 3.0)에 대한 단서를 이해한 것과 마찬가지다.

참고 자료
- BitTorrent: The Engineering behind the BitTorrent protocol | by Abhinav C V | Medium
- (PDF) EbitSim: An Enhanced BitTorrent Simulation Using OMNeT++ 4
- Choking Algorithm in BitTorrent
- Why the Web 3.0 Matters and you should know about it | by Mat Zago | Medium
Powered By. Gemini
'Backend' 카테고리의 다른 글
| [Backend] Kotlin 기반 HTTP 서버 구현 (상세) (0) | 2026.01.16 |
|---|---|
| [Backend] 고성능 시스템에서 전송 속도를 통제하는 방법 (0) | 2025.12.31 |
| [Backend] TCP 스트림 기반 파일 전송 기능 구현 - CHAT/FILE multiplexing, 단일 Writer, backpressure 구현 기록 (1) | 2025.12.19 |
| [Backend] HTTP 발전의 역사 (1) | 2025.12.08 |
| [Backend] JVM - Primitive type과 Reference type (1) | 2025.12.02 |