Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ระบบเครือข่าย

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ

หากคุณเริ่มเข้าสู่ Computer Networking หรือเคยขุด Settings Network ของบาง Applications น่าจะเห็น Terms นี้: TCP และ UDP

TCP ย่อมาจาก Transmission Control Protocol และ UDP ย่อมาจาก User Datagram Protocol ทั้งคู่เป็นส่วนของ Internet Protocol Suite TCP และ UDP คือวิธีต่างๆ ในการส่งข้อมูลผ่านอินเทอร์เน็ต

แต่แม้รู้ย่อหน้าแล้ว ยากที่จะรู้ว่าควรใช้ Protocol ไหน หรือทำไมต้องเลือกตัวหนึ่งมากกว่าอีกตัว

ในบทความนี้ เราจะครอบคลุม Computer Networking Basics ความแตกต่างระหว่าง TCP และ UDP เมื่อไหร่ใช้แต่ละตัว และอื่นๆ

Computer Networking Basics

ก่อนดำน้ำเข้า TCP/UDP ทำงานยังไง ควรรู้ Basics ว่าอินเทอร์เน็ตทำงานยังไง

โดยทั่วไป อินเทอร์เน็ตคือ Network ของ Devices ที่เชื่อมต่อกัน แต่ละ Device ไม่ว่าจะ Smartphone หรือ Server สื่อสารผ่าน Internet Protocol Suite

Internet Protocol Suite คือ Collection ของ Protocols ต่างๆ หรือ Methods ให้ Devices สื่อสาร TCP และ UDP เป็น Major Protocols ใน Suite:

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ
Source

Device แต่ละตัวที่เชื่อมอินเทอร์เน็ตมี IP Address Unique ทุกครั้งที่ 2 Devices สื่อสารผ่านอินเทอร์เน็ต น่าจะใช้ TCP หรือ UDP

เปรียบเทียบสั้นๆ:

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ
Source

สำห Overview ระดับสูงกว่า ดูวิดีโอ 5 นาทีนี้:

TCP คืออะไร?

TCP (Transmission Control Protocol) คือ Networking Protocol ที่พบบ่อยที่สุดออนไลน์ TCP น่าเชื่อถือมาก ใช้ทุกอย่าง: Surf Web (HTTP), ส่ง Email (SMTP), Transfer Files (FTP)

TCP ใช้เมื่อจำเป็นว่า Data ทั้งหมดที่ Device หนึ่งส่ง ต้องถูก Device อีกตัวรับครบถ้วน สมบูรณ์

ตัวอย่าง: เข้า Website TCP ใช้ประกันว่าทุกอย่าง (Text, Images, Code Render Page) ถึงครบ ถ้าไม่มี TCP Images/Text อาจหาย หรือมาผิดลำดับ แบบหน้าเพจ

TCP เป็น Connection-oriented Protocol หมายความว่า Establish Connection ระหว่าง 2 Devices ก่อน Transfer และ Maintain Connection ตลอด Transfer

Establish Connection ใช้ Method เรียกว่า Three-way Handshake:

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ
Source

ตัวอย่าง: อ่านบทความนี้บน Device ของคุณ Device ส่ง Message ไป Server freeCodeCamp News เรียกว่า SYN (Synchronize Sequence Number)

Server ตอบกลับ Acknowledgement เรียกว่า SYN-ACK

Device รับ SYN-ACK ส่ง ACK กลับไป Establish Connection

ตอน TCP Connection Established แล้ว Protocol รับประกันว่า Data ทั้งหมดถูกส่ง

กลับตัวอย่าง Device และ freeCodeCamp News Handshake เสร็จ Server ส่ง Data ทั้งหมดที่ Browser ต้องการ Render บทความนี้

Devices ทุกตัว แบ่ง Data เป็น Packets เล็กๆ ก่อนส่งอินเทอร์เน็ต Packets ต้อง Reassemble อีกฝั่ง

Server ส่ง HTML, CSS, Images, Code บทความนี้ แบ่งเป็น Small Packets ส่งไป Device Device Reassemble Packets กลายเป็น Files/Images ที่ต้องการ Render

TCP รับรอง Packets ทั้งหมดถึง Device ถ้า Packets หาย TCP ทำให้ Device บอก Server ว่าขาด Data และ Server Resend Packets นั้น

Device ได้ Data ครบ Render Article แล้ว TCP Terminate Connection อัตโนมัติ ด้วย Method คล้าย Three-way Handshake แต่ใช้ FIN และ ACK Packets

