紹介#
Tracker のレスポンスサイズを小さくし、Tracker のメモリと計算要件を低減するために、Tracker はピアノードをパックされた文字列として返すことができます。これは bencoded リストとして返すのではありません。
このドキュメントでは、"MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、"OPTIONAL" というキーワードの解釈については、IETF RFC 2119 を参照してください。
概要#
BitTorrent プロトコル仕様に従い、ファイルの転送を希望するピアノードは、中央のトラッカーに接続します。このトラッカーは、ファイルの転送を行っているピアノードのリストを返します。このピアノードのリストは、一連の bencoded 辞書として実装されます。リストの各辞書には、ピア ID、IP、およびポートの 3 つのフィールドが含まれています。
ピア ID は、20 バイトのバイト列に 3 バイトの bencoding 追加ペイロードが付加されたものです。IP は、ドメイン名または IP アドレスと整数のポート番号を含む文字列です。IP の長さは可変ですが、最長の形式ではドメイン名であるため、255 バイトを超えることはできません。さらに、4 バイトの bencoding 追加ペイロードがあります。 bencoded 整数も可変長ですが、ポート番号を表すため、7 バイトを超えることはありません。これには bencoding 追加ペイロードも含まれます。
BitTorrent プロトコル仕様によれば、BitTorrent プロトコルのピアノードリストは、ピア ID、IP、およびポートの 3 つのフィールドを含む bencoded 辞書の形式で保存されます。これらは、ピアノードの一意の識別子、IP アドレス、およびポート番号をそれぞれ表します。
したがって、
バイト単位の総ピアリストの長さ < n * ( 23 + 259 + 7 )
現在、一般的には、各ピアノードをコンパクトな形式で表現する方法が使用されています。各ピアノードは、わずか 6 バイトしか使用しません。最初の 4 バイトには 32 ビットの IPv4 アドレスが含まれ、残りの 2 バイトにはポート番号が含まれます。アドレスとポート番号の両方について、ネットワークバイトオーダーが使用されます。
トラッカーはデフォルトでコンパクトな形式を返すことが推奨されています。announce URL に "compact=0" を含めることで、クライアントはトラッカーに元の形式を使用するように提案することができます。同様に、"compact=1" はトラッカーにコンパクトな形式を使用するように提案します。ただし、"compact" キーペアは参考のためにのみ提供されます。トラッカーはどちらの形式を返すかを選択することができます。ただし、クライアントは両方の形式をサポートし続ける必要があります。
上記の説明に基づいて、トラッカーはデフォルトでコンパクトな形式のピアノードリストを返すことが推奨されます。クライアントは、対応するパラメータを announce URL に指定することで、トラッカーに元の形式またはコンパクトな形式を使用するように提案することができます。ただし、最終的な形式はトラッカーが自身で決定することができます。クライアントは両方の形式をサポートし続ける必要があります。
例:
GET /announce?peer_id=aaaaaaaaaaaaaaaaaaaa&info_hash=aaaaaaaaaaaaaaaaaaaa
&port=6881&left=0&downloaded=100&uploaded=0&compact=1
BitTorrent プロトコルの "compact format" データ形式。従来の BitTorrent トラッカーレスポンスでは、"peers" というキーを使用してピアノードリストを表し、その値は bencoded(一種のエンコード形式)のリストです。
しかし、"compact format" では、同じ "peers" キーが使用されますが、その値はリスト形式ではなく、bencode エンコードされた文字列です。従来の形式とは異なり、"compact format" にはピアノードの ID(peer id)は含まれません。ピアノードの ID の情報が欠落しているものの、このコンパクトな形式は長年広く使用されており、問題を引き起こしていません。
この "compact format" 形式は、BitTorrent の主要なクライアントである IMFile、qBittorrent、libtorrent、uTorrent など、ほとんどのクライアントでサポートされています。
結論#
ピアツーピアのファイル共有ネットワークでは、共有ファイルの他のユーザー情報を取得するためにトラッカーに接続すると、トラッカーは通常、ピアノードのリストを返します。このリストには、ファイルを共有している他のユーザーの情報が含まれる場合があります。これらの情報には、IP アドレス、ポート番号などが含まれる場合があります。
"Tracker Returns Compact Peer Lists" では、"Compact Peer Lists" は、ピアノードリストを表すコンパクトな形式または方法です。詳細なノードリストなどの他の形式と比較して、コンパクトなピアノードリストは、ノード情報を表すためにより少ないデータを使用し、ネットワークトラフィックとリソース消費を減らすことができます。
通常、コンパクトなピアノードリストはバイナリ形式で表され、特定のエンコーディングスキームが使用されます。通常、ノードの IP アドレスとポート番号が含まれており、このリストをデコードして処理することで、ノードの具体的な情報を取得できます。
要するに、"Tracker Returns Compact Peer Lists" は、トラッカーがコンパクトな形式で表されたピアノードリストを返すことを意味し、このリストを使用して他の共有ファイルユーザーとの接続を確立できます。