WIPIVERSE

Bencode

Bencode는 비트토렌트(BitTorrent) 프로토콜에서 사용되는 메타데이터와 파일 조각을 인코딩하기 위한 간단한 직렬화 형식이다.
주요 특징은 다음과 같다.

  1. 형식

    • 정수: i 로 시작하고 e 로 끝난다. 예) i42e → 정수 42
    • 바이트 문자열: 길이를 십진수로 표현한 뒤 콜론(:)과 문자열을 연결한다. 예) 4:spam → 문자열 "spam"
    • 리스트: l 로 시작하고 e 로 끝난다. 리스트 안에 다른 Bencode 객체들을 순차적으로 배치한다. 예) l4:spam4:eggse → ["spam", "eggs"]
    • 딕셔너리: d 로 시작하고 e 로 끝난다. 키와 값이 순차적으로 배치되며, 키는 반드시 문자열이며 사전순으로 정렬되어야 한다. 예) d3:cow3:moo4:spam4:eggse
  2. 용도

    • 트래커와 클라이언트 간에 전송되는 .torrent 파일은 Bencode 형식으로 인코딩된 메타데이터(파일 목록, 조각 해시, 트래커 URL 등)를 포함한다.
    • 비트토렌트 네트워크 내에서 피어 간에 교환되는 핸드셰이크와 메세지도 Bencode를 활용한다.
  3. 장점

    • 구문이 단순하고 파싱이 빠르며, 구현이 쉬워 다양한 언어와 플랫폼에서 지원된다.
    • 문자열 길이가 명시되기 때문에 바이너리 데이터를 그대로 인코딩할 수 있다.
  4. 표준화

    • Bencode 자체는 공식적인 국제 표준(예: ISO/IEC)으로 지정되어 있지는 않지만, 비트토렌트 프로토콜 사양에 명시적으로 정의되어 있다.
    • 주요 비트토렌트 클라이언트(예: µTorrent, Transmission, qBittorrent)와 라이브러리(예: libtorrent, Bencode.NET)에서 광범위하게 구현된다.
  5. 보안 고려사항

    • 정수 오버플로우, 과도한 문자열 길이 등 부정확하게 처리된 경우 메모리 소모가 급증할 수 있다. 따라서 구현 시 입력 검증이 필요하다.

이와 같이 Bencode는 비트토렌트 에코시스템에서 핵심적인 데이터 직렬화 방식으로 인정받고 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기