logo

TCPフラグ

TCP 接続では、フラグは接続の特定の状態を示したり、トラブルシューティング目的などの追加の有用な情報を提供したり、特定の接続の制御を処理したりするために使用されます。最も一般的に使用されるフラグは次のとおりです。 SYN、ACK、FIN 。各フラグは 1 ビットの情報に対応します。

フラグの種類:



    同期 (SYN) – 2 つのホスト間の接続確立フェーズまたは 3 ウェイ ハンドシェイク プロセスの最初のステップで使用されます。送信者と受信者からの最初のパケットのみがこのフラグを設定する必要があります。これは、シーケンス番号を同期するために使用されます。つまり、相手側にどのシーケンス番号を受け入れる必要があるかを伝えるために使用されます。確認応答 (ACK) – ホストが正常に受信したパケットを確認するために使用されます。確認応答番号フィールドに有効な確認応答番号が含まれている場合、フラグが設定されます。
    以下の図では、受信側は接続確立の 2 番目のステップで ACK = 1 と SYN = 1 を送信し、最初のパケットを受信したことを送信側に伝えます。
    終了 (FIN) – 接続の終了を要求するために使用されます。つまり、送信者からのデータがなくなったときに、接続の終了を要求します。これは送信者によって送信された最後のパケットです。予約されたリソースが解放され、接続が正常に終了します。
    リセット (RST) – RST 送信者が TCP 接続に問題がある、または会話が存在すべきではないと感じた場合に、接続を終了するために使用されます。パケットが予期していなかった特定のホストに送信されると、受信側から送信される可能性があります。 緊急 (URG) – パケットに含まれるデータに優先順位を付け、受信側で緊急に処理する必要があることを示すために使用されます。このフラグは、パケット内の緊急データの位置を識別するために、Urgent Pointer フィールドと組み合わせて使用​​されます。プッシュ (PSH) – 送信者側で追加のデータがバッファリングされるのを待たずに、受信ホストへの即時データ配信を要求するために使用されます。このフラグは、リアルタイム オーディオやビデオ ストリーミングなどのアプリケーションでよく使用されます。ウィンドウ (WND) – 受信ウィンドウのサイズを送信者に伝えるために使用されます。ウィンドウ サイズは、受信側ホストがいつでも受け入れることができるデータの量です。送信者は、受信者によって通知されたウィンドウのサイズに基づいて、送信するデータの量を制限する必要があります。チェックサム (CHK) – 送信中に TCP セグメントの整合性を検証するために使用されます。チェックサムは、ヘッダーおよびデータ フィールドを含むセグメント全体にわたって計算され、ネットワーク パスに沿った各ホップで再計算されます。シーケンス番号 (SEQ) – 受信者がパケットを受信する順序を識別するために、送信者によって各セグメントに割り当てられる一意の番号です。シーケンス番号は確認応答番号と組み合わせて使用​​され、信頼性の高いデータ転送を保証し、パケットの重複を防ぎます。確認番号 (ACK) – TCP セグメントの受信を確認し、次に予期されるシーケンス番号を送信者に伝えるために使用されます。確認応答番号フィールドには、最後に受信したセグメントの番号ではなく、次に予期されるセグメントのシーケンス番号が含まれます。

終了 (FIN) 対 リセット (RST) –

    プッシュ (PSH) – デフォルトでは、トランスポート層はアプリケーション層が最大セグメント サイズに等しい十分なデータを送信するまでしばらく待機します。これにより、ネットワーク上で送信されるパケット数が最小限に抑えられますが、これは対話型アプリケーション (チャット) などの一部のアプリケーションでは望ましくありません。同様に、受信側のトランスポート層はパケットをバッファリングし、特定の基準を満たしている場合はアプリケーション層に送信します。

    この問題は PSH を使用することで解決されます。トランスポート層は PSH = 1 に設定し、アプリケーション層から信号を受信するとすぐにセグメントをネットワーク層に送信します。受信側のトランスポート層は、PSH = 1 を確認すると、すぐにデータをアプリケーション層に転送します。
    一般に、これらのパケットをバッファリングするのではなく、受信時に処理するように受信者に指示します。
    緊急 (URG) – URG = 1 フラグを持つセグメント内のデータは、アプリケーション層にさらに与えるデータがある場合でも、すぐにアプリケーション層に転送されます。これは、他のすべてのパケットを処理する前に緊急パケットを処理するように受信者に通知するために使用されます。既知の緊急データがすべて受信されると、受信者に通知されます。



プッシュ (PSH) 対緊急 (URG) –