Вас, вероятно, учили, что TCP-соединения требуют четырехстороннего закрытия: FIN/ACK -> ACK, FIN/ACK -> ACK. Это верно, но для этого не обязательно брать четыре пакета.
В представленном вами случае хост 192.168.0.106 начинает закрываться с FIN/ACK. Другой конец соединения, вместо того, чтобы просто подтвердить это, также использует возможность начать закрытие. Таким образом, когда он отвечает FIN/ACK, он одновременно подтверждает полученный FIN и начинает собственное закрытие. Последний пакет — это подтверждение FIN от хоста 211.
Это означает, что в этом случае использовались только три пакета, но у нас все еще был подтвержденный FIN от хоста A и подтвержденный FIN от хоста B. Это действительно единственное требование в протоколе.
Извините за плохое выражение. Я имею в виду, почему мы всегда говорим: «Три шага в установлении http-соединения. 4-й шаг в отключении http-соединения». Насколько я знаю, FIN — это просто флаг, который не увеличивает размер http-датаграммы. Почему мы не говорим о 3-м шаге при отключении http-соединения?
Потому что это то, что указано в TCP RFC.
Почему мы говорим http 3 пожать руку, а не 4, при установке http соединения?