web-dev-qa-db-ja.com

オーバーヘッド、ペイロード、ヘッダーとは何ですか

誰かがオーバーヘッド、ペイロード、ヘッダー、パケットとは何か説明してください。私が知る限り、パケットは送信されるデータ全体です。このパケットは、ペイロードと思われる実際のデータで構成され、パケットの送信元/宛先情報はヘッダーにあります。したがって、パケットはヘッダーとペイロードで構成されます。それで、このオーバーヘッドは何ですか。オーバーヘッドはヘッダーの一部です。これは、「パケットオーバーヒアには、パケットヘッダーに格納されている情報の余分なバイトがすべて含まれています」というヘッダーから既に取得されています。このパケットオーバーヘッドが持っている情報の余分なバイトは何ですか。よくわかりません。

14
Priti16

あなたが言ったようなパケットには、転送する必要のあるデータ自体(通常はユーザーのデータ)である「ペイロード」があります。「ヘッダー」には、使用しているプロトコルに依存するさまざまなものが含まれます。たとえば、 [〜 #〜] udp [〜#〜] は、宛先や送信元IP/PORTなどの単純なものをヘッダーに含みます。 [〜#〜] tcp [〜#〜] には、順序付き配信を保証するパケットのシーケンス番号、パケットが宛先で実際に受信されたことを確認するための多くのフラグ、データのチェックサムなど、データが破損せずにその宛先で正しく受信されたことを確認するなどのその他のこと。

現在、「オーバーヘッド」部分は、実際にはペイロードを送信するために必要な追加データです。上記で説明したケースでは、ヘッダー部分です。これは、インターネット経由で送信するすべてのペイロードに追加する必要があるためです。 TCPはUDPよりもオーバーヘッドが大きいため、ペイロードにさらにデータを追加する必要がありますが、データが送信先で破損していない順序で受信されることが保証されます。 UDPにはこの機能がないため、それを保証することはできません。

送信したいデータに応じて、使用するプロトコルに関する議論を読んだり聞いたりします。たとえば、ゲームがあり、プレイヤーが移動するたびにプレイヤーの位置を更新したい場合、それ自体のペイロードにはこれが含まれます:

int playerID;
float posX;
float posY;

ペイロードのサイズは12バイトであり、TCPを使用して送信すると、パケット全体は次のようになります。

-------------
TCP_HEADER
-------------
int playedID;
float posX;
float posY;

パケット全体のサイズは、ペイロード+ 12バイト+(32バイトから72バイト)のTCP_HEADERであるため、データのオーバーヘッドが32から72バイトになりました。 TCPのヘッダーについて読むことができます こちら 。オーバーヘッドはデータ自体よりもさらに大きいことに注意してください!

機能を必要としない場合、ゲームに使用するプロトコルであるかどうかを決定する必要がありますTCPオーバーヘッドが小さく、したがってUDP送信されるデータ。

17
UnTraDe

通常、パケットはヘッダーとペイロードで構成されます。パケットタイプのoverheadは、ペイロードの送信に必要な無駄な帯域幅の量です。パケットヘッダーは、パケットが宛先に到達することを保証するために、パケットのペイロードの上に追加される情報です。

異なるタイプのパケット(またはパケットプロトコル)を選択してデータを送信できるため、オーバーヘッドは可変です。さまざまなパケットプロトコルにより、さまざまな機能が提供されます。現在存在するパケットプロトコルの2つの主要なタイプは、 [〜#〜] tcp [〜#〜] および [〜#〜] udp [〜 #〜]

UDPは、パケットのヘッダーが小さく、ペイロード(データ)を送信するために必要な帯域幅が少ないため、TCPよりもオーバーヘッドが小さいと言えます。

この理由は深い主題ですが、TCPは、パケットの確実な配信や破損検出など、UDPにはない多くの非常に便利な機能を提供します。両方とも非常に便利なプロトコルであり、アプリケーションに必要な機能(速度または信頼性)に基づいて選択されます。

4
S.Richmond