IMFile

IMFile

A Free And Unlimited BT / HTTP / HTTPS / eD2k Download Software From Singapore

BitTorrentのローカルサービス検出メカニズム

本地サービスディスカバリ(LSD)は、特定のグループ内での存在をローカルネイバーに宣言するために、SSDP に似たメカニズム(UDP マルチキャストを介した HTTP プロトコル)を提供します。これにより、他のローカルデバイスがどのサービスを提供しているかを知ることができ、相互の通信とデータ転送が容易になります。このメカニズムは、ローカルトランスポートの主要な対等なソースとして機能するだけでなく、グローバルユニキャストアドレスでのみ動作する他のソースを補完するためにも使用できます。

プロトコル#

LSD は以下のマルチキャストグループを使用します:A) 239.192.152.143:6771 (org-local) および B) [ff15::efc0:988f]:6771 (site-local)

実装の注釈:マルチキャストグループはローカルネットワークよりも広範囲であるため、IP_MULTICAST_TTL ソケットオプションをデフォルト値よりも大きな値に設定する必要がある場合があります。

LSD プロトコルのアナウンスメッセージの形式:

BT-SEARCH * HTTP/1.1\r\n
      Host: <host>\r\n
      Port: <port>\r\n
      Infohash: <hash>\r\n
      cookie: <cookie (optional)>\r\n
      \r\n
      \r\n

host#

Host は RFC 2616 セクション 14.23 および RFC 2732 の仕様要件を満たす必要があります。これは、アナウンスメッセージが送信されるマルチキャストグループアドレスを指定するために使用されます。

RFC 2616 は HTTP/1.1 の仕様書であり、HTTP プロトコルに関する情報を定義しています。その中で、セクション 14.23 は Host ヘッダーの形式を説明しています。 Host ヘッダーは、リクエストの対象サーバーのホスト名とポート番号を指定するために使用されます。一方、RFC 2732 は URL の標準であり、IPv6 アドレスを使用して URL のホスト名を表すことを許可します。つまり、LSD プロトコルの Host ヘッダーでは、マルチキャストグループのアドレスを IPv6 アドレスで表すことができます。

port#

このフィールドは、bittorrent クライアントがリッスンしているポート番号を 10 進 ASCII コードで指定します。

hash#

このフィールドは、シードファイルを一意に識別するために使用される 40 桁の 16 進数の infohash 値です。

複数の infohashes を送信する場合、データパケットの長さが 1400 バイトを超えないようにするために注意する必要があります。これは、ネットワーク転送中にデータパケットの長さが最大転送単位(MTU)のサイズを超えると、IP フラグメンテーションが発生し、ネットワーク転送効率が低下し、データパケットの損失のリスクが増加するためです。

不透明な値であり、クライアントにとっては完全に未知で見えないため、クライアントに送信するだけで十分であり、さらなる解釈は必要ありません。この値の目的は、クライアントが自分自身が送信したアナウンスリクエストを受け取ったときに重複処理を避けるために、クライアントが送信する際にフィルタリングすることを許可することです。
クライアントが理解しない追加のヘッダ情報は、前方互換性を確保するために無視する必要があります。

実装#

まず、クライアントがスワームに参加している場合、5 分ごとに各インターフェースで LSD アナウンスを送信して、他のクライアントがその存在を知り、それに接続できるようにする必要があります。大規模なネットワークでマルチキャストストームを引き起こさないようにするため、クライアントは 1 分あたり最大 1 回のアナウンスしか送信できません。

次に、クライアントが同時に 5 つ以上のトレントのダウンロードまたはアップロードを行っている場合、各トレントで順番にアナウンスを送信するか、単一のアナウンスに複数の infohashes(異なるトレントを識別するハッシュ値)を含めることができます。これにより、他のクライアントはこれらの情報を使用してクライアントとの接続を確立できます。

クライアントが他のクライアントの LSD アナウンスを受信した場合、UDP ソースアドレスに基づいてリモートクライアントの IP アドレスに連絡する必要があります。

結論#

BitTorrent プロトコルでは、Local Service Discovery(LSD)は、ローカルネットワーク内の他の BitTorrent クライアントを発見するためのローカルサービスディスカバリメカニズムです。BitTorrent クライアントが起動すると、LSD を介して自身の存在をブロードキャストし、他のクライアントからのブロードキャストメッセージを受信してピア間の接続を確立します。

LSD は UDP マルチキャストを使用してローカルネットワーク内で他のクライアントを迅速に発見します。同時に、LSD は他のローカルサービスディスカバリプロトコル(例:mDNS)と組み合わせて使用することもでき、ローカルネットワーク内のデバイスの発見効率をさらに向上させることができます。

LSD は BitTorrent プロトコルの重要な構成要素であり、ノードの発見を加速し、ファイルのダウンロード速度と安定性を向上させることができます。

参考リンク#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。