Câu hỏi Trạng thái CLOSE_WAIT và TIME_WAIT là gì?


Khi tôi làm netstat -a trên máy tính Windows của mình, tôi nhận được một danh sách các cổng với một trong bốn trạng thái:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Làm gì CLOSE_WAIT và TIME_WAIT có nghĩa là / chỉ ra?


147
2017-08-08 19:23


gốc


Xem webmasters.stackexchange.com/q/22946 - Dheeraj V.S.
xem 'man netstat', cuộn xuống phần trạng thái: linux.die.net/man/8/netstat - MaQleod
Shameless plug để một câu trả lời trên chị em của chúng tôi Lỗi máy chủ. - Hennes
Crosse dupe: askubuntu.com/questions/538443/… - Mokubai♦


Các câu trả lời:


Do cách thức TCP / IP hoạt động, các kết nối không thể được đóng ngay lập tức. Các gói có thể bị hỏng hoặc được truyền lại sau khi kết nối đã bị đóng. CLOSE_WAIT cho biết rằng điểm cuối từ xa (phía bên kia của kết nối) đã đóng kết nối. TIME_WAIT cho biết rằng điểm cuối cục bộ (bên này) đã đóng kết nối. Kết nối đang được giữ xung quanh để mọi gói bị trì hoãn có thể khớp với kết nối và được xử lý phù hợp. Các kết nối sẽ bị xóa khi chúng hết thời gian trong vòng bốn phút. Xem http://en.wikipedia.org/wiki/Transmission_Control_Protocol để biết thêm chi tiết.


155
2017-08-08 19:42



Các từ chồn "phía bên kia" và "bên này" khó hiểu. Chúng tôi có thể viết lại (chính xác) bằng "nguồn" và "đích" thay thế không? - ADTC
@ADTC Không, bởi vì điều đó sẽ không có ý nghĩa - TCP là full-duplex, hai bên có thể là nguồn hoặc đích. Các từ đúng sẽ là "điểm cuối cục bộ" và "điểm cuối từ xa". - Jonathon Reinhart
@ JonathonReinhart, Chỉ là "địa phương"và"xa"." điểm cuối "là dự phòng. - Pacerier
@Pacerier Ngoại trừ "điểm cuối" là một danh từ và "địa phương" không phải là. - Jonathon Reinhart
@JonathonReinhart, Cả hai "địa phương"và"xaĐó có thể là danh từ. Ngoài ra, tôi đã tìm thấy một cuộc thảo luận khác ở đây nói rằng đó là "địa phương / ngang nhau"thay vì" cục bộ / từ xa ": stackoverflow.com/questions/14388706/… - Pacerier


Về cơ bản, trạng thái "WAIT" có nghĩa là một bên đã đóng kết nối nhưng xác nhận cuối cùng về việc đóng đang chờ xử lý.

Xem ví dụ sơ đồ trạng thái TCP này để biết chi tiết:

http://www.jxos.org/Projects/TCP/tcpstate.html


27
2017-08-08 19:44



Điều này mô tả chính xác CLOSE_WAIT nhưng không mô tả TIME_WAIT. TIME_WAIT cho biết rằng ứng dụng cục bộ đã đóng kết nối và bên kia đã thừa nhận và gửi FIN của riêng nó. Chúng tôi hiện đang chờ đợi bất kỳ gói trùng lặp đi lạc nào có thể làm hỏng người dùng mới của cùng một cổng. - Chris Smowton
@ChrisSmowton, Vì vậy, những người đang sử dụng các thuật ngữ đúng? Sơ đồ hoặc netstat? (cf.) - Pacerier
@Pacerier Tôi nghĩ rằng họ phù hợp - nơi nào bạn nghĩ rằng họ không đồng ý? - Chris Smowton
@ChrisSmowton Vì vậy, điều này có nghĩa là chủ sở hữu cổng tiếp theo có thể nhận thêm byte và có thể phá vỡ phản hồi nếu chúng tôi đặt TIME_WAIT = 0? - MonsterMMORPG
Có thể nhưng không chắc, vì các số thứ tự sẽ cần phải khớp với ứng dụng để xem gói giả mạo nối vào luồng, hoặc người nhận sẽ cần phải đệm bộ dường như ra khỏi trật tự cho đến khi số thứ tự đúng xuất hiện. Tôi không biết đủ về việc triển khai thực tế để cho bạn biết liệu việc này có được thực hiện hay không. - Chris Smowton


TIME_WAIT đại diện chờ đợi đủ thời gian để đảm bảo rằng TCP từ xa nhận được ACK của yêu cầu FIN của nó. Xem en.wikipedia.org/wiki/Transmission_Control_Protocol (và cũng RFC 793)


-1
2018-05-20 11:39



Điều này làm gì thêm vào thông tin được cung cấp bởi các câu trả lời hiện có? - fixer1234
Thêm một tham chiếu đến RFC 793 - Denio Mariz