プッシュフラグがTCPセグメントに設定されている場合
-
20-09-2019 - |
質問
私はここで、この前の質問をします:
私は、溶液中で与えられた方法を試みたとのnetcatを使用しながら送信及びエーテルでパケットを盗聴しながら、私は、他の1つの側から「ハロー」の文字列を送信したときには、プッシュフラグセットを有するセグメントで送信されたことが観察されます。
プッシュフラグを設定することを決定誰? TCPセグメントにプッシュまたは緊急フラグを設定するためのルールは何ですか? それは、ソケットAPIを使用してそれを行うことは可能でしょうか?
解決
PUSHフラグは基本的に、「私は今の終わりだ」と言ってTCPスタックによって使用されています。それだけのデータセグメントが完全にソースによって送信される指示います。
これはそれを行うには、単にTCPスタック/実装であるとしてユーザランドでそれを示すかを制御する方法は、(あなたのソケットAPI)はありません。緊急フラグとして。
(出典:リチャード・スティーヴンス - TCP / IP示す巻1 に、チャプター20)
他のヒント
あなたはsend()
フラグを設定してMSG_OOB
を使用して緊急フラグを設定することができます。これが示すように、送信されたデータは、それが正常に単にread()
を呼び出し、呼び出し側で受信されることはありませんつまり、アウトオブバンドになります。受信側は信号SIGURG
ようOOBデータのいくつかの指標を取得する、またはソケットは例外となり、そのような使用select()
として確認することができます。
ほとんどの時間、あなたは、緊急フラグを設定する必要はありません。
所属していません StackOverflow