Чим відрізняється UDP від ​​TCP?


46

Мій маршрутизатор має два протоколи (і параметр "обидва"), які я можу вибрати при налаштуванні переадресації портів: UDP і TCP. Яка різниця між цими двома протоколами і коли ви вибрали б один за іншим при переадресації портів?

Відповіді:


51

TCP підтримується акками та повторно намагається переконатися, що дані потрапляють туди, куди вони йдуть. UDP є беззв’язним і "стріляй і забудь" UDP використовується в основному для потокових програм, де, якщо ви втратите деякі дані, вам не потрібно намагатися надсилати їх ще раз.

Який з них ви використовуєте, залежить від програми. Наприклад, веб-сервер використовує TCP.


3
Це має сенс - тому якщо ви потоково передаєте відео, немає сенсу пізніше повторно відсутній кадр, оскільки ви вже пройшли цю точку. Спасибі
Хлопець

15
+1. Додамо лише, що кожен, хто шукає більш глибокого розуміння, повинен прочитати одну з безлічі книг В. Річарда Стівенса на цю тему. "TCP / IP Illustrated, v1" і "Мережеве програмування UNIX" служать відмінними підручниками та посиланнями.
Муралі Суріар

73

Ви можете знайти хороший підсумок тут:

Чим відрізняється Інтернет-протоколи UDP та TCP?

І TCP, і UDP працюють на моделі транспортного рівня 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

І пояснення рівня генерального директора:

UDP - це коли ви кидаєте папір у загальному напрямку сміття.

TCP - це, коли він пропущений, ви кидаєте точні копії того ж паперу знову і знову, поки він не потрапить у смітник. Буде витрачатися папір, навіть обурені пакети TCP призводять до втрати мережевих або системних ресурсів.


1
Це дуже гарне пояснення "CEO level" - мені це подобається!
Кейтіус

Я не генеральний директор, але чому мені ніхто раніше цього не говорив! : p
Ніколя Доріє

Це геніально!
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 - Ви в основному повторили те, що я сказав вище. Як я помиляюся?
Дж. Полфер

Я думаю, ви обидва виявите, що IP є базовим фреймом (стеком) і основним протоколом зв'язку, який використовують і UDP, і TCP. Насправді ви не можете передавати корисні дані в Інтернеті за допомогою JUST IP, наскільки я знаю - навіть основні пінг-файли тощо використовують протокол поверх IP (інший основний; ICMP).
Лі Б

1

Не зважайте на всі відповіді, що пояснюють одну проти іншої. Для налаштування переадресації портів правила досить прості: вам потрібно вибрати TCP, якщо тільки документи для протоколу / програми, які ви використовуєте, скажуть використовувати UDP. Зазвичай ті, що використовують UDP, пов’язані із потоковим потоком або дуже простими речами, які надають перевагу легким протоколам / швидкості над надійністю (особливо DNS та NTP). Зауважте, що крім TCP та UDP існують і інші протоколи - ICMP, протоколи тунелювання тощо.


1

Чим більше відомий протокол, тим більше маршрутизаторів на шляху втручається в протокол. Надішліть пакети tcp, і велика ймовірність отримання отриманих пакетів сильно збиті. UDP зазвичай не такий керований, а інші 254 протоколи оплати IP, як правило, повністю не торкаються.


0

Протокол User Datagram (UDP)

Він є частиною базових протоколів пакету Internet Protocol Suite. Програми на мережевих комп'ютерах можуть надсилати короткі повідомлення, які іноді називаються дейтаграмами. UDP не гарантує надійності (трапляється, що дейтаграма може вийти з ладу, дублюватися або відсутня без будь-якого повідомлення). Той факт, що не перевіряється, чи всі пакети дійсно доставлені, UDP виявляється більш швидким та ефективним для програм, які не потребують гарантованої доставки. UDP знаходить своє використання в таких ситуаціях:

Часові програми. Проблеми через затримки пакетів уникають

Це також корисно для серверів, які відповідають на невеликі запити від величезної кількості клієнтів. UDP підтримує пакетну трансляцію (передається всім у локальній мережі) та багатоадресову передачу (передає всім абонентам).

Протокол управління передачею (TCP)

Його часто називають TCP / IP через важливість цього протоколу в Internet Suite Suite. TCP працює на більш високому рівні, стосується лише двох кінцевих систем (наприклад, між веб-браузером та веб-сервером). TCP забезпечує надійну послідовну доставку потоку даних з однієї програми на одному комп’ютері на іншу програму на іншому комп'ютері. Загальні можливості підтримки підтримки перегрупування електронної пошти TCP та передачі файлів та веб-додатків TCP. Серед завдань управління TCP контролює розмір повідомлення, швидкість обміну повідомленнями та переповнення мережевого трафіку. Що стосується IP, він обробляє передачі нижчого рівня від комп'ютера до комп'ютера як повідомлення, що передається через Інтернет.


0

І те, і інше - це мережеві протоколи, побудовані поверх чогось, що називається Internet Protocol або IP. Інтернет-протокол є основним протоколом Інтернету і є, наприклад, тим, що дозволяє нам переглядати Інтернет. Ось чому ви часто бачите ці протоколи, написані як TCP / IP або UDP / IP. Вони фактично є основними протоколами Інтернету.

В обох випадках ваші дані поділяються на шматки, які називаються пакетами. TCP гарантує, що ці пакети добираються до місця призначення та у правильному порядку та без будь-яких помилок.

UDP з іншого боку не забезпечить навіть надходження пакета даних. Він лише гарантує, що якщо він дійде, він буде без помилок.

Зазвичай інші протоколи працюватимуть поверх TCP та UDP і називаються протоколами додатків, оскільки вони працюють в додатку, а не в операційній системі. Ваш веб-перегляд використовує протокол HTTP, який використовуватиме протокол TCP.

Пошук доменних імен або запити DNS часто використовують UDP, але також можуть використовувати TCP. Ряд потокових служб використовує UDP під іншими протоколами додатків.

Я сподіваюся, що відповість на ваше запитання більш простою англійською мовою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.