ความแตกต่างระหว่าง UDP และ TCP คืออะไร?


46

เราเตอร์ของฉันมีสองโปรโตคอล (และตัวเลือก "ทั้ง") ที่ฉันสามารถเลือกได้เมื่อตั้งค่าการส่งต่อพอร์ต: UDP และ TCP อะไรคือความแตกต่างระหว่างสองโปรโตคอลนี้และเมื่อใดที่คุณจะเลือกโปรโตคอลอื่นในการส่งต่อพอร์ต

คำตอบ:


51

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

สิ่งที่คุณใช้ขึ้นอยู่กับแอปพลิเคชัน ตัวอย่างเช่นเว็บเซิร์ฟเวอร์ใช้ TCP


3
นั่นสมเหตุสมผลแล้วดังนั้นหากคุณกำลังสตรีมวิดีโอไม่มีจุดที่จะส่งเฟรมที่หายไปในภายหลังเพราะคุณผ่านจุดนั้นไปแล้ว ขอบคุณ
Guy

15
+1 เพียงเพื่อเพิ่มใครก็ตามที่มองหาความเข้าใจในเชิงลึกยิ่งขึ้นควรอ่านหนึ่งใน W. Richard Stevens หนังสือยอดเยี่ยมหลายเล่มในเรื่องนี้ "TCP / IP Illustrated, v1" และ "UNIX Network Programming" เป็นบทเรียนและการอ้างอิงที่ดีเยี่ยม
Murali Suriar

73

คุณสามารถหาบทสรุปที่ดีได้ที่นี่:

ความแตกต่างระหว่างโปรโตคอลอินเทอร์เน็ต UDP และ TCP คืออะไร?

ทั้ง TCP และ UDP ทำงานที่ transport layer โมเดล TCP / IP แต่มีการใช้งานที่แตกต่างกันมาก

ความแตกต่างที่สำคัญที่สุดคือ:

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

โครงสร้างเฟรม

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

นี่คือโครงสร้างเฟรม TCP:

เฟรม TCP

นี่คือโครงสร้างเฟรม UDP ง่ายกว่ามาก:

เฟรม UDP

โปรโตคอลทั่วไปที่ใช้ TCP คือ HTTP, FTP และ SMTP ตัวอย่างของโปรโตคอลที่ใช้ UDP คือ DNS และ DHCP


@splattne - คำสั่งของการรับข้อความคือการรับประกันไม่ใช่การส่ง
Alnitak

@Alnitak: แน่นอนคุณพูดถูก ฉันหมายถึงการรับประกันใบเสร็จรับเงินในการส่งคำสั่ง ฉันจะอัปเดตเพื่อให้ชัดเจน
splattne

43

และคำอธิบายระดับ CEO:

UDP คือเมื่อคุณขว้างกระดาษไปในทิศทางทั่วไปของถังขยะ

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


1
นั่นคือคำอธิบาย "ระดับ CEO" ที่ดีมาก - ฉันชอบ!
Keithius

ฉันไม่ใช่ซีอีโอ แต่ทำไมไม่มีใครบอกฉันก่อนหน้านี้! : p
Nicolas Dorier

มันยอดเยี่ยมมาก!
shylent

7

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


3

ในการตอบคำถามส่วนอื่นของคุณคุณต้องส่งต่อสิ่งที่แอปพลิเคชันของคุณใช้ ในการส่งต่อการรับส่งข้อมูล HTTP เลือก TCP ในการส่งต่อการรับส่งข้อมูล TFTP ให้เลือก UDP โปรแกรม p2p ส่วนใหญ่ใช้ทั้ง tcp และ udp ดังนั้นส่งต่อทั้งคู่

ทุกอย่างขึ้นอยู่กับโปรโตคอลและโปรแกรมที่คุณใช้


คุณไม่ถูกต้องทั้งหมด dns ยังใช้ tcp / 53 ไม่บ่อยนัก แต่ก็ยัง [เช่น สำหรับการถ่ายโอนโซน]
pQd

ใช่. นอกจากนี้ยังมีผลบังคับใช้อย่างสมบูรณ์ในการส่งเคียวรี DNS ปกติผ่าน tcp ฉันเปลี่ยนตัวอย่างเป็น TFTP ซึ่งใช้ UDP เป็นพิเศษ
hayalci

2

ความแตกต่างที่กล่าวถึงจนถึง TCP ยังมี

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

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


2

TCP ใช้ความพยายามเพื่อให้แน่ใจว่าข้อมูลได้ถูกส่งไปยังผู้รับแล้ว UDP ไม่


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

@ Anonymous - โดยทั่วไปคุณได้ปรับปรุงสิ่งที่ฉันพูดไว้ข้างต้น ฉันผิดหรือเปล่า?
J. Polfer

ฉันคิดว่าคุณทั้งคู่จะพบว่า IP เป็นเฟรมเวิร์กพื้นฐาน (สแต็ก) และโปรโตคอลการสื่อสารพื้นฐานที่ทั้ง UDP และ TCP ใช้ คุณไม่สามารถสื่อสารข้อมูลที่เป็นประโยชน์ผ่านอินเทอร์เน็ตโดยใช้เพียงแค่ IP เท่าที่ฉันรู้ - แม้กระทั่งปิงพื้นฐาน ฯลฯ ใช้โปรโตคอลด้านบนของ IP (อีกอันหนึ่งหลักคือ ICMP)
ลีบี

1

ไม่ต้องสนใจคำตอบทั้งหมดที่อธิบายอย่างหนึ่งกับอีกคำตอบ สำหรับวัตถุประสงค์ของการตั้งค่าพอร์ตไปข้างหน้ากฎนั้นค่อนข้างง่าย: คุณต้องเลือก TCP เว้นแต่ว่าเอกสารสำหรับโปรโตคอล / แอปพลิเคชันที่คุณใช้จะบอกว่าจะใช้ UDP โดยทั่วไปแล้วคนที่ใช้ UDP จะเกี่ยวข้องกับการสตรีมหรือสิ่งที่ง่ายมากที่นิยมใช้โปรโตคอล / ความเร็วที่เบากว่าความน่าเชื่อถือ (โดยเฉพาะ DNS และ NTP) โปรดทราบว่ามีโปรโตคอลอื่นนอกเหนือจาก TCP และ UDP ด้วย - ICMP, โปรโตคอลการสร้างอุโมงค์ ฯลฯ


1

โปรโตคอลที่รู้จักกันดีก็คือยิ่งเราเตอร์บนพา ธ แทรกแซงกับโปรโตคอลมากเท่านั้น ส่งแพ็คเก็ต tcp และมีความเป็นไปได้สูงมากที่แพ็กเก็ตที่ได้รับจะถูกจัดการอย่างมาก โดยทั่วไปแล้ว UDP จะไม่ยุ่งเหยิงและโปรโตคอล IP paylod อื่น ๆ อีก 254 รายการนั้นมักจะไม่ถูกแตะต้องโดยสมบูรณ์


0

User Datagram Protocol (UDP)

มันเป็นส่วนหนึ่งของโปรโตคอลพื้นฐานของ Internet Protocol Suite โปรแกรมบนคอมพิวเตอร์เครือข่ายสามารถส่งข้อความสั้น ๆ บางครั้งเรียกว่าเป็นดาต้าแกรม UDP ไม่รับประกันความน่าเชื่อถือใด ๆ (เกิดขึ้นดาตาแกรมอาจมาถึงตามลำดับมีการทำซ้ำหรือหายไปโดยไม่แจ้งให้ทราบล่วงหน้า) ความจริงที่ว่าไม่มีการตรวจสอบว่ามีการส่งมอบแพ็กเก็ตทั้งหมดจริงหรือไม่ UDP พิสูจน์ให้เห็นว่าเร็วขึ้นและมีประสิทธิภาพมากขึ้นสำหรับแอปพลิเคชันที่ไม่ต้องการการรับประกันการส่งมอบ UDP ค้นหาการใช้งานในสถานการณ์เช่นนี้:

แอปพลิเคชันที่คำนึงถึงเวลา ปัญหาที่เกิดจากแพ็คเก็ตล่าช้าจะหลีกเลี่ยง

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

โปรโตคอลควบคุมการส่ง (TCP)

มันมักจะเรียกว่า TCP / IP เนื่องจากความสำคัญของโปรโตคอลนี้ใน Internet Protocol Suite TCP ทำงานในระดับที่สูงขึ้นเกี่ยวข้องเฉพาะกับระบบปลายทั้งสอง (เช่นระหว่างเว็บเบราว์เซอร์และเว็บเซิร์ฟเวอร์) TCP จัดส่งกระแสข้อมูลที่เชื่อถือได้ตามลำดับจากโปรแกรมหนึ่งในคอมพิวเตอร์เครื่องหนึ่งไปยังโปรแกรมอื่นบนคอมพิวเตอร์เครื่องอื่น การใช้งานทั่วไปของการสนับสนุนการส่งอีเมล TCP regroup และการถ่ายโอนไฟล์และเว็บแอปพลิเคชัน ในงานการจัดการ TCP ควบคุมขนาดข้อความอัตราการแลกเปลี่ยนข้อความและความแออัดของเครือข่าย สำหรับ IP นั้นจะจัดการการส่งสัญญาณในระดับต่ำกว่าจากคอมพิวเตอร์หนึ่งไปยังอีกเครื่องหนึ่งเป็นข้อความที่ถ่ายโอนผ่านอินเทอร์เน็ต


0

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

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

ในทางตรงกันข้าม UDP จะไม่รับรองว่าแพ็กเก็ตข้อมูลจะมาถึง มันจะให้แน่ใจว่าถ้ามันมาถึงมันจะไม่มีข้อผิดพลาด

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

การค้นหาชื่อโดเมนหรือการสืบค้น DNS มักใช้ UDP แต่สามารถใช้ TCP ได้เช่นกัน บริการสตรีมจำนวนหนึ่งใช้ UDP ภายใต้โปรโตคอลแอปพลิเคชันอื่น

ฉันหวังว่าจะตอบคำถามของคุณเป็นภาษาอังกฤษที่ง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.