質問: TCPのコネクション管理について 「マスタリングTCP/IP入門編」ではホストAからホストBへコネクション確立要求を送り、ホストBは確認応答と確立要求を同時に送っていますが、最後ホストBは確認応答と切断要求を同時に
回答: 補足しますと、相手からFINを受け取ったからと言って、TCPは勝手にFINを送信するわけにはいきません。 TCPは、上位APがデータを送り終えたかどうか分からないので、上位APからの「ソケットのクローズ」を待たなければなりません。 なので、とりあえずACKだけ返しておいて、CLOSE_WAITという状態で待つということです。 ただし、同時にCLOSEした場合は、ACKより先にFINが飛び交うこともあり得ますが、あとでACKが交互に飛んでると思われます。 見た目は、1FIN/ACK → 2FIN/ACK → 3ACKに見えますが、2のACKは、1のFINを受信したこと対するACKではない、つまり、確認応答番号は進んでないと思われます。