หน้าแรก Networking & Wireless ทำความเข้าใจเกี่ยวกับความแตกต่างระหว่าง TCP และ UDP

ทำความเข้าใจเกี่ยวกับความแตกต่างระหว่าง TCP และ UDP

แบ่งปัน

ถ้าคุณเคยตั้งค่าไฟร์วอลล์ ติดตั้งเราเตอร์ หรือแม้แต่การเลือกวีพีเอ็นที่ดีที่สุดสำหรับคอมพิวเตอร์ของคุณมาแล้ว ก็ย่อมมีโอกาสที่เคยได้ยินเกี่ยวกับโปรโตคอล TCP และ UDP กันมาบ้าง แต่ถ้าคุณต้องมาเปิดอ่านข้อมูลอย่างบทความนี้แล้ว แสดงว่าก็ยังแอบสับสนอยู่ไม่ว่าจะเป็นตัวตนที่แท้จริง วัตถุประสงค์ หรือแม้แต่ลักษณะสำคัญของทั้งสองโปรโตคอลนี้

เราจึงมาเจาะลึกความแตกต่างระหว่าง TCP และ UDP รวมทั้งศึกษาถึงเหตุผลว่าทำไมถึงต้องมีโปรโตคอลในเลเยอร์ Transport ถึงสองตัวกัน

Transport Protocol คืออะไร?

ก่อนที่เราจะพูดไปถึงความแตกต่างระหว่าง TCP และ UDP ในรายละเอียด คุณควรจะทราบก่อนถึงลักษณะของสิ่งที่เรียกว่าโปรโตคอลสำหรับขนส่งข้อมูล (Transport Protocol) โดยทั้ง User Datagram Protocol (UDP) และ Transport Control Protocol (TCP) ต่างเป็นกลไกที่แอพพลิเคชั่นและซอฟต์แวร์ใช้ในการขนส่งแพ็กเก็ตข้อมูลบนอินเทอร์เน็ตทั้งสิ้น

ถ้าอธิบายง่ายๆ แล้ว เวลาที่คุณส่งข้อมูลบนอินเทอร์เน็ต (เช่น การส่งไฟล์ผ่าน Skype หรือ Facebook หรือแค่ส่งเมล์ก็ตาม) โปรโตคอลขนส่งนี้ก็จะเหมือนบุรุษไปรษณีย์ที่ส่งข้อมูลไปยังปลายทางด้วยการแบ่งออกเป็นพัสดุย่อยๆ (ซึ่งก็คือสิ่งที่เราเรียกว่า แพ็กเก็ต)

ทั้งสองโปรโตคอลนี้ทำงานบนโปรโตคอล IP อีกทีหนึ่ง ซึ่งคุณน่าจะเคยได้เห็นคำว่า TCP/IP และ UDP/IP กันมาแล้ว ซึ่งทั้งสองอย่างนี้มีความหมายเดียวกัน แต่หลายคนมักเรียกสั้นๆ ว่า TCP และ UDP เพื่อให้ง่ายขึ้น แต่ถึงทั้งสองโปรโตคอลจะได้รับความนิยมมากที่สุด แต่ทั้ง TCP และ UDP ก็ไม่ใช่แค่สองโปรโตคอลที่ทำงานบน IP เท่านั้น ยกตัวอย่างเช่น โปรโตคอลสำหรับทำวีพีเอ็นมากมายที่ใช้ในการซ่อนและเข้ารหัสข้อมูล เป็นต้น

แล้ว TCP คืออะไร?

TCP เป็นโปรโตคอลที่อาศัยการสร้างการเชื่อมต่อ ที่ส่งแพ็กเก็ตไปกลับระหว่างผู้ส่งและปลายทาง โดยมีการตรวจสอบให้แน่ใจว่าทุกแพ็กเก็ตที่จัดส่งไปยังเซิร์ฟเวอร์นั้นเป็นไปตามลำดับที่ถูกต้องตามที่ต้นทางส่งออกมา ด้วยการสร้างการเชื่อมต่อระหว่างสองฝั่ง ทั้งผู้ส่งและผู้รับ

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

เมื่อไรถึงเหมาะสมที่จะใช้ TCP ส่งข้อมูล?

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

