TCP Three-Way Handshake: เมื่อเหล่านักสืบ Packet อยากจะทักทายกัน
เวลาที่เราเปิดหน้าจอสั่งเช็คระบบ SCOM หรือพยายามเชื่อมต่อสคริปต์ PowerShell ไปยัง Exchange Server แล้วระบบมันขึ้น Error ว่า Connection Timeout หรือ Connection Refused เคยสงสัยไหมครับว่าลึกลงไปในสาย LAN หรือคลื่น Wi-Fi มันเกิดอะไรขึ้น?
ในฐานะชาว IT โครงสร้างพื้นฐาน อาวุธลับที่เราต้องเข้าใจคือกระบวนการที่เรียกว่า TCP Three-Way Handshake หรือการ "จับมือสามจังหวะ" ซึ่งมันมีขั้นตอนโรแมนติก (ผสมความระแวง) ดังนี้ครับ:
จังหวะที่ 1: SYN (จะจีบแล้วนะ!)
ฝั่งวิชาการ: เครื่องต้นทาง (Client) จะส่ง Packet ที่ตั้งค่า Flag เป็น SYN (Synchronize) ไปหา Server เพื่อบอกว่า "ฉันอยากคุยด้วยนะ และนี่คือเลข Sequence Number เริ่มต้นของฉัน"
ฝั่งความฮา: มันเหมือนกับการที่เราเดินเข้าไปหาคนที่แอบชอบแล้วพูดว่า "สวัสดีครับผมชื่อณเดช ขอเบอร์ติดต่อหน่อยได้ไหมครับ?" วินาทีนี้ Client จะนั่งรอตาแป๋วอยู่ในสถานะ
SYN-SENTครับ
จังหวะที่ 2: SYN-ACK (รับแซ่บ และฉันก็อยากคุยด้วย!)
ฝั่งวิชาการ: ถ้าพอร์ตของ Server เปิดอยู่ (เช่น พอร์ต 443 สำหรับ HTTPS) Server จะตอบกลับมาด้วย Packet ที่มี Flag เป็น SYN-ACK (Synchronize-Acknowledgment) เพื่อบอกว่า "รับทราบเลขของคุณแล้ว และนี่คือเลข Sequence ของฝั่งฉันบ้าง"
ฝั่งความฮา: ฝ่ายตรงข้ามหันมาส่งยิ้มหวานแล้วตอบว่า "อ๋อ ได้ค่ะ! นี่เบอร์ฉันนะคะ แล้วคุณชื่ออะไรนะขออีกที?" วินาทีนี้ Server จะเข้าสู่สถานะ
SYN-RECEIVEDทันที
จังหวะที่ 3: ACK (โอเค ดีล! คุยกันเลย)
ฝั่งวิชาการ: Client ได้รับคำตอบปุ๊บ ก็จะส่ง Packet สุดท้ายที่มี Flag เป็น ACK กลับไปให้ Server เพื่อยืนยันว่า "ฉันได้รับเลขของเธอแล้วนะ มาเริ่มส่งข้อมูลกันเลย!"
ฝั่งความฮา: คุณรีบพยักหน้าแล้วบอกว่า "โอเคครับ เมมเบอร์เรียบร้อย เดี๋ยวทักไลน์ไปนะครับ!" จากนั้นทั้งคู่ก็ขยับสถานะเป็น
ESTABLISHEDและเริ่มคุยกันยาวๆ ได้เลยครับ!
[ Client ] [ Server ]
| |
| ------- SYN (หนูอยากคุยด้วย) ---------> | (Port Open?)
| |
| <------ SYN-ACK (ได้เลย นี่เลขฉัน) ----- |
| |
| ------- ACK (รับทราบ! ลุยโลด) --------> |
| |
[ ESTABLISHED ] [ ESTABLISHED ]
💔 แล้วถ้า 'รักคุด' (Connection Failed) เกิดจากอะไร?
ในชีวิตจริง (และชีวิตระบบ) การจับมือมันไม่ได้สวยงามเสมอไปครับ:
เจอสถานะ RST (Reset): เดินเข้าไปทัก
SYNแต่ Server สวนกลับมาด้วยRSTทันที! แปลภาษาคนคือ "ไม่คุย! ไปไกลๆ!" ซึ่งมักเกิดจากพอร์ตปิดอยู่ หรือโดน Microsoft Defender บล็อกไว้นั่นเองเจอความเงียบ (Timeout): ส่ง
SYNไปแล้วเงียบหาย... เหมือนไลน์ไปแล้วขึ้นว่าอ่านแต่ไม่ตอบ ส่วนใหญ่เกิดจากสายหลุด สัญญาณกาก หรือ Firewall คัดกรองทิ้ง (Drop) ไปเฉยๆ ครับ
💡 IT Tips: เช็คลิสต์
ลองตรวจสุขภาพเครื่องมือคู่ใจสัก 2 ข้อครับ:
Wireshark Quick Test: ลองเปิดโปรแกรม Wireshark บนเครื่อง แล้วลอง Filter คำสั่ง
tcp.flags.syn == 1 and tcp.flags.ack == 1ดูครับ คุณจะเห็นเหล่าน้อง Packet กำลังทำท่าจับมือกันเต็มหน้าจอไปหมด ดูแล้วเพลินตาดีแท้!Clear TCP Stack: ถ้าเครื่องใช้งานมาทั้งสัปดาห์แล้วรู้สึกเน็ตหน่วงๆ พิกล ลองสั่ง Flush DNS และ Reset IP Stack ด้วยคำสั่งอมตะใน CMD (Run as Admin):
DOSnetsh int ip reset ipconfig /flushdns
💡 สรุปส่งท้าย
การเข้าใจพื้นฐานระดับ Network Layer อย่าง TCP Handshake จะช่วยให้เวลาที่คุณไปทำหน้าที่ Consultant สามารถวิเคราะห์ปัญหา "ระบบไม่คุยกัน" ได้อย่างแม่นยำ ไม่ต้องนั่งเดาว่าแอปพังหรือเน็ตล่มครับ
#ITTipsAndTricks #TCPHandshake #Network101 #SystemEngineer #Infrastructure #CyberSecurity #ITAdminLife #Wireshark #NetworkTroubleshooting #BloggerIT
Comments
Post a Comment