Three-Way Handshake คืออะไร กระบวนการเบื้องหลังทุกการเชื่อมต่อ TCP
Three-Way Handshake คือกระบวนการ 3 ขั้นตอนที่โปรโตคอล TCP ใช้สำหรับสร้างการเชื่อมต่อระหว่างอุปกรณ์สองเครื่องก่อนเริ่มรับส่งข้อมูล โดยทั้งฝั่ง Client และ Server จะยืนยันความพร้อมซึ่งกันและกันผ่านแพ็กเก็ต SYN, SYN-ACK และ ACK ตามลำดับ เป็นพื้นฐานสำคัญที่ทำให้การสื่อสารบนอินเทอร์เน็ตเป็นไปอย่างน่าเชื่อถือ
ทำไม Three-Way Handshake ถึงสำคัญ
ทุกครั้งที่เปิดเว็บไซต์ ส่งอีเมล หรือดาวน์โหลดไฟล์ กระบวนการ Three-Way Handshake จะเกิดขึ้นเบื้องหลังโดยที่ผู้ใช้ไม่รู้ตัว เป็นกลไกที่ทำให้ TCP มีความน่าเชื่อถือสูง เพราะทั้งสองฝ่ายต้องยืนยันว่าพร้อมรับส่งข้อมูลก่อนเริ่มต้นจริง
หากเปรียบเทียบกับการโทรศัพท์ Three-Way Handshake ก็คือช่วงที่ทั้งสองฝ่ายพูดว่าสวัสดีและยืนยันว่าได้ยินเสียงกันชัดเจนก่อนเริ่มสนทนา
3 ขั้นตอนของ Three-Way Handshake
ขั้นตอนที่ 1 SYN (Synchronize)
Client ส่งแพ็กเก็ต SYN ไปยัง Server เพื่อเริ่มต้นการเชื่อมต่อ โดยแพ็กเก็ตนี้จะมีหมายเลข Sequence Number เริ่มต้น (ISN - Initial Sequence Number) ที่ถูกสุ่มขึ้นมา เพื่อใช้ในการติดตามลำดับของข้อมูลที่จะส่งในภายหลัง
ขั้นตอนที่ 2 SYN-ACK (Synchronize-Acknowledge)
Server ได้รับแพ็กเก็ต SYN แล้วตอบกลับด้วยแพ็กเก็ต SYN-ACK ซึ่งทำหน้าที่สองอย่างพร้อมกัน คือ ยืนยันว่าได้รับ SYN จาก Client แล้ว (ACK) และส่ง SYN ของตัวเองพร้อม Sequence Number ของ Server กลับไปให้ Client
ขั้นตอนที่ 3 ACK (Acknowledge)
Client ได้รับ SYN-ACK แล้วส่ง ACK กลับไปยัง Server เพื่อยืนยันว่าได้รับ SYN ของ Server แล้ว เมื่อ Server ได้รับ ACK นี้ การเชื่อมต่อก็เสร็จสมบูรณ์ พร้อมรับส่งข้อมูลจริงได้
Sequence Number และ Acknowledgment Number
หัวใจของ Three-Way Handshake อยู่ที่ระบบหมายเลขลำดับ
- Sequence Number ใช้ระบุลำดับของข้อมูลที่ส่ง ช่วยให้ฝั่งรับสามารถจัดเรียงข้อมูลได้ถูกต้องแม้แพ็กเก็ตมาถึงผิดลำดับ
- Acknowledgment Number ใช้ยืนยันว่าได้รับข้อมูลจนถึงลำดับที่เท่าไหร่แล้ว
ระบบนี้ทำให้ TCP สามารถตรวจจับแพ็กเก็ตที่สูญหายและร้องขอให้ส่งใหม่ได้
TCP vs UDP ต่างกันอย่างไร
ต่างจาก TCP โปรโตคอล UDP ไม่มีกระบวนการ Three-Way Handshake เพราะ UDP ออกแบบมาเพื่อความเร็ว ไม่เน้นความน่าเชื่อถือ
- TCP เหมาะกับงานที่ต้องการความถูกต้องของข้อมูล เช่น เว็บไซต์ อีเมล การถ่ายโอนไฟล์
- UDP เหมาะกับงานที่ต้องการความเร็ว เช่น วิดีโอ Streaming เกมออนไลน์ VoIP
ปัญหาที่เกี่ยวข้องกับ Three-Way Handshake
SYN Flood Attack
SYN Flood เป็นการโจมตีแบบ DDoS ที่อาศัยกระบวนการ Three-Way Handshake โดยผู้โจมตีจะส่งแพ็กเก็ต SYN จำนวนมากไปยัง Server โดยไม่ส่ง ACK ตอบกลับ ทำให้ Server ต้องเก็บ Half-open Connection จนทรัพยากรหมด
วิธีป้องกัน SYN Flood
- ใช้ SYN Cookies
- ตั้งค่า Connection Timeout ให้สั้นลง
- ใช้ Firewall หรือ IPS ตรวจจับ
- ใช้ Rate Limiting
สำหรับเซิร์ฟเวอร์ที่ต้องรับมือกับ Traffic สูง การมีระบบ Security ที่แข็งแกร่งเป็นสิ่งจำเป็น
Connection Timeout
หากขั้นตอนใดขั้นตอนหนึ่งของ Handshake ไม่สำเร็จ จะเกิด Timeout ขึ้น ซึ่งอาจเกิดจากหลายสาเหตุ เช่น Firewall บล็อกแพ็กเก็ต เครือข่ายมีปัญหา หรือ Server ไม่ทำงาน
Four-Way Handshake สำหรับปิดการเชื่อมต่อ
เมื่อต้องการปิดการเชื่อมต่อ TCP จะใช้กระบวนการ Four-Way Handshake
- ฝ่ายที่ต้องการปิดส่ง FIN
- อีกฝ่ายตอบกลับ ACK
- อีกฝ่ายส่ง FIN ของตัวเอง
- ฝ่ายแรกตอบกลับ ACK
กระบวนการนี้ทำให้ทั้งสองฝ่ายมั่นใจว่าข้อมูลทั้งหมดถูกส่งครบถ้วนก่อนปิดการเชื่อมต่อ
การประยุกต์ใช้ในงานดูแลเซิร์ฟเวอร์
ผู้ดูแลระบบควรเข้าใจ Three-Way Handshake เพราะ
- ช่วยวิเคราะห์ปัญหาการเชื่อมต่อด้วย Wireshark หรือ tcpdump
- ช่วยตั้งค่า Firewall ได้ถูกต้อง
- ช่วยเข้าใจ Connection State ต่าง ๆ เช่น ESTABLISHED, TIME_WAIT, CLOSE_WAIT
- ช่วยปรับแต่ง TCP Parameters เพื่อเพิ่มประสิทธิภาพ
การมีเซิร์ฟเวอร์ VPS ที่มีประสิทธิภาพสูงจะช่วยให้กระบวนการ Handshake ทำงานได้รวดเร็ว ลด Latency ในการเชื่อมต่อ
คำถามที่พบบ่อย
ทำไมต้องมี 3 ขั้นตอน ทำ 2 ขั้นตอนไม่ได้หรือ
ต้องมี 3 ขั้นตอนเพราะทั้งสองฝ่ายต้อง Synchronize Sequence Number ของตัวเองและยืนยันของอีกฝ่าย หากใช้เพียง 2 ขั้นตอน จะมีฝ่ายหนึ่งที่ไม่ได้รับการยืนยัน ซึ่งอาจทำให้เกิดปัญหาในการรับส่งข้อมูล
Three-Way Handshake ใช้เวลานานเท่าไหร่
ในเครือข่ายปกติ กระบวนการทั้ง 3 ขั้นตอนใช้เวลาเพียงไม่กี่มิลลิวินาที ขึ้นอยู่กับ Latency ระหว่าง Client และ Server หากเซิร์ฟเวอร์อยู่ในประเทศเดียวกัน อาจใช้เวลาน้อยกว่า 10 มิลลิวินาที
ดู Three-Way Handshake ได้อย่างไร
สามารถใช้เครื่องมืออย่าง Wireshark จับแพ็กเก็ตเครือข่ายแล้วกรองด้วยตัวกรอง tcp.flags.syn==1 จะเห็นแพ็กเก็ต SYN, SYN-ACK และ ACK ตามลำดับ
HTTPS ก็ใช้ Three-Way Handshake ไหม
ใช้ HTTPS ทำงานบน TCP เช่นเดียวกับ HTTP ดังนั้นจะมี Three-Way Handshake เกิดขึ้นก่อนเสมอ แต่หลังจากนั้นจะมี TLS Handshake เพิ่มเติมเพื่อเข้ารหัสการเชื่อมต่อ ทำให้ HTTPS ใช้เวลาในการเชื่อมต่อเริ่มต้นนานกว่า HTTP เล็กน้อย
ต้องการเซิร์ฟเวอร์ที่มี Latency ต่ำและเสถียรสำหรับเว็บไซต์หรือแอปพลิเคชัน DriteStudio มีบริการ VPS และHosting ที่ตอบโจทย์ ติดต่อทีมงานเพื่อรับคำปรึกษาฟรี