伝送制御プロトコル(TCP)とユーザーデータグラムプロトコル(UDP)は、 インターネットプロトコル(IP)で使用される2つの標準トランスポートレイヤです。
TDPとUDPの両方は、ネットワーク接続を介した転送のためのメッセージデータのパッケージ化の一部としてヘッダーを使用します。 TCPヘッダーとUDPヘッダーにはそれぞれ、プロトコル技術仕様で定義されたフィールドと呼ばれる一連のパラメーターが含まれています。
TCPヘッダー形式
各TCPヘッダーには合計20 バイト (160 ビット )の10個の必須フィールドがあります。 オプションで、40バイトまでの追加データセクションを含めることもできます。
これはTCPヘッダーのレイアウトです:
- 送信元TCPポート番号(2バイト)
- 宛先TCPポート番号(2バイト)
- シーケンス番号(4バイト)
- 確認応答番号(4バイト)
- TCPデータオフセット(4ビット)
- 予約データ(3ビット)
- 制御フラグ(最大9ビット)
- ウィンドウサイズ(2バイト)
- TCP チェックサム (2バイト)
- 緊急ポインタ(2バイト)
- TCPオプションのデータ(0〜40バイト)
TCPは、ヘッダーフィールドを上記の順序でメッセージストリームに挿入します。
- 送信元および宛先TCPポート番号は、送受信デバイスの通信エンドポイントです。
- メッセージ送信者は、 一連のメッセージの順序をマークするためにシーケンス番号を使用します。 送信者と受信者の両方は、確認応答番号フィールドを使用して、最近受信したまたは送信予定のメッセージのシーケンス番号を通信します。
- データオフセットフィールドには、TCPヘッダーの合計サイズが4バイトの倍数で格納されます。 オプションのTCPフィールドを使用しないヘッダーはデータオフセットが5(20バイトを表す)ですが、最大サイズのオプションフィールドを使用するヘッダーは15のデータオフセット(60バイトを表します)を持ちます。
- TCPヘッダーの予約済みデータは、常にゼロの値を持ちます。 このフィールドは、合計ヘッダーサイズを4バイトの倍数に整列させる目的で使用されます(コンピュータデータ処理の効率にとって重要です)。
- TCPは、特定の状況でデータフローを管理するために、6つの標準および3つの拡張制御フラグのセット(各ビットがオンまたはオフを表す)を使用します。 例えば、1ビットフラグは、TCP接続リセット論理を開始する。 これらのフィールドの詳細な操作は、この記事の範囲を超えています。
- TCP送信者はウィンドウサイズと呼ばれる番号を使用して、受信者に送信するデータの量を調整してから確認応答を要求します。 ウィンドウサイズが小さすぎるとネットワークデータ転送が不必要に遅くなり、ウィンドウサイズが大きすぎるとネットワークリンクが飽和したり(他のアプリケーションでは使用できなくなる)、受信側で受信データをすばやく処理できないことがあります十分な(結果としてパフォーマンスが低下する)。 プロトコルに組み込まれたウィンドウアルゴリズムは、サイズ値を動的に計算し、TCPヘッダのこのフィールドを使用して送信者と受信者間の変更を調整します。
- TCPヘッダー内のチェックサム値は、受信者が破損または改ざんされたメッセージを検出するのを助ける数学的手法としてプロトコル送信者によって生成されます。
- 緊急ポインタフィールドは、しばしばゼロに設定され、無視されるが、制御フラグの1つと共に、優先度処理を必要とするメッセージのサブセットをマークするためのデータオフセットとして使用することができる。
- オプションのTCPデータの使用は、この記事の範囲を超えていますが、特別な承認およびウィンドウスケーリングアルゴリズムのサポートが含まれています。
UDPヘッダー形式
UDPはTCPよりも機能が大幅に制限されているため、そのヘッダーはずっと小さくなっています。 UDPヘッダーは8バイトを含み、以下の4つの必須フィールドに分かれています。
- 送信元ポート番号(2バイト)
- 宛先ポート番号(2バイト)
- データ長(2バイト)
- UDPチェックサム(2バイト)
UDPは、上記の順序でメッセージフィールドにヘッダーフィールドを挿入します。
- 送信元および宛先UDPポート番号は、送受信デバイスの通信エンドポイントです。
- UDPの長さフィールドは、ヘッダーとデータの両方を含む各データグラムの合計サイズを表します。 このフィールドの値は、最小8バイト(必要なヘッダーサイズ)から65,000バイトを超えるサイズの範囲です。
- TCPと同様に、UDP チェックサムにより、受信者は着信データにメッセージの破損ビットがないかクロスチェックすることができます。