ฉันมีเซิร์ฟเวอร์สองเครื่องและฉันใช้ระบบฝังตัวของตัวเองกับ LwIP เพื่อเชื่อมต่อกับเซิร์ฟเวอร์เหล่านี้
ระบบฝังตัวของฉันที่มี LwIP เป็นไคลเอนต์ และฉันมีเซิร์ฟเวอร์ 1 และเซิร์ฟเวอร์ 2 ฉันเชื่อมต่อกับเซิร์ฟเวอร์ 1 และยุติการเชื่อมต่อก่อนที่จะเชื่อมต่อกับเซิร์ฟเวอร์ 2
รายละเอียดเพิ่มเติมเกี่ยวกับการไหล:
- ลูกค้าสร้างซ็อกเก็ตใหม่ด้วยเซิร์ฟเวอร์ 1
- ลูกค้าส่งแพ็คเก็ต DNS เพื่อรับที่อยู่ IP ของเซิร์ฟเวอร์ 1; ได้รับ ACK จาก AP
- ลูกค้าส่งแพ็คเก็ต TCP SYN;
- Server1 ส่ง TCP SYN-ACK และทำการรับส่งข้อมูล
- ไคลเอนต์สิ้นสุดการเชื่อมต่อกับเซิร์ฟเวอร์ 1 โดยส่งแพ็กเก็ต TCP RST และปิดเต้ารับ
- ลูกค้าสร้างซ็อกเก็ตใหม่ด้วย server2
- ลูกค้าส่งแพ็คเก็ต DNS เพื่อรับที่อยู่ IP ของเซิร์ฟเวอร์ 2; ได้รับ ACK จาก AP
- ลูกค้าส่งแพ็คเก็ต TCP SYN ไปยังเซิร์ฟเวอร์ 2
- Server2 ส่ง TCP SYN-ACK และทำการรับส่งข้อมูล
- ไคลเอ็นต์สิ้นสุดการเชื่อมต่อกับเซิร์ฟเวอร์ 2 โดยส่งแพ็กเก็ต TCP RST และปิดเต้ารับ
อย่างไรก็ตาม บางครั้ง server2 ไม่ตอบสนองต่อ SYN Packet ของไคลเอ็นต์ซึ่งอยู่ในขั้นตอนที่ 9 ซึ่งเกิดขึ้นเพียงบางครั้งเท่านั้น ฉันตรวจสอบฟอรัมหลายแห่งเช่น:
[1] เหตุใดเซิร์ฟเวอร์จึงไม่ส่งแพ็กเก็ต SYN/ACK เพื่อตอบสนองต่อแพ็กเก็ต SYN
[2] เซิร์ฟเวอร์ไม่ส่งแพ็กเก็ต SYN/ACK เพื่อตอบสนองต่อแพ็กเก็ต SYN
รหัสของฉันไม่เปิดใช้งานการปรับขนาดหน้าต่าง ฉันไม่สามารถตรวจสอบเซิร์ฟเวอร์ได้ว่าเป็นเซิร์ฟเวอร์ส่วนตัว ดังนั้นฉันจึงไม่แน่ใจว่าเซิร์ฟเวอร์นั้นหลุดหรือไม่ สภาพแวดล้อมของฉันค่อนข้างจอแจและพลุกพล่านไปด้วยเราเตอร์และอุปกรณ์สื่อสารมากมาย ปัญหานี้จะเกิดขึ้นเฉพาะในสภาพแวดล้อมที่มีเสียงดัง แต่ไม่ใช่ในสภาพแวดล้อมที่สะอาดกว่า
ฉันสามารถทำอะไรได้บ้างในฐานะลูกค้าเพื่อแก้ไขปัญหานี้