私はtcp-ipスタック、サーバー-クライアント接続を学んでいます。簡単なクライアントサーバーを作成しました。クライアントとサーバーは問題なく相互にデータを転送することができました。クライアントとサーバーを同じマシンで実行しています。ctrl + cでサーバーを閉じていたとき、カーネルがFINではなくRST信号を送信していたことがわかりました。(私の質問を参照してください:サーバーソケットのアクティブな閉鎖)
もう少し調べてみると、クライアントの1つが読み取り呼び出し中であり、対応するサーバースレッドが無限のwhileループで何もしていないことに気付きました(私の側ではバグのあるダムコーディングがいくつかあります)。しかし、その無限のwhileループを削除すると、期待される動作が見られました。FINが両方向に送信されているのがわかりました。
それで、なぜtcpレイヤーが最初のケースでRSTを送信していたのか疑問に思います。