หากเซิร์ฟเวอร์ 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" แต่นอกเหนือจากนี้ตามการอ่านหน้าวิกิพีเดียของฉันมันก็คุ้มค่าที่จะสังเกตว่านี่ไม่ใช่ส่วนหนึ่งของ " Active Close "กลไกที่ (ในความเข้าใจของฉัน) เป็นจุดสิ้นสุดของการเชื่อมต่อที่ดีที่สุด แต่เป็นส่วนหนึ่งของลำดับ" Passive Close "ซึ่งน่าจะเกี่ยวข้องกับ Bad Stuff Happening
(FWIW ฉันเป็นภาษาไม่ใช่เครือข่ายฉันยินดีที่จะชี้แจงจากบุคคลในเครือข่าย)