LAST_ACK หมายถึงอะไรเช่นเดียวกับมูลค่าของรัฐใน netstat


15

หากเซิร์ฟเวอร์ Windows มีหลายพันพอร์ตที่เปิดอยู่ในLAST_ACKสถานะ (ดังที่แสดงโดย netstat) สิ่งนี้หมายความว่าอย่างไร เป็นเพราะปลายทางหนึ่งกำลังรอให้อีกฝ่ายตอบ

คำตอบ:


10

สถานะ last_ack (ถ้าฉันจำได้ว่าสแต็ค TCP ของฉันถูกต้อง) เป็นสถานะเมื่อคุณได้รับข้อความ FIN ของคุณเพื่อปิดการเชื่อมต่อจากเพื่อนบ้านของคุณ แต่คุณยังต้องล้างข้อมูลและปิดการเชื่อมต่อของคุณ คุณส่ง FIN สุดท้ายด้วยตัวคุณเองและรอ ACK

โดยปกติจะแขวนใน last_ack หมายความว่าแอปพลิเคชันของคุณเปิดซ็อกเก็ตไว้แม้ว่าปลายอีกด้านหนึ่งจะส่งข้อมูลเสร็จ สิ่งนี้สามารถเกิดขึ้นได้จากหลายสาเหตุ อาจมีไฟร์วอลล์หรือตัวโหลดบาลานซ์อื่นซึ่งสูญเสีย ACK ล่าสุดจากไคลเอ็นต์และปล่อยให้คุณติดอยู่ในสถานะ last_ack หากการเชื่อมต่อไม่หมดเวลาหลังจากสองสามนาที (10 หรือมากกว่านั้น) คุณอาจมีข้อบกพร่อง

ดูแผนภาพสถานะที่http://tangentsoft.net/wskfaq/articles/debugging-tcp.html


4
ไม่ถูกต้อง. คุณกำลังอธิบาย CLOSE_WAIT
user207421

4

LAST_ACK เป็นสถานะสุดท้ายก่อนปิดการเชื่อมต่อ TCP


1
ขอบคุณสิ่งที่อาจทำให้พอร์ตหยุดทำงานในสถานะนี้
Nick Bolton

นี่เป็นเว็บเซิร์ฟเวอร์ IIS (หรือบริการอื่น ๆ ) ที่คุณเห็นนี่หรือแอปพลิเคชันของคุณเองหรือ
Imo

แอปพลิเคชันใช้ไคลเอนต์ "Cook Computing" XML-RPC (จาก Asp.Net, เรียกใช้ผ่าน IIS) และกำลังพูดคุยกับเซิร์ฟเวอร์ Java XML-RPC
Nick Bolton

1
มันเป็นขั้นตอนสุดท้ายของการสนทนา TCP กับลูกค้า ซอฟต์แวร์ของคุณดูเหมือนจะปิด () เซสชัน TCP และส่ง LAST_ACK ไปยังไคลเอนต์ ลูกค้าควรส่งการตอบกลับที่ได้รับ LAST_ACK กลับมา ฉันเห็นด้วยกับ pehrs ในไคลเอนต์ (อาจไฟร์วอลล์) อาจไม่ได้รับการยอมรับหรือแพ็คเก็ตอาจหายไป ... นี่เป็นสองกรณีที่เป็นไปได้มากที่สุด
Imo

1
ไม่ใช่ 'ส่ง LAST_ACK ไปยังลูกค้า' ส่ง FIN และปัจจุบันกำลังรอ ACK หลังจากได้รับ FIN แล้วและส่ง ACK เป็นสถานะสุดท้ายหลังจากปิดการเชื่อมต่อ
user207421

2

LAST_ACK หมายความว่าปลายของคุณได้รับ FIN จากเพียร์ส่ง ACK ส่ง FIN และกำลังรอ ACK สุดท้ายจากเพียร์ ณ จุดนี้ไม่มีอะไรเพิ่มเติมแอปพลิเคชันสามารถทำได้: ซ็อกเก็ตถูกปิด แอปพลิเคชันอาจมีการออก จากที่นี่จะขึ้นอยู่กับ TCP เพื่อส่ง FIN อีกครั้งจนกว่าจะได้ ACK สุดท้ายหรือหมดเวลา ไม่มากที่คุณสามารถทำได้ในฐานะผู้ดูแลยกเว้นตรวจสอบเครือข่ายเขา


0

ฉันเชื่อว่า @lmo นั้นถูกต้องในการบอกว่ามันเป็น "สถานะสุดท้ายก่อนที่จะปิดการเชื่อมต่อ TCP" แต่นอกเหนือจากนี้ตามการอ่านหน้าวิกิพีเดียของฉันมันก็คุ้มค่าที่จะสังเกตว่านี่ไม่ใช่ส่วนหนึ่งของ " Active Close "กลไกที่ (ในความเข้าใจของฉัน) เป็นจุดสิ้นสุดของการเชื่อมต่อที่ดีที่สุด แต่เป็นส่วนหนึ่งของลำดับ" Passive Close "ซึ่งน่าจะเกี่ยวข้องกับ Bad Stuff Happening

(FWIW ฉันเป็นภาษาไม่ใช่เครือข่ายฉันยินดีที่จะชี้แจงจากบุคคลในเครือข่าย)


เขาไม่ถูกต้องในการพูดอย่างนั้นและไม่มีอะไรเลวร้ายเกี่ยวกับการเข้าใกล้แบบเฉย มันหมายถึงเพียร์ปิดก่อนที่คุณจะทำ
user207421
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.