tcpdump の出力における TCP パケット [P.] フラグは何を意味しますか?

tcpdump の出力における TCP パケット [P.] フラグは何を意味しますか?

IP xxxx が TCP パケットの [P.] フラグを使用して IP zzzz に接続する場合、この [P.] フラグは正確には何を意味しますか? xxxx が zzzz に何らかのデータを送信することを意味しますか?

答え1

この[P.]旗は一体何なのか

PUSHフラグです。

Tcpflags は、S (SYN)、F (FIN)、P (PUSH)、R (RST)、U (URG)、W (ECN CWR)、E (ECN-Echo) または `.' (ACK) の組み合わせです。フラグが設定されていない場合は `none' になります。

ソースTCPDUMP のマニュアルページ

プッシュ機能と PUSH フラグの目的は、送信ユーザーから受信ユーザーにデータをプッシュすることです。レコード サービスは提供しません。

プッシュ機能と、TCP/ユーザー インターフェイスを通過するデータのバッファーの使用には、関連があります。受信側ユーザーのバッファーに配置されたデータにプッシュ フラグが関連付けられるたびに、バッファーがいっぱいになっていなくても、バッファーは処理のためにユーザーに返されます。プッシュが見られる前にユーザーのバッファーがいっぱいになるデータが到着した場合、データはバッファー サイズ単位でユーザーに渡されます。

ソース[PSH、ACK] Wireshark キャプチャ - Wireshark Q&A

PSH と PUSH 関数

データを送信すると、TCPバッファリングされます。そのため、文字を送信してもすぐには送信されず、さらにデータが残っているかどうか確認するまで待機します。しかし、おそらく、データをそのままネットワーク上に送信したいでしょう。そこで、PUSH 機能が役立ちます。データを PUSH すると、TCP はすぐにセグメント (またはいくつかのセグメント) を作成し、押す彼ら。

しかし、話はここで終わりません。ピアTCPがデータを受信すると、当然バッファリングされます。バイトごとにアプリケーションを妨害することはありませんここでPSHフラグが機能します。受信TCPがPSHフラグを見ると、すぐに押すデータをアプリケーションに送信します。

フラグを設定するための API はありませんPSH。通常、カーネルがバッファを空にするときにフラグが設定されます。TCP/IP Illustrated より:

このフラグは、通常、パケットの送信に伴ってパケットの送信側のバッファが空になったことを示すために使用されます。つまり、PSH ビット フィールドが設定されたパケットが送信側から送信されたとき、送信側には送信するデータがもうありませんでした。

しかし、スティーブンス氏は次のようにも言っていることに留意してください。

プッシュ(受信者はできるだけ早くこのデータをアプリケーションに渡す必要があります)確実に実装または使用されていない

ソースTCP におけるプッシュフラグと緊急フラグの違い、回答者クニクター

関連情報