私はjava(Socket)でシンプルなtcpサーバを作成し、telnetで接続しました。すべて正常に動作します。私はちょうどTCPプロトコルについての1つのことを明確にしたい。サーバーを不適切な方法で停止すると(実行中にIntelligIdeaを停止するだけで)、クライアントのプロンプトにメッセージが表示されます。接続が失われました。だから、問題は、サーバーがクラッシュする前にクライアントに情報を送信するかどうかです。または、telnetとserverは、私が何も送っていなくても、接続が存在するかどうかを知るために、いつも互いに知り合わない情報を送信しますか、それともtcpプロトコルと関係していますか?一言で言えば、クライアントはサーバーがクラッシュしたことをどのように知っていますか? 私は新しいので、ここでそれをクリアすることに決めました。前もって感謝します!telnetがtcp接続をどのように閉じるのでしょうか?
0
A
答えて
0
接続はTCPで実行されます。 TCPプロトコルは、接続がどのように閉じられるかを指定します。
- クローズサイド(サーバー)OSは、ソケットを閉じずにプロセスが終了したことを検出し、ソケットクローズプロセスを開始します。
- サーバはFINパケットをクライアントに送信します
- クライアントプロトコルスタックはFINを受信し、接続が終了したことをソケットユーザ(telnet)に通知し、ACKをサーバに送信します。
- サーバはACKを受信し、クライアントがFINを送信するのを待っている状態になります。
- クライアントプログラム(telnet)がOSへの終了を確認すると、クライアントプロトコルスタックはFINパケットをサーバーに送信します。
- サーバはFINを受信し、接続を終了してクリーンアップし、ACKで応答します。
- クライアントはACKを受信し、接続を終了し、その接続面をクリーンアップします。
このすべてが、OSレベルで起こる、JVMまたはクライアントプログラムとソケットが閉じているTelnetクライアントへの通知以外に以下のは、目に見えないです。多くの場所で、Web上のTCPプロトコルに関する詳細を見つけることができます。
関連する問題
- 1. TCP接続が閉じているのはなぜですか?
- 2. 上位レベルのレイヤーを閉じずにTCP接続を直接閉じることは正しいですか?
- 3. TCP接続を例外なく正常に閉じるにはどうすればよいですか?
- 4. どのようにデバイスを接続するメッセージを送信し、アンドロイドアプリケーションのBlueToothの接続を閉じますか?
- 5. 接続プーリング:接続を閉じるかどうかを確認する
- 6. どのように接続のPDOのPHPを閉じますか?
- 7. どのように接続を閉じて、urllib2との接続を再利用しますか?
- 8. 強制的に閉じたTCP接続をエミュレートするには?
- 9. 無効なユーザーが大きなファイルをPOSTしようとしたときにTCP接続を閉じるにはどうすればいいですか?
- 10. どのようにして同じポートにTCP接続を戻すことができますか?
- 11. ポート別にTCP接続を閉じる方法は?
- 12. Mono ServiceStackがtcp接続を早く閉じます
- 13. ssh接続を閉じないようにする方法は?
- 14. TCPサーバー/クライアント接続をどのように維持するのですか?
- 15. Androidは私がOutputStreamを閉じるべきでしょうか?
- 16. クライアントが接続を閉じたかどうかを知る方法
- 17. プロキシサーバーはtcp/http接続でどのように動作しますか?
- 18. クライアントに知らせる間にサーバー側からTCP接続を閉じる
- 19. SSH接続によるTelnetの確立
- 20. PHP - 非ブロッキング、送信TCP接続 - どのように?
- 21. sql接続、できるだけ早く閉じる - vb.netアプリケーションの場合はtrue?またはちょうどasp.net
- 22. クライアント側の影響力tcpはどのように接続しますか?
- 23. IBOutletに接続しようとすると、XCodeがこのダイアログを閉じるのはなぜですか?
- 24. Golangネットパッケージでは、TCP接続が閉じられていますか?
- 25. nginxにすぐに接続を閉じるようにします
- 26. ローカルネットワーク外のTCPサーバーにTCPクライアントを接続するにはどうすればよいですか?
- 27. 1つのクライアントが接続を失った後にTCPサーバーソケットが閉じられるのはなぜですか?
- 28. データベース接続を閉じるDjangoのメソッドをテストするにはどうすればよいですか?
- 29. Apache Camel:200を受信した後TCP接続が閉じない理由
- 30. sinatra streaming apiを使用してredis接続を閉じるにはどうすればよいですか?
#2と残りのほとんどはWindowsでは発生しません。代わりにRSTが発行されます。 #5は 'クライアントプログラム(Telnet)がソケットを閉じるとき'でなければなりません。 「ソケットが閉じていることをクライアントに通知する」は、「接続がピアによって閉じられたことをクライアントに通知する」べきである。クライアントは独自のソケットを閉じます。 – EJP