- 이 오픈소스 프로젝트는 Go 언어로 구현된 BitTorrent 클라이언트로, 파일 다운로드 기본 로직을 자체 구현함
-
Bencode 인코딩/디코딩을 직접 처리하며, 강력한 오류 검증 기능을 포함함
-
.torrent 파일 파싱, 정보 해시 계산, 피어 간 통신 등 핵심 기능을 포괄적으로 지원함
-
동시 다운로드 및 파일 조립, 블록 단위 저장 관리 등 실제 활용도를 높이는 기능을 포함함
- 기존 BitTorrent 오픈소스와 비교해 Go 언어의 심플함, 코드 구조의 명확성, 모듈화에서 강점 보유함
개요
이 프로젝트는 Go 언어로 직접 BitTorrent 클라이언트를 구현함
BitTorrent 프로토콜을 사용한 파일 다운로드 기능을 자체 개발 형태로 제공함
핵심적으로, 토렌트 파일 파싱, 피어 발견, 파일 다운로드 기능을 다룸
주요 기능
-
Bencode 인코딩/디코딩
- 문자열, 정수, 리스트, 딕셔너리 등 모든 Bencode 타입 지원
- 강력한 에러 처리 및 데이터 검증 적용
-
토렌트 파일 처리
- 단일 및 멀티 파일 토렌트 모두 파싱 가능
- Info 해시 및 각 피스 해시 추출, 모든 표준 필드 지원
-
피어 발견 및 통신
- HTTP 트래커 지원
- 피어 간 핸드셰이크 프로토콜 구현
- BitTorrent 메시지 프로토콜 및 피어 연결 관리 수행
-
다운로드 기능
- 피스 및 블록 단위 관리
- 동시 다운로드 처리
- 다운로드 진행률 추적 및 파일 조립
- 블록 단위 스토리지 관리로 효율성 제공
프로젝트 구조
- cmd/ : 커맨드라인 인터페이스 및 실행 파일
- internal/
- bencode/ : Bencode 인코딩 및 디코딩 기능
- torrent/ : 토렌트 파일 파싱 및 처리
- tracker/ : 트래커 프로토콜 구현
- peer/ : 피어 간 통신 기능
- download/ : 다운로드 관리 기능
- pkg/ : 외부에 노출 가능한 패키지 모음
요구 사항
사용법
- 현재는 프로젝트 초기 개발 단계로, 사용법 안내는 추후 추가 예정임
개발 현황 및 계획
-
현재 개발 활발히 진행 중
- 자세한 개발 단계는 checkpoint.md 파일에 기록
- 향후 계획:
- Magnet 링크 지원
- 메타데이터 교환 프로토콜
- DHT(분산 해시 테이블) 지원 예정
참고 문서
- BitTorrent 프로토콜 명세
- Bencode 명세
프로젝트 중요성 및 강점
- 이 프로젝트는 Go 언어 특유의 단순한 문법과 병렬성을 활용해 BitTorrent 클라이언트의 복잡한 요소를 명확히 모듈화하여 구현함
-
구조가 명확해 확장성·유지보수성 측면에서 학습 및 실전 적용 모두에 이점 제공함
- 비교적 초기 단계임에도 핵심 BitTorrent 프로토콜 기능을 빠르게 실현하였음