2014년 3월 7일 금요일

Torrent Seed File(Meta file)

비트토렌트를 사용하여 파일 공유를 원하는 사용자는 먼저 토렌트 파일을 생성하여야 한다. 토렌트 파일은 다운로드 받고자 하는 클라이언트에게 필요한 정보가 포함된 메타 파일(Meta File)이다. 토렌트 파일은 공유된 파일을 찾아서 다운받기 위한 일종의 지도(Map) 역할을 한다.
 
Name
Parameter
Description
Torrent
Filename
토렌트 파일 이름(a.mp3)
Info Hash
공유하는 파일의 고유한 Hash
Tracker
Tracker URL
트래커의 URL 주소
여러 개의 트래커 주소를 포함 할 수 있음
Meta Data
Directory
토렌트 파일이 저장되는 디렉토리 이름
Created On
토렌트 파일 생성 일자 및 시간
Created By
토렌트 파일 생성자 정보
Comment
생성자가 적어 놓은 설명
Pice Length
피어 간에 자료를 주고받을 때 사용할 조각의 크기를 지정 최소값 및 기본 값은 128KByte이며, 지정하지 않을 경우 비트토렌트 프로토콜에서 정의한 파일의 크기 기반으로 조각을 정의함
(e.g.,1GByte 파일인 경우 1조각 당 1MByte)
Files
Filename
공유하는 실제 파일 이름(c+b+a.mp3)
 
토렌트 파일을 구성하는 정보 중에 Directory, Piece Length, Private, Filename이 해시 값을 생성하기 위해 사용되는 파라미터들이다. 4개의 값 중에 한 개라도 변경될 경우 해당 토렌트 파일의 해시값이 변경되며 이렇게 변경된 토렌트 파일은 기존의 토렌트 파일과 해시값이 다르므로 트래커에서는 다른 콘텐츠로 인식된다.
그리고 기존의 P2P에서는 한 번의 공유로 하나의 파일만을 주고받을 수 있었지만 비트토렌트는 기존의 P2P와 다르게 하나의 토렌트 파일 안에 여러 개의 파일들을 포함 시킬 수 있다. 이렇게 여러 개의 파일을 공유하기 위하여 토렌트 파일에는 “Directory”를 지정하게 되며 “Files” 내에 여러 개의 파일을 포함 시켜서 배포가 가능하다. 실제로 해당 토렌트 파일을 이용하여 파일을 다운로드 해보면 “Directory”에 이미 설정했던 파일들이 저장된다.
메타인포 파일은 Bencode로 코딩되는데, 이 코드는 비트토렌트의 P2P 파일 공유를 위해서 사용하는 인코딩 방법으로, 주로 구조화되지 않은 데이터를 전송하거나 저장할 때 사용한다. 이 인코딩 방법은 4가지 다른 종류의 변수들을 지원하는데, byte strings, integers, lists, dictionaries (associative arrays)이다.
Bencoding은 토렌트 파일의 인코딩에서 가장 널리 쓰이고 있으며, 메타데이터 파일들을 간단하고 효율적으로 인코딩 한다. 비록 퓨어 바이너리 인코딩보다는 덜 효율적이지만, 엔디언에 의한 영향이 없다. 어플리케이션이 예측하지 못한 값들을 무시하기 때문에, 비교적 유연한 구조를 갖게 된다.
엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다. 메타인포 내부의 모든 데이터는 bencoding 되며, bencoding의 사양은 위의 정의된 바와 같다. *.torrent 로 표시되어지는 메타인포 파일의 내용은 bencodingdictionary와 아래에 표시된 키 값들을 포함하고 있다. 모든 캐릭터 스트링 값은 UTF-8로 인코딩 된다.

용어
설명
info
a dictionary that describes the file(s) of the torrent. There are two possible forms
1
one for the case of a 'single-file' torrent with no directory structure,
2
one for the case of a 'multi-file' torrent (see below for details)
announce
The announce URL of the tracker (string)
announce-list
(optional) this is an extention to the official specification, offering backwards-compatibility. (list of lists of strings).
creation date
(optional) the creation time of the torrent, in standard UNIX epoch format (integer, seconds since 1-Jan-1970 00:00:00 UTC)
comment
(optional) free-form textual comments of the author (string)
created by
(optional) name and version of the program used to create the .torrent (string)
encoding
(optional) the string encoding format used to generate the pieces part of the info dictionary in the .torrent metafile (string)
piece length
number of bytes in each piece (integer)
pieces
string consisting of the concatenation of all 20-byte SHA1 hash values, one per piece (byte string, i.e. not urlencoded)
private
(optional) this field is an integer. If it is set to "1", the client MUST publish its presence to get other peers ONLY via the trackers explicitly described in the metainfo file. If this field is set to "0" or is not present, the client may obtain peer from other means, e.g. PEX peer exchange, dht. Here, "private" may be read as "no external peer source". 

댓글 없음:

댓글 쓰기