Чи може коливатися затримка пакетів?


9

Чи може час, який потрібен для передачі пакету від клієнта до сервера, коливатися?

Відповіді:


9

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

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


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

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

5

Це, мабуть, не питання розвитку гри, але так. У звичайному IP-з'єднанні кожен пакет може проходити через різних посередницьких «хмелів», а кожен різний «хміль» може мати різну затримку.

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


Зокрема, якщо пакети UDP та TCP маршрутизуються однаково, а пакети UDP звичайно надходять із порядку, це перекладається на "затримки" через одне і те ж з'єднання, використовуючи натомість TCP.
— Мартін Сойка


1

Крім того, що вже було сказано, не забувайте, що маршрутизаторам дозволено довільно скидати пакети , тобто в TCP теоретично пакет може зайняти довільно довгий час, щоб досягти свого пункту призначення (а в UDP він ніколи не може досягти свого призначення!).

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