TCP vs UDP: มวยถูกคู่แห่งการรับส่งข้อมูล เมื่อไหร่ควรเน้นชัวร์ เมื่อไหร่ควรเน้นเร็ว?
ในโลกของการส่งข้อมูลผ่านอินเทอร์เน็ต มีปรัชญาการทำงานใหญ่ๆ อยู่ 2 สายที่ขัดแย้งกันอย่างสิ้นเชิง สายหนึ่งยึดมั่นในความสมบูรณ์แบบ “ช้าหน่อยไม่เป็นไร แต่ของต้องถึงครบ 100% ไม่หล่นแม้แต่ชิ้นเดียว” ส่วนอีกสายหนึ่งถือคติ “ความเร็วคือชีวิต ตกหล่นบ้างช่างมัน ขอแค่ส่งให้ไวที่สุดแบบ Real-time”
นี่คือการประจันหน้ากันของ 2 พระเอกแห่ง Transport Layer (Layer 4) นั่นคือ TCP (Transmission Control Protocol) และ UDP (User Datagram Protocol) วันนี้เราจะมาเจาะลึกมวยคู่นี้กันอย่างถึงพริกถึงขิงครับ!
1. TCP: ชายหนุ่มผู้รอบคอบและสุภาพบุรุษนักจับมือ
TCP คือโพรโทคอลที่สร้างขึ้นบนพื้นฐานของ ความน่าเชื่อถือ (Reliability) ก่อนที่ TCP จะยอมส่งข้อมูลแม้แต่ไบต์เดียว มันจะต้องทำพิธี “จับมือทักทาย 3 จังหวะ” (Three-Way Handshake) ให้มั่นใจก่อนว่าปลายทางพร้อมคุยจริงๆ:
🤝 การจับมือ 3 จังหวะ (Three-Way Handshake) ของ TCP:
1. SYN (Synchronize): เครื่องเราส่งสัญญาณไปถามว่า “สวัสดีครับ คุณเซิร์ฟเวอร์ สะดวกคุยไหมครับ?”
2. SYN-ACK (Synchronize-Acknowledge): เซิร์ฟเวอร์ตอบกลับมาว่า “สวัสดีครับ ผมพร้อมคุย คุณยังอยู่ตรงนั้นไหม?”
3. ACK (Acknowledge): เครื่องเราตอบยืนยันว่า “รับทราบครับ ผมอยู่ตรงนี้ งั้นเราเริ่มส่งข้อมูลกันเลย!”
จุดเด่นที่สุดของ TCP: ทุกชิ้นส่วนข้อมูล (Segment) จะมี Sequence Number แปะไว้ ถ้าข้อมูลชิ้นที่ 3 หายไประหว่างทาง ปลายทางจะส่งข้อความแจ้งเตือนทันที และ TCP ต้นทางจะ ส่งชิ้นที่ 3 ให้ใหม่โดยอัตโนมัติ (Retransmission) ข้อมูลจึงไม่มีวันเน่าหรือขาดตอน
2. UDP: นักซิ่งสายลุย ส่งแล้วจบ ไม่สนอดีต
ในทางกลับกัน UDP เป็นเหมือนเด็กแว้นส่งหนังสือพิมพ์ครับ มันไม่มีการจับมือ ไม่มีการแนะนำตัว และไม่มีการตรวจรับใดๆ ทั้งสิ้น เมื่อมีข้อมูลมาถึง มันจะยัดใส่ซองแล้วขว้างออกไปทันทีด้วยความเร็วสูงสุด (Fire and Forget)!
ถ้าซองจดหมายตกท่อระบายน้ำไประหว่างทาง UDP จะไม่สนใจ และไม่ส่งใหม่ให้เด็ดขาด เพราะถือว่า “อดีตผ่านไปแล้ว เดินหน้าต่อไปอย่างเดียว”
ฟังดูเหมือน UDP จะแย่ใช่ไหมครับ? แต่ลองคิดดูว่า ถ้าคุณกำลัง วิดีโอคอลคุยกับเพื่อนผ่าน LINE หรือ Zoom แล้วสัญญาณเกิดกระตุกไป 0.1 วินาที สิ่งที่คุณต้องการคืออะไรครับ?
- แบบ TCP: หยุดภาพค้างไว้ 2 วินาที เพื่อรอให้ข้อมูลภาพของ 0.1 วินาทีที่แล้ววิ่งมาถึงให้ครบก่อน แล้วค่อยเล่นต่อ (ทำให้คุยไม่รู้เรื่อง เสียงดีเลย์)
- แบบ UDP: ปล่อยให้ภาพกระตุกแวบเดียว แล้วเดินหน้าต่อตามเสียงพูดปัจจุบันทันทีอย่างลื่นไหล!
ตารางเปรียบเทียบการใช้งาน: เมื่อไหร่ควรใช้อะไร?
| คุณสมบัติ | TCP | UDP |
|---|---|---|
| การเชื่อมต่อ | Connection-Oriented (ต้องทักทายก่อน) | Connectionless (ส่งได้ทันที) |
| ความเร็ว | ช้ากว่า (มี Overhead สูง) | เร็วกว่ามาก (Lightweight) |
| การการันตีข้อมูล | รับประกันถึงครบ 100% มีส่งซ้ำ | ไม่รับประกัน หายแล้วหายเลย |
| ตัวอย่างการใช้งาน | HTTP/HTTPS (เปิดเว็บ), ดาวน์โหลดไฟล์, อีเมล, ธุรกรรมการเงิน | Live Streaming, วิดีโอคอล, เกมออนไลน์ (FPS/MOBA), DNS Query, DHCP |
สรุปง่ายๆ: ถ้าข้อมูลผิดพลาดแล้วเกิดความเสียหายร้ายแรง ให้ใช้ TCP แต่ ถ้าความสดใหม่แบบเรียลไทม์สำคัญกว่าการตกหล่นเพียงเล็กน้อย ให้เลือกใช้ UDP ครับ ไม่มีใครดีกว่าใคร อยู่ที่ว่าคุณจะเลือกม้าให้ถูกกับสนามแข่งหรือไม่นั่นเอง!