0

rawソケットを使用してtcpクライアントプログラムを構築し、それをマシンAで実行し、通常のtcpサーバープログラムをマシンBで実行します。

rawソケットベースのクライアントプログラムは最初にSYNパケットを送信し、次にリモートtcpサーバーからSYN / ACKパケットを受信し、次にマシンAのカーネルがRSTをリモートtcpサーバーに送信します。

シーケンス番号とack-シーケンス番号は問題ありません潜在的な理由は何ですか?
そしてそれにどう対処するか?ありがとう!

ところで:リモートマシンBでパケットをキャプチャするためにtcpdumpを使用しましたが、実際にはクライアントがSYNを送信する前に、クライアントからのSYNパケットに対して「再利用されたTCPポート番号」が表示されます。

netstat -tnp

進行中のtcpセッションを確認しますが、何も表示されません

4

1 に答える 1

1

これは完全に正常です。マシンが予期しない SYN/ACK パケットを受信した場合、マシンは RST で応答して、その接続についての知識や関心がないことを相手側に知らせる必要があります。カーネルが RST を送信したのは、それが本来の目的であり、プログラムが何を行っているかを認識していないためです。

すでに TCP スタックを持っているマシンで独自の TCP スタックを実行しようとしている場合、スタックが通信しようとしているマシンに通常の TCP スタックが応答しないようにする必要があります。おそらく機能しない 2 つの TCP スタックと通信しています。

于 2013-03-18T13:01:21.007 に答える