Чи пасивний ближчий відправить FIN і тоді активний ближчий знає, що ACK був втрачений?
Так. Цитування з тома 1 ілюстрованого TCP / IP у розділі Керування з'єднаннями TCP:
- Для завершення завершення кінцевий сегмент містить ACK для останнього FIN. Зауважте, що якщо FIN втрачено, він повторно передається до отримання ACK для його отримання.
Є тайм-аут. Коли ввімкнеться LAST_ACK
, пасивний ближче відправиться, FIN
коли з’явиться тайм-аут, припускаючи, що він був втрачений. Якщо вона справді була втрачена, то активний ближчий зрештою отримає повторно переданий FIN
та вхід TIME_WAIT
. Якщо FIN
не було програно, але фінал ACK
було втрачено, то активне з'єднання входить TIME_WAIT
і отримує FIN
знову. Коли це станеться - надходить FIN
в TIME_WAIT
- ACK
ретранслюється.
Значення тайм - ауту в TIME_WAIT
це НЕ використовується для цілей повторної передачі. Коли вчасно TIME_WAIT
очікується час, передбачається, що фінал ACK
був успішно доставлений, оскільки пасивний ближчий не передавав FIN
пакети. Отже, час очікування TIME_WAIT
- це лише кількість часу, після якого ми можемо сміливо припустити, що якщо інший кінець нічого не надіслав, то це тому, що він отримав остаточне ACK
і закрив з'єднання.