Transmission Control Protocol (TCP) และ User Datagram Protocol (UDP) เป็นโปรโตคอลชั้นขนส่ง (Transport Layer Protocols) 2 ตัวที่ใช้กันอย่างกว้างขวางกับ Internet Protocol โปรโตคอลคือชุดขั้นตอนและกฎที่คอมพิวเตอร์ 2 เครื่องปฏิบัติเพื่อเข้าใจกันและแลกเปลี่ยนข้อมูล แม้ TCP จะเป็นโปรโตคอลที่ใช้บ่อยกว่า UDP ก็ตาม UDP มีประโยชน์มากกว่าในบางสถานการณ์
สรุปภาพรวม (Overall Findings)
| คุณสมบัติ | TCP | UDP |
|---|---|---|
| การรับประกันข้อมูล | รับประกันว่าข้อมูลถึงปลายทางเหมือนที่ส่ง | ไม่รับประกันว่าข้อมูลจะถึง |
| Error Checking | ตรวจสอบข้อผิดพลาดของ Data Stream | ไม่มี Error Checking |
| Header Size | 20 ไบต์ (Optional เพิ่มได้ 40 ไบต์) | 8 ไบต์ (เฉพาะข้อมูลบังคับ) |
| ความเร็ว | ช้ากว่า UDP | เร็วกว่า TCP |
| เหมาะสำหรับ | แอปที่ต้องการความน่าเชื่อถือ | แอปที่ต้องการความเร็ว |
ทั้งสองโปรโตคอลส่งข้อมูลผ่านอินเทอร์เน็ตในรูปแบบ Packets ของทั้งสอง TCP เป็น Connection-Oriented หลัง Connection ถูกสร้าง ข้อมูลไหลสองทาง (Bidirectional) UDP เป็นโปรโตคอลที่เรียบง่ายกว่า เป็น Connectionless
TCP ทนทาน (Robust) กว่า UDP ให้ฟังก์ชัน Error-Correction และความน่าเชื่อถือสูง UDP เร็วกว่า TCP 主要เพราะไม่มี Error-Correction นอกจากนี้ TCP จัดการ Flow Control ส่วน UDP ไม่มีตัวเลือก Flow Control
เหมาะสำหรับความน่าเชื่อถือ: TCP
- รับประกันการส่งมอบข้อมูล (Guaranteed Delivery)
- ติดตาม Data Packets (Tracking)
- ตรวจสอบ Packet Error (Error Checking)
- Flow Control
- Header 20 ไบต์ มี Option เพิ่มได้
TCP รับประกันการส่งมอบข้อมูลถึงผู้รับ หากข้อมูลหาย TCP จะดำเนินการกู้คืนและส่งใหม่ โดย TCP ติดตาม Packets และตรวจสอบ Error
UDP ไม่รับประกันการส่งมอบ UDP Packets อาจหายระหว่างทางหรือเสียหาย (Corrupt)
ทั้ง TCP และ UDP ใช้ Headers สำหรับห่อหุ้มข้อมูลเพื่อส่งผ่านการเชื่อมต่อเครือข่าย เนื่องจาก TCP ทนทานกว่า Header จึงใหญ่กว่า 20 ไบต์ พร้อม Option เพิ่ม ขณะที่ UDP Header จำกัด 8 ไบต์
เหมาะสำหรับความเร็ว: UDP
- TCP: ช้า เพราะทำฟังก์ชันเยอะ
- UDP: เร็ว เพราะให้ฟังก์ชันจำกัด
แม้ TCP จะน่าเชื่อถือ แต่ช้ากว่า UDP หลักเพราะทำฟังก์ชันมากกว่า ผู้ใช้ปลายทางที่ต้องการความเร็วสูงสุด เช่น Gamers และคนทำงานกับ Video ได้ประโยชน์จาก UDP
เหมาะสำหรับการใช้งาน: ขึ้นอยู่กับ Use Case
- TCP เหมาะสำหรับ: Web Browsing, File Transfer (FTP), Email, Secure Shell (SSH)
- UDP เหมาะสำหรับ: VPNs, Streaming Video, VoIP, Live Broadcasts, Online Gaming
เนื่องจาก TCP น่าเชื่อถือ จึงเหมาะสำหรับสถานการณ์ที่ต้องการ Reliability สูง แต่ไม่บังคับ Speed เช่น Web, Email, FTP
ความเร็วของ UDP ทำให้เหมาะสำหรับ Online Gaming, Live Broadcasts, VPN Tunneling, และ Streaming Videos
TCP Header Format
TCP Header แต่ละอันมี 10 Required Fields รวม 20 ไบต์ (160 bits) สามารถเพิ่ม Optional Data Field ได้สูงสุด 40 ไบต์
หมายเหตุ: 8 bits = 1 byte
TCP Headers ปรากฏตามลำดับ ดังนี้ เริ่มจาก Endpoints ของการสื่อสาร:
- Source TCP Port Number (2 bytes / 16 bits): แทนอุปกรณ์ส่ง
- Destination TCP Port Number (2 bytes / 16 bits): Communication Endpoint สำหรับอุปกรณ์รับ
- Sequence Number (4 bytes / 32 bits): Sender ใช้ Sequence Number เพื่อจัดลำดับกลุ่มข้อความ
- Acknowledgment Number (4 bytes / 32 bits): Sender และ Receiver ใช้สื่อสาร Sequence Number ของข้อความที่รับไปแล้ว หรือคาดว่าจะส่ง
- TCP Data Offset (4 bits): เก็บขนาด TCP Header ทั้งหมดเป็นจำนวนเท่าของ 4 ไบต์ Header ไม่ใช้ Optional Field มี Offset 5 (แทน 20 ไบต์) ใช้ Optional สูงสุด Offset 15 (แทน 60 ไบต์)
- Reserved Data (3 bits): ค่าคงที่เป็นศูนย์ จัด Alignment ให้ Header Size เป็น Multiple ของ 4 ไบต์ สำคัญสำหรับประสิทธิภาพการประมวลผลข้อมูล
- Control Flags (สูงสุด 9 bits): TCP ใช้ 6 Standard Flags และ 3 Extended Flags แต่ละ Bit แทน On/Off จัดการ Data Flow ในสถานการณ์เฉพาะ
- Window Size (2 bytes / 16 bits): Sender ใช้ Window Size ควบคุมปริมาณข้อมูลที่ส่งไปก่อนรอ Acknowledgment Window Size เล็กเกินไป = ช้าเกินไป ใหญ่เกินไป = Link อาจ Saturated หรือ Receiver ประมวลผลไม่ทัน Perform ลด Windowing Algorithms ในโปรโตคอลคำนวณค่า Dynamic และใช้ Field นี้ปรับพร้อมกัน
- TCP Checksum (2 bytes / 16 bits): ค่า Checksum ใน TCP Header สร้างโดย Sender เป็นเทคนิคคณิตศาสตร์ ช่วย Receiver ตรวจจับข้อความเสียหาย/ถูกปลอม
- Urgent Pointer (2 bytes / 16 bits): มักตั้งเป็นศูนย์และข้าม แต่ร่วมกับ Control Flag บางตัว อาจใช้เป็น Data Offset เพื่อマーク Subset ของข้อความว่าต้องการ Priority Processing
- TCP Optional Data (0 ถึง 40 bytes): ใช้รองรับ Special Acknowledgment และ Window Scaling Algorithms
UDP Header Format
เนื่องจาก UDP จำกัดความสามารถกว่า TCP Header จึงเล็กกว่า UDP Header มี 8 ไบต์ แบ่งเป็น 4 Required Fields:
- Source UDP Port Number (2 bytes): แทนอุปกรณ์ส่ง
- Destination UDP Port Number (2 bytes): Communication Endpoint สำหรับอุปกรณ์รับ
- Length of Data (2 bytes): Length Field ใน UDP แทนขนาดรวมของ Datagram แต่ละตัว รวม Header และ Data ค่าอยู่ระหว่าง Minimum 8 ไบต์ (Header Size) ถึง 65,000+ ไบต์
- UDP Checksum (2 bytes): เหมือน TCP UDP Checksum ให้ Receiver Cross-check ข้อมูลเข้า สำหรับ Bit ที่เสียหาย
สรุปสุทธิ (Final Verdict)
มีเหตุผลที่ TCP เป็นโปรโตคอลที่ใช้บ่อยที่สุด มัน ทนทาน น่าเชื่อถือ และรับประกันข้อมูลถูกต้องเหมือนที่ส่ง Error-Checked Stream อาจช้าลงเล็กน้อย แต่ในกรณีส่วนใหญ่ Delay ไม่ใช่ Deal-breaker
เวลาที่ UDP สว่างสว่างกว่า TCP คือเมื่อ ความเร็วสำคัญอย่างคริติคัล เช่น การ Stream Video, VPNs, หรือ Online Gaming