2015-08-07 3 views
1

Во время интернирования в компании видеоконференций было много разговоров о потери пакетов. В Википедии указано следующее:Пакетная потеря по HTTP

Потеря пакетов обычно вызвана перегрузкой в ​​сети.

Я понимаю, что, поскольку видео требует такого огромного количества данных, которое должно быть отправлено по проводу, пакеты будут потеряны.

То, что я не понимаю, - это то, почему потеря пакетов не встречается в других случаях, таких как HTTP-запросы и вызовы AJAX. Если потеря пакетов действительно связана с перегруженными сетями, почему я никогда не испытывал этого с помощью своих собственных HTTP-запросов?

Являются ли HTTP-соединения неуязвимыми для потери пакетов или являются запросами, которые я отправляю слишком мало, чтобы их затронули. Если HTTP невосприимчив к потере пакетов, почему это так?

+0

Уровень TCP/IP, лежащий в основе HTTP и многих других протоколов, обнаруживает потерю пакетов и будет повторно передавать потерянные пакеты до тех пор, пока они не будут подтверждены. На уровне приложений это проявляется не как недостающие данные, а за счет увеличения задержки/джиттера. Поэтому вы не заметите этого, если не будете уделять пристальное внимание времени. –

+0

@JimLewis Интересно. Теперь есть причины, по которым это не реализовано в более интенсивных сообщениях, таких как видео? Я предполагаю, что повторные пакеты будут слишком дорогостоящими или это будет неактуально, так как кадры в секунду будут такими быстрыми и упавшими пакетами вряд ли будут заметны. –

+0

@BrianTracy: аудио/видео обычно передаются с использованием UDP вместо TCP. По самой своей природе UDP является убыточным. Аудио/видео может потерять пакеты без серьезного ухудшения общего опыта, как правило, приемлема часть потерь. Это не так с протоколами TCP, такими как HTTP, где любая потеря данных является фатальной. –

ответ

4

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

Разница заключается в том, что видео обычно передается по протоколу UDP, в то время как HTTP передается по протоколу TCP. IP - это протокол уровня 3. TCP и UDP - это два типа протокола уровня 4.

UDP не является подключенным и надежным. Это означает, что если датаграмма отбрасывается посередине, ни один конечный узел не реализует об этом (кроме случаев, когда протокол высокого уровня реализует надежность). Датаграмма потеряна.

TCP - это ориентированный на соединение и надежный протокол. Объясненный простым способом, узел, получающий сегмент TCP, отправит подтверждения для полученных данных. Если сегмент TCP потерян посередине, принимающий узел не будет отправлять ACK (подтверждение), и у отправляющего узла будет время ожидания через определенное время. По истечении времени отправляющий узел повторно передает отсутствующие данные. Вот почему принимающий узел будет либо получать все HTTP-сообщение, либо, в крайнем случае, в приложении будет ошибка, сообщающая вам, что что-то вроде «соединение нарушено» (это означает, что есть проблема с обоими целями поймут об этом).

 Смежные вопросы

  • Нет связанных вопросов^_^