LAST_ACK có nghĩa là gì, như một giá trị Nhà nước trong netstat?


15

Nếu một máy chủ Windows có vài nghìn cổng được mở ở LAST_ACKtrạng thái (như được hiển thị bởi netstat), thì điều này có nghĩa là gì? Có phải bởi vì một điểm cuối đang chờ người kia phản hồi?

Câu trả lời:


10

Trạng thái last_ack (nếu tôi nhớ chính xác ngăn xếp TCP của mình) là trạng thái khi bạn đã nhận được thông báo FIN để đóng kết nối từ hàng xóm của mình, nhưng bạn vẫn cần phải xóa và tắt kết nối. Bạn tự gửi FIN cuối cùng và chờ ACK.

Thông thường treo trong last_ack có nghĩa là ứng dụng của bạn giữ một ổ cắm mở ngay cả khi đầu kia đã gửi xong dữ liệu. Điều này có thể xảy ra vì nhiều lý do. Có thể có tường lửa hoặc bộ cân bằng tải khác làm mất ACK cuối cùng từ máy khách và khiến bạn bị kẹt trong trạng thái last_ack. Nếu các kết nối không hết thời gian sau vài phút (10 hoặc hơn), bạn có thể gặp lỗi.

Hãy xem sơ đồ trạng thái tại http://tangentsoft.net/wskfaq/articles/debugging-tcp.html


4
Không chính xác. Bạn đang mô tả CLOSE_WAIT.
dùng207421

4

LAST_ACK là trạng thái cuối cùng ngay trước khi đóng kết nối TCP.


1
Cảm ơn, những gì có thể gây ra một cổng treo trong trạng thái này?
Nick Bolton

Đây có phải là máy chủ web IIS (hoặc dịch vụ khác) mà bạn đang thấy trên ứng dụng này hay ứng dụng của riêng bạn không?
Imo

Ứng dụng triển khai ứng dụng khách XML-RPC "Cook Computing" (từ Asp.Net, chạy qua IIS) và đang nói chuyện với máy chủ Java-RPC của Java.
Nick Bolton

1
Đây là giai đoạn cuối của cuộc trò chuyện TCP với khách hàng. Phần mềm của bạn sẽ đóng () phiên TCP và gửi LAST_ACK cho khách hàng. Sau đó, khách hàng sẽ gửi lại xác nhận rằng LAST_ACK đã được nhận. Tôi đồng ý với pehrs trong ứng dụng khách đó (có thể là tường lửa) có thể không thừa nhận hoặc gói có thể bị mất ... đây là hai trường hợp có khả năng nhất.
Imo

1
Nó không 'gửi LAST_ACK cho khách hàng'. Nó gửi FIN và hiện đang chờ ACK, đã nhận được FIN và gửi ACK. Đây là trạng thái cuối cùng sau khi đóng kết nối.
dùng207421

2

LAST_ACK có nghĩa là kết thúc của bạn đã nhận được FIN từ bạn bè, đã gửi ACK, gửi FIN và đang chờ ACK cuối cùng từ bạn bè. Tại thời điểm này, ứng dụng không thể làm gì hơn nữa: ổ cắm đã bị đóng. Ứng dụng thậm chí có thể đã thoát. Từ đây trở đi, TCP phải gửi lại FIN cho đến khi nhận được ACK cuối cùng hoặc hết thời gian thực hiện. Không có nhiều bạn có thể làm như một quản trị viên ngoại trừ điều tra mạng anh ta.


0

Tôi tin rằng @lmo đã đúng khi nói rằng đó là "trạng thái cuối cùng ngay trước khi đóng kết nối TCP", nhưng ngoài điều này, dựa trên việc tôi đọc trang wikipedia, đáng chú ý rằng đây không phải là một phần của " Cơ chế đóng hoạt động "(theo cách hiểu của tôi) là sự kết thúc của hầu hết các kết nối hoạt động tốt, nhưng là một phần của chuỗi" Đóng thụ động ", có lẽ được liên kết với Bad Stuff xảy ra.

(FWIW, tôi là ngôn ngữ, không phải mạng. Tôi rất vui khi được làm rõ từ một người trong mạng.)


Anh ấy không đúng khi nói điều đó, và không có gì xấu về một sự gần gũi thụ động. Nó chỉ có nghĩa là các đồng nghiệp đóng cửa trước khi bạn đã làm.
dùng207421
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.