NASTTA'daki bir Durum değeri olarak LAST_ACK anlamı ne?


15

Bir Windows sunucusunda açık LAST_ACKdurumda birkaç bin bağlantı noktası varsa (netstat tarafından gösterildiği gibi), bu ne anlama gelir? Bir uç nokta diğerinin yanıt vermesini beklediği için mi?

Yanıtlar:


10

Last_ack durumu (TCP yığınımı doğru bir şekilde hatırlarsam), FIN mesajınızı komşunuzdan kapatmak için aldığınızda, ancak yine de bağlantınızı yıkamanız ve kapatmanız gereken durumdur. Final FIN'yi kendiniz gönderir ve bir ACK beklersiniz.

Genellikle last_ack'te asılı kalmak, diğer uç veri göndermeyi bitirmiş olsa bile uygulamanızın bir soketi açık tuttuğu anlamına gelir. Bu birkaç nedenden dolayı olabilir. İstemciden son ACK'yi kaybeden ve sizi last_ack durumunda takılı bırakan bir güvenlik duvarı veya başka bir yük dengeleyici olabilir. Bağlantılar birkaç dakika (10 ya da daha fazla) sonra zaman aşımına uğramazsa, büyük olasılıkla bir hatanız vardır.

Devlet şemasında göz at http://tangentsoft.net/wskfaq/articles/debugging-tcp.html


4
Doğru değil. CLOSE_WAIT tanımlıyorsunuz.
user207421

4

LAST_ACK, TCP bağlantısını kapatmadan hemen önceki son durumdur.


1
Teşekkürler, bir liman bu durumda asılı neden olabilir?
Nick Bolton

Bu, bunu gördüğünüz bir IIS web sunucusu (veya başka bir hizmet) mi yoksa kendi uygulamanız mı?
Imo

Uygulama "Cook Computing" XML-RPC istemcisini uygular (Asp.Net'ten, IIS üzerinden çalıştırın) ve bir Java XML-RPC sunucusuyla konuşuyor.
Nick Bolton

1
İstemci ile yapılan TCP konuşmasının son aşamalarıdır. Yazılımınız TCP oturumunu kapatır () ve istemciye bir LAST_ACK gönderir. Müşteri daha sonra LAST_ACK'in alındığına dair bir onay göndermelidir. Istemci (belki güvenlik duvarı) kabul etmemiş olabilir ya da paket kaybolmuş olabilir pehrs katılıyorum ... Bunlar en olası iki durumdur.
Imo

1
'İstemciye bir LAST_ACK göndermez'. Bir FIN gönderir ve halihazırda bir FINK almış ve bir ACK göndermiş olan bir ACK bekliyor. Bağlantı kapatıldıktan sonraki son durumdur .
user207421

2

LAST_ACK, sonunuzun emsalden bir FIN aldığı, bir ACK gönderdi, bir FIN gönderdi ve emsalden nihai ACK'yı beklediği anlamına gelir. Bu noktada uygulamanın yapabileceği başka bir şey yoktur: soket kapalıdır. Uygulamadan çıkılmış bile olabilir. Bundan sonra, son ACK'yi alana kadar FIN'i yeniden göndermek veya zaman aşımı yapmak TCP'ye bağlıdır. Ağını araştırmak dışında yönetici olarak yapabileceğiniz pek bir şey yok.


0

@Lmo'nun "TCP bağlantısını kapatmadan hemen önce son durum" olduğunu söylerken doğru olduğuna inanıyorum, ancak buna ek olarak, wikipedia sayfasını okumama dayanarak, bunun " Aktif kapanış mekanizması (benim görüşüme göre) en iyi davranan bağlantıların sona ermesidir, daha ziyade muhtemelen Kötü Şeyler Oluyor ile ilişkili olan "Pasif Kapat" dizisinin bir parçasıdır.

(FWIW, ben dilim, ağ değil. Bir ağ kişisinden açıklama yapmaktan mutluluk duyarım.)


Bunu söylerken doğru değil ve pasif bir kapanış hakkında kötü bir şey yok. Sadece akran sizden önce kapalı demektir.
user207421
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.