ดังนั้น TCP จึงเป็นทางเลือกที่ดีที่สุดถ้าคุณเปิดเว็บไซต์ หรือต้องการสร้างความมั่นใจว่าข้อมูลถูกส่งอย่างถูกต้อง ไม่มีความเสี่ยงที่ข้อมูลจะเสียหาย อย่างไรก็ตาม คุณก็จำเป็นต้องทำให้ทั้งสองฝั่งออนไลน์อยู่เสมอมิฉะนั้นจะไม่สามารถสร้างการเชื่อมต่อได้

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

ข้อเสียของ TCP
• ทั้งสองฝั่งจำเป็นต้องออนไลน์ตลอดกระบวนการส่งข้อมูล
• ช้ากว่า UDP
• ไม่ทำงานถ้าออฟไลน์

แล้ว UDP คืออะไร?

อ้างอิงจากที่ระบุไว้บนเอกสารมาตรฐาน RFC768 นั้น UDP ถือเป็นโปรโตคอลที่เรียบง่ายที่สุด รวมทั้งรวดเร็วและมีประสิทธิภาพมากที่สุด แพ็กเก็ตข้อมูลจะมีขนาดเล็กเนื่องจากมีส่วนเฮดเดอร์น้อย และไม่ต้องสร้างการเชื่อมต่อก่อนที่จะส่งข้อมูลหรือดาต้าแกรมออกไป (ทำให้เราเรียกว่า Connectionless) ที่จริงแล้ว UDP เป็นเครื่องมือหลักในการส่งอีเมล์ เนื่องจากคุณสามารถส่งออกไปหาผู้รับได้ตลอดแม้จะออฟไลน์อยู่ก็ตาม

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

แพ็กเก็ตข้อมูลจะถูกส่งออกมาอย่างต่อเนื่องโดยไม่มีการควบคุมทิศทาง นั่นหมายความว่าข้อมูลถูกส่งออกมาด้วยความรวดเร็วมากกว่า TCP แต่ถ้าเกิดปัญหาเน็ตเวิร์คแล้วแพ็คเก็ตข้อมูลทุกแพ็กเก็ตจะถูกตัดทิ้ง

เมื่อไหร่เราถึงควรใช้ UDP?

พูดง่ายๆ ก็คือ UDP นั้นดีกว่า TCP ในกรณีที่คุณต้องการความเร็วมากกว่าความน่าเชื่อถือ ตัวอย่างเช่น การเล่นเกมออนไลน์ที่คุณให้ความสำคัญกับสิ่งที่เกิดขึ้นในเรียลไทม์เท่านั้น

ถ้าคุณทำแพ็กเก็ตข้อมูลสูญหายระหว่างส่งไปหาคนอื่น ก็จะเป็นกรณีที่ไม่มีหมายที่จะส่งข้อมูลดังกล่าวไปอีกครั้งหนึ่ง อีกตัวอย่างที่เห็นชัดเจนคือ การใช้แอพพลิเคชั่นหรือการประยุกต์ใช้ที่ต้องการความเร็วและประสิทธิภาพ เช่น บนแพลตฟอร์มถ่ายทอดสด หรือบนเครือข่ายสตรีมมิ่ง นอกจากนี้แล้ว UDP ยังเป็นที่นิยมในการใช้สำหรับจัดการบันทึก Log เพื่อหลีกเลี่ยงปัญหาที่มักเกิดกับ TCP อย่างเช่นไทม์เอาต์หรือปัญหาด้านการเชื่อมต่อ

ข้อดีของ UDP
• รวดเร็วและมีประสิทธิภาพเป็นอย่างมาก
• ลดทราฟิกบนเครือข่ายได้
• ไม่จำเป็นว่าทั้งสองฝั่งจะต้องมีการเชื่อมต่อ

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

บทสรุป

ทั้งโปรโตคอล TCP และ UDP ตั้งมีข้อได้เปรียบและข้อเสียเปรียบในตัวมันเอง ซึ่งคุณอาจชอบตัวใดตัวหนึ่งแล้วแต่ความต้องการคุณ ซึ่งแม้แต่ปัจจุบัน ก็ยังมีเทคโนโลยีมากมายอย่างเช่นอีเมล์หรือเกมออนไลน์ที่ต้องการกลไกการส่งแบบ Connectionless มากกว่าเราต้องขอที่ต้องอาศัยการสร้างการเชื่อมต่อ โดยไม่สนใจทั้งโอเวอร์เฮด ความน่าเชื่อถือ หรือความเร็ว

ที่มา : GBHackers