3

私はhttpサーバーを開発しています。具体的には、クライアントによって閉じられた tcp 接続の数と、サーバーによって閉じられた接続の数を知りたいです。

http サーバーでキープアライブ機能をオフにしたため、通常、サーバーが最初の FIN パケットを送信し、クライアントが 2 番目のパケットを送信します。これは、接続がサーバーによって正常に閉じられたことを意味します。それらが逆の順序である場合、それは私が気にする異常終了を示しています。

ここに質問があります。tcpdump を使用して、最初の FIN パケットと 2 番目の FIN パケットをどのように区別できますか? それらの両方がFINおよびACKフラグビットに設定されているためです。

よろしくお願いします。明けましておめでとうございます。

4

1 に答える 1

2

ssh5000/tcp でリッスンしている Web サーバーへの接続をトンネリングしています。セッションを実行しましたtcpdumpが、タイムスタンプを無視しても、TCP ソース ポート番号から誰が何を送信したかは明らかです。

05:42:06.344592 IP localhost.5000 > localhost.37924: Flags [F.], seq 243, 
    ack 419, win 529, options [nop,nop,TS val 120830308 ecr 120830308], length 0
05:42:06.381872 IP localhost.37924 > localhost.5000: Flags [.], ack 244, 
    win 513, options [nop,nop,TS val 120830318 ecr 120830308], length 0
05:42:06.382504 IP localhost.37924 > localhost.5000: Flags [F.], seq 419, 
    ack 244, win 513, options [nop,nop,TS val 120830318 ecr 120830308], length 0
05:42:06.382535 IP localhost.5000 > localhost.37924: Flags [.], ack 420, 
    win 529, options [nop,nop,TS val 120830318 ecr 120830318], length 0

05:42:06.344592、私の Web サーバーはクライアントからのバイトに ACK を送信し、FINフラグを設定しました。送信元ポートが 5000 であるため、それが Web サーバーであることはわかっています。現実の世界では、送信元 IP アドレスだけで簡単にわかります。

クライアントで05:42:06.382504ACK をサーバーのFIN. ここでも、送信元ポートが 5000 ではないのでわかります。

于 2012-01-01T11:48:02.257 に答える