Score:0

ไม่มีแพ็คเก็ต SYN-ACK จากเซิร์ฟเวอร์

ธง es

ฉันมีเซิร์ฟเวอร์สองเครื่องและฉันใช้ระบบฝังตัวของตัวเองกับ LwIP เพื่อเชื่อมต่อกับเซิร์ฟเวอร์เหล่านี้

ระบบฝังตัวของฉันที่มี LwIP เป็นไคลเอนต์ และฉันมีเซิร์ฟเวอร์ 1 และเซิร์ฟเวอร์ 2 ฉันเชื่อมต่อกับเซิร์ฟเวอร์ 1 และยุติการเชื่อมต่อก่อนที่จะเชื่อมต่อกับเซิร์ฟเวอร์ 2

รายละเอียดเพิ่มเติมเกี่ยวกับการไหล:

  1. ลูกค้าสร้างซ็อกเก็ตใหม่ด้วยเซิร์ฟเวอร์ 1
  2. ลูกค้าส่งแพ็คเก็ต DNS เพื่อรับที่อยู่ IP ของเซิร์ฟเวอร์ 1; ได้รับ ACK จาก AP
  3. ลูกค้าส่งแพ็คเก็ต TCP SYN;
  4. Server1 ส่ง TCP SYN-ACK และทำการรับส่งข้อมูล
  5. ไคลเอนต์สิ้นสุดการเชื่อมต่อกับเซิร์ฟเวอร์ 1 โดยส่งแพ็กเก็ต TCP RST และปิดเต้ารับ
  6. ลูกค้าสร้างซ็อกเก็ตใหม่ด้วย server2
  7. ลูกค้าส่งแพ็คเก็ต DNS เพื่อรับที่อยู่ IP ของเซิร์ฟเวอร์ 2; ได้รับ ACK จาก AP
  8. ลูกค้าส่งแพ็คเก็ต TCP SYN ไปยังเซิร์ฟเวอร์ 2
  9. Server2 ส่ง TCP SYN-ACK และทำการรับส่งข้อมูล
  10. ไคลเอ็นต์สิ้นสุดการเชื่อมต่อกับเซิร์ฟเวอร์ 2 โดยส่งแพ็กเก็ต TCP RST และปิดเต้ารับ

อย่างไรก็ตาม บางครั้ง server2 ไม่ตอบสนองต่อ SYN Packet ของไคลเอ็นต์ซึ่งอยู่ในขั้นตอนที่ 9 ซึ่งเกิดขึ้นเพียงบางครั้งเท่านั้น ฉันตรวจสอบฟอรัมหลายแห่งเช่น:

[1] เหตุใดเซิร์ฟเวอร์จึงไม่ส่งแพ็กเก็ต SYN/ACK เพื่อตอบสนองต่อแพ็กเก็ต SYN

[2] เซิร์ฟเวอร์ไม่ส่งแพ็กเก็ต SYN/ACK เพื่อตอบสนองต่อแพ็กเก็ต SYN

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

ฉันสามารถทำอะไรได้บ้างในฐานะลูกค้าเพื่อแก้ไขปัญหานี้

Score:2
ธง ng

Somes ideas on why sometimes your server doesn't answer with SYN-ACK :

  • Application on the server is stopped when the SYN packet is sent : This can be a crash and then manage to work again with a auto restart mecanism of the program. When the server app is stopped or crashed, the tcp listening socket is closed, so the OS doesn't answer.
  • You server has some troubles to find your client back. The can be some routing issue or asymetric routing (this break firewall).
  • If the Client and server are on the same network, this can be some issue with Layer 2 issue like Spanning Tree protocol or ARP.
  • Packet loss in the network : You SYN or SYN ACK packet is dropped.
  • The server is overwhelm and sometime cannot answer you SYN packet.

There can be a large number of thing that can make server doesn't answer SYN packet.

What I will do :

  • Doing some tcpdump on the server to verify the network : Does the server receive the SYN packet or there is an issue in the network beforehand ? Does the server generate and send a SYN ACK packet ? And work from there.
  • If you don't have access to the server, doing the same thing on the closest router/firewall.
  • Contact someone that has access on the server.
Sue Koh avatar
es flag
ขอบคุณสำหรับคำติชมที่ยอดเยี่ยม ฉันจะพยายามเข้าถึงเซิร์ฟเวอร์ ถ้าเป็นไปได้ ฉันมีคำถามอื่น เนื่องจากฉันใช้ lwip และเห็นได้ชัดว่าฉันล้มเหลวในการรับ syn-ack จากเซิร์ฟเวอร์ lwip_connect ของฉันจะหยุดทำงานและไม่ส่งคืนค่า (ส่วนใหญ่อาจบล็อก) นอกจากนี้ยังไม่มีการลองอีกครั้งในแพ็กเก็ต SYN มีความคิดอย่างไรว่าทำไมจึงเป็นเช่นนั้น พอร์ตที่ฉันใช้คือ 8883 สำหรับ mqtt ที่ปลอดภัย
ng flag
น่าเสียดายที่ฉันไม่มีความรู้เกี่ยวกับ "lwip" เลย สิ่งที่ฉันสามารถพูดได้ก็คือ เมื่อพยายามส่งแพ็กเก็ต SYN และคุณไม่มีคำตอบใดๆ ไคลเอ็นต์ควรจะส่งแพ็กเก็ต SYN นั้นซ้ำหลายๆ ครั้งก่อนที่จะยอมแพ้ สิ่งนี้ดูเหมือนปัญหากับ lwip มากกว่า

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา