TCP เทียบกับ UDP: ไขข้อข้องใจเรื่องความน่าเชื่อถือเทียบกับประสิทธิภาพ

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

หน้าที่ของเลเยอร์การขนส่งคือการให้บริการการสื่อสารโดยตรงระหว่างกระบวนการแอปพลิเคชันที่ทำงานบนโฮสต์ที่แตกต่างกัน ดังนั้นจึงเรียกอีกอย่างหนึ่งว่าโปรโตคอลแบบ end-to-end เลเยอร์การขนส่งจะซ่อนรายละเอียดหลักของเครือข่าย ทำให้กระบวนการแอปพลิเคชันมองเห็นว่ามีช่องทางการสื่อสารแบบ end-to-end เชิงตรรกะระหว่างเอนทิตีทั้งสองของเลเยอร์การขนส่ง

TCP ย่อมาจาก Transmission Control Protocol และเป็นที่รู้จักในชื่อ connection-oriented protocol ซึ่งหมายความว่าก่อนที่แอปพลิเคชันหนึ่งจะเริ่มส่งข้อมูลไปยังอีกแอปพลิเคชันหนึ่ง กระบวนการทั้งสองจะต้องทำการจับมือกัน (handshake) การจับมือเป็นกระบวนการที่เชื่อมต่อกันอย่างมีตรรกะ ซึ่งรับประกันการส่งที่เชื่อถือได้และการรับข้อมูลอย่างเป็นระเบียบ ในระหว่างการจับมือกัน การเชื่อมต่อจะถูกสร้างขึ้นระหว่างโฮสต์ต้นทางและโฮสต์ปลายทางโดยการแลกเปลี่ยนชุดแพ็กเก็ตควบคุมและตกลงกันในพารามิเตอร์และกฎเกณฑ์บางประการเพื่อให้มั่นใจว่าการส่งข้อมูลจะสำเร็จ

TCP คืออะไร? (มายลิงค์กิ้งการแตะเครือข่ายและโบรกเกอร์แพ็กเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP ได้)
TCP (Transmission Control Protocol) เป็นโปรโตคอลการสื่อสารชั้นการขนส่งที่เน้นการเชื่อมต่อและเชื่อถือได้โดยใช้สตรีมไบต์

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

การเชื่อมต่อ TCP เป็นบริการแบบฟูลดูเพล็กซ์ ซึ่งหมายความว่าโฮสต์ A และโฮสต์ B สามารถส่งข้อมูลได้ทั้งสองทิศทางในการเชื่อมต่อ TCP กล่าวคือ ข้อมูลสามารถถ่ายโอนระหว่างโฮสต์ A และโฮสต์ B ได้แบบสองทิศทาง

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

ทีซีพี-ยูดีพี

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

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

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

ในเครือข่ายคอมพิวเตอร์ การส่งข้อมูลระหว่างโฮสต์จะดำเนินการผ่านเซ็กเมนต์ แล้วเซ็กเมนต์แพ็กเก็ตคืออะไร?

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

แล้วความแตกต่างระหว่าง MSS กับ MTU คืออะไร?

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

โปรดทราบว่าเมื่อขนาดเซกเมนต์สูงสุด (MSS) มีขนาดใหญ่กว่าหน่วยส่งข้อมูลสูงสุด (MTU) การแบ่งส่วน IP จะเกิดขึ้นที่เลเยอร์เครือข่าย และ TCP จะไม่แบ่งข้อมูลขนาดใหญ่ออกเป็นส่วนๆ ที่เหมาะสมตามขนาด MTU เลเยอร์เครือข่ายจะมีส่วนหนึ่งที่อุทิศให้กับเลเยอร์ IP

โครงสร้างเซ็กเมนต์แพ็กเก็ต TCP
มาสำรวจรูปแบบและเนื้อหาของส่วนหัว TCP กัน

เซ็กเมนต์ TCP

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

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

บิตควบคุมของเซ็กเมนต์ TCP มีดังต่อไปนี้:

บิต ACK:เมื่อบิตนี้เป็น 1 หมายความว่าฟิลด์ตอบกลับการยืนยันนั้นถูกต้อง TCP ระบุว่าต้องตั้งค่าบิตนี้เป็น 1 ยกเว้นแพ็กเก็ต SYN เมื่อสร้างการเชื่อมต่อครั้งแรก
บิต RST:เมื่อบิตนี้เป็น 1 แสดงว่ามีการยกเว้นในการเชื่อมต่อ TCP และจะต้องบังคับให้ตัดการเชื่อมต่อ
บิต SYN:เมื่อตั้งค่าบิตนี้เป็น 1 หมายความว่าการเชื่อมต่อจะต้องได้รับการสร้างขึ้น และค่าเริ่มต้นของหมายเลขลำดับจะถูกตั้งค่าในฟิลด์หมายเลขลำดับ
บิต FIN:เมื่อบิตนี้เป็น 1 หมายความว่าจะไม่มีการส่งข้อมูลอีกต่อไปในอนาคตและต้องการเชื่อมต่อ
ฟังก์ชันและคุณลักษณะต่างๆ ของ TCP ถูกรวบรวมไว้ในโครงสร้างของเซ็กเมนต์แพ็กเก็ต TCP

