Nhưng làm thế nào để biết nếu ACK cuối cùng bị mất?
Bởi vì nó đã không nhận được nó trong khoảng thời gian chờ. Tôi biết đó là câu trả lời "duh", nhưng đó chính xác là lý do tại sao các trạng thái và thời gian chờ này tồn tại.
Thụ động sẽ gần hơn gửi lại FIN
Không. Trừ khi các gói tiếp theo đến luồng đó và điều đó sẽ dẫn đến "RST" (đặt lại) được gửi.
Toàn bộ quá trình là máy trạng thái phức tạp để thực hiện tắt máy có trật tự mặc dù có khả năng xảy ra lỗi mạng. Mạng bị đứt, liên kết gặp lỗi, liên kết trở nên bão hòa và phải bỏ gói, thiết bị không hoạt động, v.v. Như một bài tập, hãy chạy cây trạng thái để kết nối hoạt động khi một trong các điểm cuối biến mất (ví dụ như mất điện.)
TL; DR Cây trạng thái đó được thiết kế để xử lý mọi chế độ thất bại có thể.