Может ли задержка пакета колебаться?

9

Может ли время, которое требуется для передачи пакета от клиента на сервер, колебаться?

liamzebedee
источник

Ответы:

9

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

Это является частью самовосстанавливающейся природы Интернета, позволяющей ему делать то, что он делает каждый день: если один маршрут становится менее подходящим в соответствии с эвристикой, запрограммированной на различных устройствах маршрутизации, вместо этого будет выбран другой маршрут. Это может быть кратковременным или долгосрочным. Помните, что до того, как появился Интернет, это была ARPANET - защитная сеть, предназначенная, например, для работы. мгновенное удаление обширных участков сети (подумайте о ядерной войне), при этом сеть в целом не рухнет. Направляясь вокруг поврежденных или иным образом неидеальных областей, большая сеть продолжает функционировать (хотя, возможно, неоптимально).

инженер
источник
1
Стоит добавить, что датаграммы совсем не гарантированы. Их можно просто молча бросить в любой момент их путешествия. Это только транспорт TCP, построенный поверх IP, который добавляет иллюзию надежности в сетевые коммуникации.
Тревор Пауэлл
Также см. Ответ Дэнни Пфлюгхефта: он справедливо добавляет, что TCP будет страдать от дополнительных задержек из-за того, как он работает - если пакеты будут потеряны, они будут повторно запрашиваться и повторно отправляться, добавляя дополнительное время полного обхода к задержке сообщения. И это может произойти произвольно много раз. UDP преодолевает это, отправляя непрерывный поток обновлений, и где моделирование может продвигаться вперед, несмотря на потерю пакетов (однако, гораздо больше думать и планировать в такой системе).
Инженер
5

Вероятно, это не вопрос разработки игры, но да. В обычном IP-соединении каждый пакет может проходить через различные промежуточные «скачки», и каждый из разных «скачков» может иметь различную задержку.

Если вы используете TCP для передачи ваших данных, протокол абстрагирует их для вас и будет переупорядочивать пакеты, чтобы доставлять пакеты в порядке, в котором они были первоначально отправлены; однако, если вы используете UDP, пакеты могут поступать и поступают не по порядку, в зависимости от задержки каждого отдельного пакета.

Ли Райан
источник
В частности, если пакеты UDP и TCP маршрутизируются одинаковым образом, а пакеты UDP обычно поступают не по порядку, это приводит к «скачкам задержки» по тому же соединению, используя вместо этого TCP.
Мартин Сойка
1

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

BlueRaja - Дэнни Пфлугхофт
источник