UDP คืออะไร (Mylinking'sการแตะเครือข่ายและโบรกเกอร์แพ็กเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP ได้)
User Datagram Protocol (UDP) เป็นโปรโตคอลการสื่อสารแบบไร้การเชื่อมต่อ เมื่อเทียบกับ TCP แล้ว UDP ไม่มีกลไกการควบคุมที่ซับซ้อน โปรโตคอล UDP ช่วยให้แอปพลิเคชันสามารถส่งแพ็กเก็ต IP ที่ถูกห่อหุ้มไว้ได้โดยตรงโดยไม่ต้องสร้างการเชื่อมต่อ เมื่อนักพัฒนาเลือกใช้ UDP แทน TCP แอปพลิเคชันจะสื่อสารกับ IP โดยตรง

ชื่อเต็มของโปรโตคอล UDP คือ User Datagram Protocol และส่วนหัวมีขนาดเพียงแปดไบต์ (64 บิต) ซึ่งถือว่าสั้นมาก รูปแบบของส่วนหัว UDP มีดังนี้:

เซ็กเมนต์ UDP

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

ความแตกต่างระหว่าง TCP และ UDP ใน Mylinkingการแตะเครือข่ายและโบรกเกอร์แพ็กเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP ได้
TCP และ UDP มีความแตกต่างในด้านต่อไปนี้:

TCP เทียบกับ UDP

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

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

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

การควบคุมความแออัด, การควบคุมการไหลTCP มีกลไกควบคุมความแออัดและการควบคุมการไหล ซึ่งสามารถปรับอัตราการส่งข้อมูลให้สอดคล้องกับสภาพเครือข่าย เพื่อรับประกันความปลอดภัยและเสถียรภาพในการส่งข้อมูล UDP ไม่มีกลไกควบคุมความแออัดและการควบคุมการไหล แม้ว่าเครือข่ายจะมีความหนาแน่นสูง แต่ก็จะไม่ปรับอัตราการส่งข้อมูลของ UDP

โอเวอร์เฮดส่วนหัวTCP มีความยาวส่วนหัวยาว โดยทั่วไปคือ 20 ไบต์ ซึ่งจะเพิ่มขึ้นเมื่อใช้ฟิลด์ตัวเลือก ในทางกลับกัน UDP มีส่วนหัวคงที่เพียง 8 ไบต์ ดังนั้น UDP จึงมีค่าโอเวอร์เฮดของส่วนหัวต่ำกว่า

TCP เทียบกับ UDP

สถานการณ์การใช้งาน TCP และ UDP:
TCP และ UDP เป็นโปรโตคอลเลเยอร์การขนส่งสองแบบที่แตกต่างกัน และมีความแตกต่างกันอยู่บ้างในสถานการณ์การใช้งาน

เนื่องจาก TCP เป็นโปรโตคอลที่เน้นการเชื่อมต่อ จึงมักใช้ในสถานการณ์ที่ต้องการการส่งข้อมูลที่เชื่อถือได้ ตัวอย่างการใช้งานทั่วไปมีดังนี้

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

การรับส่งข้อมูลแบบแพ็กเก็ตต่ำ เช่น DNS (Domain Name System):การสอบถาม DNS มักจะเป็นแพ็คเก็ตสั้นๆ และ UDP สามารถดำเนินการให้เสร็จได้เร็วกว่า
การสื่อสารแบบมัลติมีเดีย เช่น วิดีโอและเสียง:สำหรับการส่งข้อมูลมัลติมีเดียที่มีความต้องการแบบเรียลไทม์สูง UDP สามารถให้ความหน่วงเวลาที่ต่ำกว่าเพื่อให้แน่ใจว่าข้อมูลจะถูกส่งได้อย่างทันท่วงที
การสื่อสารแบบกระจายเสียง:UDP รองรับการสื่อสารแบบหนึ่งต่อหลายและหลายต่อหลาย และสามารถใช้ในการส่งข้อความแบบออกอากาศได้

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


เวลาโพสต์: 03-12-2024