Чи пасивний ближчий відправить 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і закрив з'єднання.