มองใน Wireshark ฉันมักจะเห็น TCP Streams จบด้วย RST, ACK packet แทน RST packet ใครรู้ว่าทำไมนี้คืออะไร
ตัวอย่างของสิ่งที่ฉันเห็น:
SYN SYN, ACK ... ข้อมูล ... RST, ACK
Wireshark ไม่ได้รับแพ็กเก็ต RST ก่อนแพ็กเก็ต RST, ACK
มองใน Wireshark ฉันมักจะเห็น TCP Streams จบด้วย RST, ACK packet แทน RST packet ใครรู้ว่าทำไมนี้คืออะไร
ตัวอย่างของสิ่งที่ฉันเห็น:
SYN SYN, ACK ... ข้อมูล ... RST, ACK
Wireshark ไม่ได้รับแพ็กเก็ต RST ก่อนแพ็กเก็ต RST, ACK
คำตอบ:
RST / ACK ไม่ใช่การตอบรับของ RST เช่นเดียวกับ SYN / ACK ไม่ใช่การรับรู้ของ SYN การสร้าง TCP จริง ๆ แล้วเป็นกระบวนการสี่ทาง: การเริ่มต้นโฮสต์ส่ง SYN ไปยังโฮสต์ที่รับซึ่งส่ง ACK สำหรับ SYN นั้น การรับโฮสต์ส่ง SYN ไปยังโฮสต์ที่เริ่มต้นซึ่งส่ง ACK กลับ นี่เป็นการสื่อสารแบบไร้รัฐ
SYN -->
<-- ACK
<-- SYN
ACK -->
เพื่อให้มีประสิทธิภาพมากขึ้นโฮสต์ที่รับสามารถ ACK SYN และส่ง SYN ของตัวเองในแพ็กเก็ตเดียวกันสร้างกระบวนการสามทางที่เราเคยเห็น
SYN -->
<-- SYN/ACK
ACK -->
ในกรณีของ RST / ACK อุปกรณ์จะรับทราบว่าข้อมูลใดถูกส่งในแพ็กเก็ตก่อนหน้าตามลำดับด้วย ACK จากนั้นแจ้งผู้ส่งว่าการเชื่อมต่อปิดด้วย RST อุปกรณ์กำลังรวมสองแพ็กเก็ตเป็นหนึ่งเดียวเช่น SYN / ACK ปกติแล้ว RST / ACK จะไม่ตอบสนองตามปกติในการปิดเซสชัน TCP แต่ก็ไม่จำเป็นต้องบ่งบอกถึงปัญหา
RST ACK
ตอบสนองมากมายไปยังที่อยู่ปลอมที่มา
เมื่อสร้างการเชื่อมต่อแล้วแพ็คเก็ตทั้งหมดจะต้องมีชุด ACK และจับคู่หมายเลขลำดับของแพ็กเก็ตที่ได้รับเพื่อการขนส่ง / ความปลอดภัยที่เชื่อถือได้ RST ที่ไม่มี ACK จะไม่ได้รับการยอมรับ เมื่อด้านใดด้านหนึ่งส่ง RST ซ็อกเก็ตจะถูกปิดทันทีและด้านรับก็ปิดซ็อกเก็ตทันทีหลังจากได้รับ RST ที่ถูกต้อง ไม่จำเป็นต้องเป็นและไม่สามารถยอมรับได้
หลังจากจับมือ TCP
A ---> B Syn = x, Ack = y, len = z, ตั้งค่าสถานะ ACK
B ---> A Syn = y, Ack = x + z, len = o, ตั้งค่าสถานะ ACK
A ---> B Syn = x + z, Ack = y + o, len = p, ตั้งค่าสถานะ ACK
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, ธง ACK
B ปิดซ็อกเก็ตหลังจากที่ส่งแพ็คเก็ตล่าสุดและ A ปิดซ็อกเก็ตหลังจากที่ได้รับมัน
(ไม่พิจารณาหน้าต่าง TCP ที่นี่หรืออาจมีแพ็คเก็ตมากขึ้นจากปลายด้านหนึ่งก่อนการเรียกใช้)
ACK ตั้งค่าสถานะหมายเลขการตอบรับและขั้นตอนการตอบรับมีความเกี่ยวข้อง แต่ไม่เหมือนกัน
RFC793
หมายเลขตอบรับ: 32 บิต
If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive. Once a connection is established this is always sent.
รีเซ็ตการประมวลผล
ในทุกรัฐยกเว้น SYN-SENT เซ็กเมนต์รีเซ็ต (RST) ทั้งหมดจะถูกตรวจสอบโดยการตรวจสอบฟิลด์ SEQ การรีเซ็ตจะใช้งานได้หากหมายเลขลำดับอยู่ในหน้าต่าง ในสถานะ SYN-SENT (RST ที่ได้รับจากการตอบสนองต่อ SYN เริ่มต้น) RST นั้นเป็นที่ยอมรับได้ถ้าฟิลด์ ACK ยอมรับ SYN
ผู้รับของ RST แรกตรวจสอบแล้วเปลี่ยนสถานะ หากผู้รับอยู่ในสถานะรับฟังมันจะไม่สนใจมัน หากผู้รับอยู่ในสถานะ SYN-RECEIVED และเคยอยู่ในสถานะรับฟังแล้วผู้รับจะกลับสู่สถานะรับฟังไม่เช่นนั้นผู้รับจะยกเลิกการเชื่อมต่อและไปที่สถานะปิด หากผู้รับอยู่ในสถานะอื่นใดก็จะยกเลิกการเชื่อมต่อและแนะนำผู้ใช้และไปที่สถานะปิด