この質問は、友人との論争から生まれました。ここ数週間、奇妙な現象に遭遇しました。インターネットから切断しても、すべての接続が切断されることはありません。ssh セッションも再接続してもそのままです。どうしてそんなことが可能なのでしょうか?
ここでの答えは、それが完全に正常であると述べています。では、なぜTCP接続がいつもNAT を介さずにインターネットに再接続した後、一部のユーザーでは接続が失われます。これは私の友人の場合です。インターネット プロバイダーを除けば、両方の設定は同等です。ダイヤルアップ経由の Linux です。
答え1
これは正常です。TCP にはリンクが永続的にアップしていることを要求するものは何もありません。接続がアイドル状態 (データの送受信がない状態) の場合、両端でソケットが開いている限り、リンクは持続します。(もちろん、片方の端がデータを送信しようとして ACK を受信しない場合は、タイムアウトにより最終的に接続が閉じられます。)
残念ながら、これはステートフル NAT/ファイアウォールによって破られることがよくあります。たとえば、自宅のルーターを再起動すると、NAT テーブル内のすべての内容が消去され、パケットを転送するローカル ホストがわからなくなるため、着信データが黙ってドロップされたり、接続が閉じられたりすることがあります。