2
เหตุใดไฟร์วอลล์ของเรา (Ubuntu 8.04) จึงปฏิเสธแพ็กเก็ตสุดท้าย (FIN, ACK, PSH) ด้วย RST
พื้นหลังเป็นเวลานานที่เราประสบปัญหากับไฟร์วอลล์ของเราที่บางครั้งทำให้การร้องขอ HTTP ถูกระงับการโหลดบางส่วนจนกระทั่ง TCP หมดเวลา หลังจากติดตามปริมาณการใช้งานบนไฟร์วอลล์ฉันสังเกตเห็นว่ามันเกิดขึ้นเฉพาะในช่วงเวลาที่กำหนดเช่นเมื่อเว็บเซิร์ฟเวอร์ส่งการตอบสนองทั้งหมดก่อนที่ลูกค้าจะส่ง ACK ตัวที่สองบนเพย์โหลด [SYN, SYN / ACK, ACK] มีการแลกเปลี่ยนคำขอได้รับการส่งและ ACK'ed และได้รับแพ็คเก็ต RESPONSE แรกและ ACK'ed จากนั้นเว็บเซิร์ฟเวอร์จะส่งเนื้อหาการตอบสนองที่เหลือในหนึ่งช็อต (8 แพ็คเก็ต รวมถึง FIN สุดท้าย, PSH) และก่อนที่ลูกค้าจะได้รับ ACK ใด ๆ เหล่านั้นไฟร์วอลล์จะทำการตอบโต้ด้วย RST ไปยังเว็บเซิร์ฟเวอร์และทำให้ไคลเอนต์ไม่มีที่สิ้นสุด นี่คือการติดตามทั้งหมดของ wireshark ที่มีแพ็กเก็ตจากทั้งสองด้านของไฟร์วอลล์ 192.168.126.161 เป็นที่อยู่ IP ของ NAT'et ส่วนตัวของลูกค้า 172.16.1.2 เป็นเว็บเซิร์ฟเวอร์ IP (ไม่แสดง IP สาธารณะจริง) และ 10.1.1.1 …