実際に TCP ソケットを閉じているマシンはどれですか。その理由は何ですか。

実際に TCP ソケットを閉じているマシンはどれですか。その理由は何ですか。

私は TCP ソケットを処理する C# アプリケーションに取り組んでいます。

サーバーアプリケーション(ヘラクレス) がリモート マシン上でソケットを開いたままにしようとしています。
私のマシンには、その開いているソケットをサブスクライブするアプリケーションがあります。

私は使用していますMicrosoft の TCPViewer何が起こっているのかを追跡します。

数分後、ソケットが確立状態から時間待機状態に変わり、その後ソケット接続が切断されます。

両方のコンピューターのイベント ビューアーで、すべての一般的な場所 (Windows ログ/アプリケーション、/セキュリティ、/セットアップ、/システム、/転送されたイベント) でイベント ID 4227 を検索しましたが、何も見つかりません。

どのマシンが実際に TCP ソケットを閉じているか、またその理由を知るにはどうすればよいでしょうか?

答え1

どのマシンが実際にTCPソケットを閉じているかを知るにはどうすればいいですか

どちら側が接続を閉じるかを知るには、パケットキャプチャを行う必要があります。https://wiki.wireshark.org/TCP-4-times-close.mdWireshark で接続の終了がどのように表示されるかを示します。最初の FIN を送信した側が接続を閉じた側です。

... なぜ?

トラフィックを見るだけでは、これを断言することはできません。アプリケーション層プロトコルが接続を期待または許可しているため、接続が閉じられる場合があります。クライアントまたはサーバーのクラッシュが原因で接続が閉じられる場合もあります。プロトコル違反が原因で、つまり相手側が予想と異なる動作をした場合、当事者によって接続が閉じられる場合もあります...したがって、理由を見つけるには、アプリケーション プロトコルを理解し、ログ ファイルを調べ、プロセスが実行中かどうかなどを確認する必要があります。

関連情報