2011-02-07 6 views
0

システムコールロギングユーティリティを実行できます。今私が見るTCP SYNパケットの数は、私が記録するconnect()システムコールの数と等しくないのですか?これの理由は何でしょうか? 他のシステムコールコールは内部的に接続していますか?connect()コール数= TCP SYNセグメント数?

答えて

1

さまざまな理由があります。

ルーティング不能なアドレスのためにconnect()が失敗した場合、SYNパケットはまったく生成されません(たとえば、arp timeout)。同様に、他のエラー(例えば無効なパラメータ)で接続が失敗した場合

あなたが(例えば、ローカルホスト)を見ていないインターフェイス上で行くかもしれないSYNパケット

カーネルが再試行します。要求への応答がない場合、最終的にタイムアウトを返す前に再度試みます(おそらく数回)。

+0

接続通話時間の前にSYNセグメントが表示されます...これはどのような理由が考えられますか? – Bruce