フルバージョン: TCP、UDP メッセージ形式

目次

TCPパケットフォーマット

メッセージフォーマット

メッセージ例

UDPパケットフォーマット

メッセージフォーマット

メッセージ例


TCPパケットフォーマット

メッセージフォーマット

図 1 TCP ヘッダーの形式

分野 長さ 意味
送信元ポート 16ビット どのアプリケーションが送信したかを識別する送信元ポート。
宛先ポート 16ビット 宛先ポート。どのアプリケーションがそれを受信するかを識別します。
シーケンス番号 32ビット 序数フィールド。TCP 接続上で送信されるデータ ストリームの各バイトには、シーケンス番号が割り当てられます。シーケンス番号フィールドの値は、このセグメントで送信されるデータの最初のバイトのシーケンス番号を指します。
確認番号 32ビット 確認番号は、次に相手のセグメントを受信すると予想されるデータの最初のバイトのシーケンス番号、つまり、前回受信に成功したデータのバイトシーケンス番号に 1 を加えたものです。このフィールドは、ACK フラグが 1 の場合にのみ有効です。
データオフセット 4ビット データオフセット、すなわちヘッダの長さは、TCPセグメントのデータ先頭がTCPセグメントの先頭からどれだけ離れているかを示し、その計算単位は32ビット(4バイト)である。ヘッダーは最大60バイトありますが、オプションフィールドがない場合は通常20バイトです。
予約済み 6ビット 予約済み。0 を入力する必要があります。
URG 1ビット 緊急ポインタ有効フラグ。これは、このセグメントに緊急データがあり、できるだけ早く送信する必要があることをシステムに伝えます (高優先度データに相当)。
確認応答 1ビット シリアル番号が識別に有効であることを確認してください。確認応答番号フィールドは、ACK=1 の場合にのみ有効です。ACK=0 の場合、確認番号は無効です。
PSH 1ビット 受信者がこのセグメントをできるだけ早くアプリケーション層に引き渡す必要があることを示します。PSH = 1 の TCP セグメントを受信した場合は、キャッシュ全体がいっぱいになるのを待って上方に配信するのではなく、できるだけ早く受信アプリケーション プロセスに配信する必要があります。
RST 1ビット 接続IDを再構築します。RST=1 の場合、TCP 接続に重大なエラー (ホストのクラッシュやその他の理由によるものなど) があることを示し、接続を解放してから再確立する必要があります。
シン 1ビット 同期シーケンス番号は、接続を開始するために使用されます。SYN=1 は、これが接続要求または接続受け入れ要求であることを示します。
フィン 1ビット 送信者はタスク ID の送信を終了します。接続を解放するために使用されます。FIN=1 は、このメッセージ セグメントの送信者のデータが送信され、接続を解放する必要があることを示します。
16ビット ウィンドウ: TCP フロー制御。ウィンドウは、確認応答シーケンス番号フィールドによって示される値から始まります。これは、受信側が受信を予期しているバイト数です。ウィンドウの最大サイズは 65535 バイトです。
チェックサム 16ビット TCP ヘッダーと TCP データを含むチェック フィールドは、送信者によって計算および保存され、受信者によって検証される必要がある必須フィールドです。チェックサムを計算するときは、TCP セグメントの前に 12 バイトの擬似ヘッダーを追加する必要があります。
緊急指示 16ビット 緊急ポインタ。緊急ポインタは、URG フラグが 1 に設定されている場合にのみ有効です。TCP の緊急モードは、送信者が緊急データを相手側に送信する方法です。緊急ポインタは、このメッセージセグメント内の緊急データの総バイト数を示します(緊急データは、このメッセージセグメント内のデータの先頭に配置されます)。
オプション 変数 オプションフィールド。TCP プロトコルは当初、MSS とも呼ばれる最長セグメント長 (データ フィールドと TCP ヘッダー) というオプションを 1 つだけ指定していました。MSS は相手の TCP に「キャッシュが受信できるメッセージ セグメントのデータ フィールドの最大長は MSS バイトです」と伝えます。

新しい RFC では、オプション リストの終わり、操作なし、最大セグメント長、ウィンドウ拡張係数、およびタイムスタンプのオプションが提供されます。

  • ウィンドウ拡大率: 3 バイト、そのうちの 1 バイトがオフセット値 S を表します。新しいウィンドウ値は、(16+S) に増加した TCP ヘッダーのウィンドウ ビット数に等しくなります。これは、実際のウィンドウ サイズを取得するためにウィンドウ値を S ビット左に移動することと同じです。
  • タイムスタンプ: 10 バイト、最も重要なフィールドはタイムスタンプ値 (4 バイト) とタイムスタンプ エコー応答フィールド (4 バイト) です。
  • オプション確認オプション:
パディング 変数 パディング フィールドは、ヘッダー全体の長さが 4 バイトの整数倍になるようにビットを埋めるために使用されます。
データ 変数 TCP負荷。

メッセージ例

図2 TCPメッセージ(通常メッセージ)


 

図3 TCPメッセージ(キープアライブ)


 

図4 TCPメッセージ(キープアライブACK)


 

図5 TCPメッセージ(重複ACK)


 

図6 TCPメッセージ(再送)


 

図 7 TCP メッセージ (Out-Of-Order アウトオブオーダー)


図8 TCPメッセージ(ウィンドウアップデート)


 

UDPパケットフォーマット

メッセージフォーマット

図1 UDPパケットフォーマット

分野 長さ 説明する
Source Port 2字节 标识哪个应用程序发送(发送进程)。
Destination Port 2字节 标识哪个应用程序接收(接收进程)。
Length 2字节 UDP首部加上UDP数据的字节数,最小为8。
Checksum 2字节 覆盖UDP首部和UDP数据,是可选的。
data octets 变长 UDP负载,可选的。

报文示例

 

おすすめ

転載: blog.csdn.net/yuyeconglong/article/details/132182213