Якщо сервер Windows має кілька тисяч портів, відкритих у LAST_ACK
стані (як показано netstat), що це може означати? Це тому, що одна кінцева точка чекає, коли інша відповість?
Якщо сервер Windows має кілька тисяч портів, відкритих у LAST_ACK
стані (як показано netstat), що це може означати? Це тому, що одна кінцева точка чекає, коли інша відповість?
Відповіді:
Стан last_ack (якщо я правильно пригадую свій стек TCP) - це стан, коли ви отримали своє повідомлення FIN про припинення з'єднання від свого сусіда, але вам все одно потрібно розмити і вимкнути з'єднання. Ви відправляєте фінальний FIN самостійно і чекаєте ACK.
Зазвичай висить у last_ack означає, що ваша програма тримає розетку відкритою навіть тоді, коли інший кінець закінчив надсилання даних. Це може статися з кількох причин. Можливо, є брандмауер або інший балансир навантаження, який втрачає останній ACK від клієнта, і залишає вас застрягнутим у стані last_ack. Якщо підключення не вичерпано через кілька хвилин (10 або більше), ви, ймовірно, помилку.
Перегляньте діаграму стану на веб-сторінці http://tangentsoft.net/wskfaq/articles/debugging-tcp.html
LAST_ACK - це останній правий стан перед тим, як закрити з'єднання TCP.
LAST_ACK означає, що ваш кінець отримав FIN від однорангового, надіслав ACK, надіслав FIN та чекає остаточного ACK від однорангового. На даний момент додатком нічого не можна зробити: розетка закрита. Додаток, можливо, навіть вийшов. З цього моменту на TCP потрібно повторно надіслати FIN, доки він не отримає остаточний ACK або не закінчиться. Ви не можете зробити як адміністратор, окрім як досліджувати його мережу.
Я вважаю, що @lmo правильно сказати, що це "останній стан прямо перед тим, як закрити TCP-з'єднання", але крім цього, виходячи з мого читання сторінки вікіпедії, варто зазначити, що це не є частиною " Механізм активного закриття ", який (на моє розуміння) - це закінчення більшості добре сприйнятих зв'язків, а скоріше є частиною послідовності" Пасивного закриття ", яка, імовірно, асоціюється з Поважними ситуаціями.
(FWIW, я - мови, а не мережі. Буду радий поясненням від мережі.)