web-dev-qa-db-ja.com

UDPとHTTPトレントトラッカーの違いは何ですか?

Bittorrentのコンテキストでは、httpトラッカーとudpトラッカーの違いは何ですか? HTTPはアプリケーション層プロトコルであり、UDPはトランスポート層プロトコルであるため、概念は重複していないように見えます。私は この記事 を見つけましたが、UDPがHTTPよりも速い理由はわかりません。HTTPはUDPを介して発生する可能性があるため、これは意味がありません。

3
Celeritas

UDPアナウンス(私が知る限り)では、1つのパケットをアップおよびダウンする必要があります。持続的接続はネゴシエートまたは確立されません。サーバーは、アナウンスがどのip:portから来たのかを覚えておく必要はなく、何に答えるかを決定するのはほんの一瞬です。

ただし、HTTPアナウンスはTCP接続を介して機能します。これは、接続をネゴシエートし、使用してから切断する必要があることを意味します。これらの手順はすべて、3つ以上のパケットを必要とします。-ネゴシエーション:1つのSYN up、SYN-ACK down、およびACKup。-使用法。運が良ければ、HTTP要求は単一のアップストリームパケットに収まります。サーバーはACKパケットで応答し、その応答を別のパケットで送信します。次に、クライアントもACKパケットで応答します。もちろん、TCPストリームをパケットに分割する方法を決定するのはクライアントではなく、OSであるため、要求と応答の両方が断片化される可能性があります。複数のパケット。それぞれに応答してACKが必要です。また、MTUオーバーランなどの他の問題により、サーバーとクライアントの両方が、これらのパケットをより小さなサイズにフラグメント化して再送信する必要があります。-接続を切断すると、FIN、FIN-ACKの3つのパケットも必要になります。およびACK。

したがって、HTTPアナウンスには、少なくとも10パケットが必要ですが、これを超える可能性があり、さらにネットワークがパッケージをドロップすることを決定した場合は待機する必要があります。この間ずっと、サーバー(およびクライアントもですが、クライアントにとっては重要ではありません。毎秒1,000件のアナウンスから上向きに処理する必要はありません)は、接続の詳細をRAMに保持する必要があります。 。単一のクライアントが行うアナウンスの量については、違いはごくわずかです(軽いブラウジングでさえ、より多くのトラフィックを生成します)が、サーバー側では、5分の1の減少が多くを意味する量になります。

1
matega