TCP เหมือนหรือแตกต่างจาก​ UDP อย่างไร

คนที่ทำงานกับโครงข่ายคอมพิวเตอร์ และต้องทำงานกับไอพีแอดเดรส มักจะได้ยินโปรโตคอลสองตัวที่มักมาคู่กันเสมอ นั้นคือ TCP (Transmission Control Protocol) และ UDP (User Datagram Protocol)

แล้วทั้งสองตัวเหมือนหรือต่างกันอย่างไร

TCP และ UDP เป็นโปรโตคอลในชั้น Transport Layer ซึ่งสามารถขี่ IP (Internet Protocol)  และนั้นหมายความว่าทั้งสองตัวสามารถใช้ไอพีแอดเดรส ในการระบุคอมพิวเตอร์ปลายทางได้เหมือนกัน

ความแตกต่างที่เห็นได้ชัดระหว่าง TCP และ UDP คือ Connection, State และ Sequence ของทั้งสองตัว

Connection หมายถึงการเชื่อมต่อ ในที่นี้คือการทำให้แน่ใจว่าผู้ส่งสารและผู้รับสารมีตัวตนและสามารถติดต่อถึงกันได้อย่างแน่นอน

State หมายถึงสถานะ ในที่นี้คือโปรโตคอลจะต้องมีความสามารถในการรู้ถึงสถานะของสารที่ส่งไป เช่น สารถึงมือผู้รับหรือยัง หรือ สารส่งไปยังผู้รับสารได้ถูกต้องครบถ้วนหรือไม่

Sequence หมายถึงการเรียงลำดับสาร ในที่นี้คือการทำให้แน่ใจว่า สารที่ส่งและรับ จะต้องเรียงลำดับกันได้อย่างถูกต้อง จะต้องทำให้แน่ใจว่า ผู้รับสารจะต้องได้รับสารลำดับที่ 1 ก่อนลำดับที่ 2 เสมอ

TCP มีครบทั้งสามอย่าง ผู้ส่งสารและผู้รับสารต้องมีการส่งข้อมูลทักทายกันไปมาหรือที่เรียกว่าแฮนด์เช็ค (Handshake) อย่างน้อยสามครั้งก่อนส่งสาร เพื่อให้แน่ใจผู้ส่งสารและผู้รับสารมีตัวตนอยู่จริง รวมถึงมีการกำหนดไทม์เอาท์ (Timeout) ของสารทุกสารที่ส่งออกไป หากผู้ส่งสารไมได้รับการตอบสนองจากผู้รับสารตามช่วงเวลาที่กำหนดไว้ในไทม์เอาท์ ผู้ส่งสารจะต้องเริ่มส่งสารใหม่ นอกจานั้น สารทุกสารยังมีการกำหนดลำดับ เพื่อให้ผู้รับสารแน่ใจได้ว่า ไม่มีสารที่ตกหล่นหรือทำซ้ำอย่างแน่นอน

UDP ไม่มีทั้งสามอย่างที่กล่าวไว้ข้างต้น มันถูกออกแบบมาให้เป็นโปรโตคอลที่เรียบง่ายที่สุดในการส่งสารจากผู้ส่งไปยังผู้รับ โดยใช้เวลาน้อยที่สุด ด้วยเหตุนี้ มันจึงไม่มีการรับประกันว่าสารที่ส่งไปจะถึงผู้รับ รวมถึงไม่รับประกันว่าข้อมูลส่งออกไปจะครบถ้วน การตรวจสอบความถูกต้องหรือความครบถ้วนของข้อมูลจะถูกยกให้เป็นหน้าที่ของแอพพลิเคชัน (Application) ของทั้งผู้ส่งและผู้รับ

เพื่อให้เห็นความแตกต่างของทั้งสองโปรโตคอลนี้ได้ง่ายขึ้น ให้ผู้ส่งสารเป็นคนเล่านิทาน และ ให้ผู้รับสารเป็นคนเขียนหนังสือนิทานจากคำบอกเล่าของคนเล่านิทาน

ถ้าคนเล่านิทานและคนเขียนนิทานทำงานแบบ TCP คนเล่าจะต้องเล่าทีละประโยคแล้วหยุด เพื่อรอให้คนเขียนเขียนประโยคให้เสร็จและต้องส่งสัญญาณบางอย่างเช่น พยักหน้า หรือบอกว่า “ต่อเลย” ไปยังคนเล่า เพื่อบอกว่าเขียนเสร็จแล้ว และให้ผู้เล่าเล่าประโยคถัดไป

TCP_Sim

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

UDP_Sim

จากตัวอย่าง คนเขียนนิทานในแบบ TCP จะได้ความถูกต้องมากกว่าแต่จะเขียนได้ช้า ตรงข้ามกับการทำงานแบบ UDP ซึ่งจะได้ความไวแต่อาจจะมีข้อความตกหล่นไปบ้าง

ด้วยเหตุนี้ TCP จึงถูกใช้ในแอพพลิเคชันทั่วไปที่ทำงานแบบคู่ไคลเอนท์-เซอฟเวอร์หรือยูนิคแคสท์ (Unicast: ผู้ส่งสารหนึ่ง-ผู้รับสารหนึ่งแบบระบุตัว) และต้องการความถูกต้องของข้อมูลเป็นหลัก เช่น แอพพลิเคชันรับส่งเมล์ แอพพลิเคชันฐานข้อมูล ในขณะที่ UDP ใช้ในแอพพลิเคชันที่ต้องการการส่งข้อมูลอย่างต่อเนื่องและว่องไว เช่น แอพพลิเคชันดูหนังฟังเพลงออนไลน์ หรือ เกมส์ออนไลน์ หรือ บิททอเรนท์ (Bit Torrent) เป็นต้น รวมไปถึงแอพพลิเคชันที่มีลักษณะผู้รับสารหลายตัวพร้อมกันทั้ง มัลติแคสท์ (Multicast: ผู้ส่งสารหนึ่งตัว-ผู้รับสารหลายตัวแบบระบุตัว) และ บรอสแคส่ท์ (Broadcast: ผู้ส่งสารหนึ่งตัว-ผู้รับสารหลายตัวแบบไม่ระบุตัว) เป็นต้น

unicast

สนในหาความรู้เพิ่มเติม
มาตรฐานของ TCP ตามอ่านได้ที่ RFC793
มาตรฐานของ UDP ตามอ่านได้ที่ RFC768
หมายเลขพอร์ทที่ใช้ใน TCP และ UDP

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s