TCP проти UDP

Існує два типи трафіку Інтернет-протоколу (IP). Вони є TCP або Протокол управління передачею і UDP або Протокол дейтаграм користувача. TCP орієнтований на з'єднання - як тільки з'єднання встановлено, дані можуть надсилатися в бік. UDP - це простіший бездротовий Інтернет-протокол. Кілька повідомлень надсилаються у вигляді пакетів в шматки за допомогою UDP.

Порівняльна діаграма

Відмінності - схожість - TCP порівняно з діаграмою порівняння UDP
TCPUDP
Скорочення для Протокол управління передачею User Datagram Protocol або Universal Datagram Protocol
З'єднання Протокол управління передачею - протокол, орієнтований на з'єднання. User Datagram Protocol - протокол без підключення.
Функція Оскільки повідомлення пробивається через Інтернет з одного комп'ютера на інший. Це на основі з'єднання. UDP - це також протокол, який використовується при транспортуванні або передачі повідомлень. Це не на основі з'єднання, що означає, що одна програма може пересилати набір пакетів до іншої, і це було б закінченням відносин.
Використання TCP підходить для програм, які вимагають високої надійності, а час передачі порівняно менш критичний. UDP підходить для програм, які потребують швидкої, ефективної передачі, наприклад, ігор. Безгромадянський характер UDP також корисний для серверів, які відповідають на невеликі запити від величезної кількості клієнтів.
Використання іншими протоколами HTTP, HTTP, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Впорядкування пакетів даних TCP переставляє пакети даних у визначеному порядку. UDP не має властивого порядку, оскільки всі пакети не залежать один від одного. Якщо замовлення потрібно, воно має керуватися рівнем програми.
Швидкість передачі Швидкість для TCP повільніше, ніж UDP. UDP швидше, оскільки відновлення помилок не робиться. Це протокол "найкращих зусиль".
Надійність Існує абсолютна гарантія, що передані дані залишаються недоторканими та надходять у тому ж порядку, в якому вони були надіслані. Немає гарантії, що надіслані повідомлення або пакети взагалі дістаються.
Розмір заголовка Розмір заголовка TCP - 20 байт Розмір заголовка UDP - 8 байт.
Загальні поля заголовків Порт джерела, Порт призначення, Перевірте суму Порт джерела, Порт призначення, Перевірте суму
Потокове передавання даних Дані читаються як байтовий потік, ніякі розпізнавальні ознаки не передаються на межі сигнального повідомлення (сегмента). Пакети надсилаються індивідуально і перевіряються на цілісність, лише якщо вони надійшли. Пакети мають певні межі, які враховуються після отримання, тобто операція читання в гнізді приймача дасть ціле повідомлення, як воно було надіслано спочатку.
Вага TCP - великоваговик. TCP вимагає трьох пакетів для встановлення з'єднання з сокетом, перш ніж будь-які дані користувача можуть бути надіслані. TCP обробляє надійність та контроль перевантаженості. UDP - легкий. Немає впорядкування повідомлень, ніяких підключень для відстеження тощо. Це невеликий транспортний шар, розроблений поверх IP.
Контроль потоку даних TCP виконує контроль потоку. TCP вимагає трьох пакетів для встановлення з'єднання з сокетом, перш ніж будь-які дані користувача можуть бути надіслані. TCP обробляє надійність та контроль перевантаженості. UDP не має можливості контролю потоку
Помилка перевірки TCP робить перевірку помилок та відновлення помилок. Помилкові пакети передаються з джерела до пункту призначення. UDP робить перевірку помилок, але просто відкидає помилкові пакети. Не вдалося відновити помилку.
Поля 1. Послідовний номер, 2. Номер AcK, 3. Зсув даних, 4. Зарезервовано, 5. Біт управління, 6. Вікно, 7. Терміновий покажчик 8. Параметри, 9. Прокладка, 10. Перевірте суму, 11. Порт джерела, 12. Порт призначення 1. Довжина, 2. Порт джерела, 3. Порт призначення, 4. Перевірте суму
Подяка Підтвердження сегментів Ніякого підтвердження
Рукостискання SYN, SYN-ACK, ACK Без рукостискання (протокол без підключення)

Зміст: TCP проти UDP

  • 1 Відмінності функцій передачі даних
    • 1.1 Надійність
    • 1.2 Замовлення
    • 1.3 З'єднання
    • 1.4 Спосіб передачі
    • 1.5 Виявлення помилок
  • 2 Як працюють TCP та UDP
  • 3 різні програми TCP та UDP
    • 3.1 TCP проти UDP для серверів ігор
  • 4 Список літератури

Відмінності в функціях передачі даних

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

Надійність

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

Замовлення

TCP передачі надсилаються в послідовності, і вони приймаються в тій же послідовності. Якщо сегменти даних надходять у неправильному порядку, TCP здійснює впорядкування та доставку програми. У випадку UDP, Послідовність надісланих повідомлень може не підтримуватися, коли вона досягає отримання програми. Абсолютно немає можливості передбачити порядок, в якому повідомлення буде отримано.

З'єднання

TCP являє собою важке вагове з'єднання, яке вимагає трьох пакетів для з'єднання з розеткою та керує контролем перевантажень та надійністю. UDP являє собою легкий транспортний шар, розроблений на вершині IP. Немає зв’язків відстеження та впорядкування повідомлень.

Спосіб передачі

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

Виявлення помилок

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

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

Як працюють TCP та UDP

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

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

Різні програми TCP та UDP

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

TCP проти UDP для серверів ігор

Для масово багатокористувацьких онлайн-ігор (MMO) розробникам часто доводиться робити архітектурний вибір між використанням стійких підключень UDP або TCP. Перевагами TCP є стійкі з'єднання, надійність та можливість використання пакетів довільних розмірів. Найбільшою проблемою TCP в цьому сценарії є його алгоритм контролю заторів, який трактує втрати пакетів як ознаку обмеження пропускної здатності та автоматично пригнічує відправлення пакетів. У мережах 3G або Wi-Fi це може спричинити значні затримки.

Досвідчений розробник Крістоффер Лерне зважив плюси і мінуси і рекомендує наступні критерії, щоб вибрати, чи використовувати TCP або UDP для своєї гри:

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

Список літератури

  • Вікіпедія: Протокол управління передачею
  • Вікіпедія: Протокол дейтаграм користувача
  • UDP vs TCP для ігрових серверів
  • Протокол управління передачею