UDP คืออะไร?

UDP (User Datagram Protocol) เป็น Major Protocol อีกตัวใน Internet Protocol Suite UDP น่าเชื่อถือน้อยกว่า TCP แต่อย่างง่ายมาก

UDP ใช้เมื่อ Data Loss บางส่วนยอมรับได้ เช่น Live Video/Audio หรือ Speed เป็น Critical Factor เช่น Online Gaming

UDP คล้าย TCP ว่าใช้ส่ง/รับข้อมูลออนไลน์ แต่มี Key Differences 2 จุด

1. UDP เป็น Connectionless Protocol ไม่ Establish Connection ก่อนแบบ TCP Three-way Handshake

2. UDP ไม่รับประกัน Data Transfer สำเร็จทั้งหมด UDP ส่ง Data ไป Device ที่ฟังอยู่ แต่ไม่แคร์ถ้าบางส่วนหาย ทำให้ UDP เรียกอีกชื่อว่า "Fire-and-forget" Protocol

วิธีคิดง่าย: TCP เหมือนสนทนา 2 คน คน A ขอคุยคน B คน B ตกลง คน A ยอม เริ่มคุยทั้งคู่

UDP เหมือนผู้ประท้วงนอกบ้านกับ Mega phone ทุกคนที่สนใจควรได้ยินส่วนใหญ่ แต่ไม่รับประกันว่าทุกคนในพื้นที่จะได้ยิน หรือว่าพวกเขากำลังฟัง

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ
UDP vs TCP — Source

ไหนเร็วกว่า TCP หรือ UDP?

โดยทั่วไป UDP เป็น Protocol ที่เร็วกว่า

UDP เรียบง่ายกว่า ไม่พยายาม Establish Connection ก่อนส่ง Data หรือ Verify ว่า Data ถึงหมด แค่ส่ง Data ไป Device ที่ Request แล้วทำต่อจน Device อีกฝั่ง Disconnect หรือไม่มี Data เหลือ

คิดแบบ: ดื่มจากท่อน้ำ (Hose) vs ดื่มจากขวด (Bottle) ระงับน้ำได้ทั้งคู่ แต่อาจเปียกเสื้อด้วย Hose

TCP vs UDP: เข้าใจความแตกต่างหลักและผลกระทบต่อประสิทธิภาพ
ไม่ใช่ท่อน้ำ แต่แม่นยำพอ คิดว่า TCP Bottle ถามตลอดว่ารับน้ำแล้วไหมขณะดื่ม Source

แต่เร็วกว่าไม่ได้หมายความว่า UDP ดีกว่าโดยรวม แค่หมายถึงดีกว่าในบางสถานการณ์

TCP จำเป็นในสถานการณ์ที่ Vital ว่า Packets ส่งตามลำดับ และ Packets ทุกตัวถึง Web จะทำงานไม่ได้ بدون TCP

TCP ช้ากว่าเพราะ Establish Connections และ Check Missing Packets แต่ยัง Blazing Fast ได้ เพราะอยู่บน Web ใช้ HTTP Sites อย่าง YouTube, Netflix ใช้ TCP ส่ง Data ไป Devices

TCP ยังรองรับ Buffering Browser Request/Load Data เพิ่มขณะดู ให้ Playback Smooth และ Skip ข้างหน้าได้

UDP เลือกสำห Live Video/Audio หรือ Online Games ที่ Speed สำคัญกว่า Data Loss

Call Google Meet/Zoom Video/Audio ส่งผ่าน UDP ถ้า Packets หาย จะเห็นแค่ Lag เล็กน้อย หรือ Video/Audio ตัดขาดบ้าง

เล่น Games อาจคิด TCP รับประกัน Packets ถึงอีกฝั่ง ควร Ideal แต่จริงๆ Checking และ Resending ของ TCP เพิ่ม Latency เท่านั้น

Game Developers หาวิธีฉลาดอื่น ให้ Player Input/State แม่นที่สุด อ่านเพิ่มเติมทำไม UDP เลือกสำห Online Gaming ได้ที่นี่

FIN

หวังว่าบทความนี้ช่วยเข้าใจ Nuances ระหว่าง TCP และ UDP ถ้าถามว่าไหนเร็วกว่า บอกตามที่อ่าน: "UDP เร็วกว่า แต่..."

ถ้าชอบสิ่งที่อ่าน บอกผมที่ Twitter ได้เลย