Использует ли HTTP UDP?



Это может быть глупый вопрос:




  • использует ли HTTP протокол пользовательских дейтаграмм?


например:




Если один потоковый MP3 или видео с помощью HTTP, он внутренне использует UDP для транспорта?


728   13  

13 ответов:

Как правило, нет.

потоковая передача редко используется через HTTP, а HTTP редко выполняется через UDP. Смотрите, однако,RTP.

за то, как ваш пример (в комментарии), вы не показываете протокол для ресурса. Если бы этот протокол был HTTP, то я бы не назвал доступ "потоковым"; даже если это в некотором смысле слова, так как он отправляет (возможно, большой) ресурс последовательно по сети. Как правило, ресурс будет сохранен локальный диск перед воспроизведением, поэтому сетевая передача не является тем, что обычно подразумевается под "потоковой передачей".

Как отметили комментаторы, конечно, можно действительно передавать поток через HTTP, и это делается некоторыми.

с RFC 2616:

HTTP-связь обычно имеет место через TCP/IP соединения. Этот порт по умолчанию-TCP 80, но другой порты могут быть использованы. Это не исключает протоколу HTTP могут быть реализованы поверх любого другого протокола на Интернет, или в других сетях. HTTP только предполагает надежный транспорт; любой протокол, который предоставляет такие гарантии могут быть использованы; отображение HTTP / 1.1 запрос и ответ структур на передачи данных единицы измерения рассматриваемого протокола: вне рамок этого спецификация.

поэтому, хотя он явно не говорит об этом, UDP не используется, потому что это не "надежный транспорт".

EDIT - в последнее время протокол QUIC (который является более строго псевдотранспортным или протоколом уровня сеанса) использует UDP для переноса трафика HTTP/2.0, и большая часть трафика Google уже использует этот протокол. Он еще не опубликован как RFC, однако.

может быть, просто немного мелочи, но UPnP будет использовать HTTP-форматированные сообщения через UDP для обнаружения устройств.

да, HTTP, как протокол приложения, может быть передан через транспортный протокол UDP. Вот некоторые из сервисов, которые используют UDP и базовый протокол для передачи данных HTTP и потоковой передачи их конечному пользователю:

  • XMPP и звенят сырье транспорт UDP метод
  • номер для служб, использующих протокол передачи данных на основе UDT - - - UDP, который является надмножеством протокола UDP.
  • инкапсуляция протокола безопасности транспортного уровня (TLS HTTP, а также вышеупомянутые XMPP и другие протоколы приложений имеют реализацию, которая использует UDP на своем транспортном уровне; эта реализация называется datagram Transport Layer Security (DTLS).
  • Push-уведомления в GNUTella-это HTTP-запросы, отправленные через UDP-транспорт.

эта статья содержит дополнительную информацию о потоковой передаче по UDP и его надежном надмножестве, RUDP:надежный UDP (RUDP): следующая большая потоковая передача Протокол?

конечно, это не обязательно должно быть передано через TCP. Я реализовал HTTP поверх UDP,для использования в индустрии спутникового телевидения.

может быть, какие-то изменения на эту тему с QUIC

QUIC (Quick UDP Internet Connections, произносится быстро) - это экспериментальный сетевой протокол транспортного уровня, разработанный Google и реализованный в 2013 году. QUIC поддерживает набор мультиплексированных соединений между двумя конечными точками по протоколу пользовательских дейтаграмм (UDP) и был разработан для обеспечения защиты, эквивалентной TLS / SSL, наряду с уменьшением задержки соединения и транспорта, а также пропускной способности оценки в каждом направлении, чтобы избежать заторов. Основная цель QUIC-оптимизировать веб-приложения, ориентированные на подключение, которые в настоящее время используют TCP.

попробуйте запустить сервер на основе протокола UDP с узлов httpp:

https://github.com/InstantWebP2P/node-httpp

Если вы потоковое mp3 или видео, которое не обязательно может быть через HTTP, на самом деле я был бы удивлен, если бы это было. Вероятно, это будет другой протокол через TCP, но я не вижу причин, по которым вы не можете передавать поток через UDP.

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

чтобы ответить на ваш вопрос, нет, HTTP не использует UDP. За то, что вы говорите, хотя, MP3 / Video streaming может произойти через UDP и, на мой взгляд, никогда не должно происходить через HTTP.

ответ: да

причина: см. модель OSI.

объяснение:

HTTP-это протокол прикладного уровня, который может быть инкапсулирован протоколом, использующим UDP, обеспечивая, возможно, более быструю надежную связь, чем TCP. Демон сервера и клиент, очевидно, должны поддерживать этот новый протокол. Протокол Quake 2 доказывает, что UDP может использоваться через TCP для обеспечения основы для структурированного система связи, обеспечивающая управление потоком (например, идентификаторы блоков).

http over udp используется некоторыми реализациями торрент-трекера (и supporteb всеми основными клиентами)

теоретически да можно использовать UDP для http, но это может быть проблематично. Скажем, например, в вашем примере потоковое mp3 или видео будет проблема упорядочения, и некоторые биты могут пропасть без вести, поскольку UDP не ориентирован на соединение, нет механизма повторной передачи.

UDP является лучшим протоколом для потоковой передачи, потому что он не предъявляет требований к отсутствующим пакетам, таким как TCP. И если он не предъявляет требований, поток намного быстрее и без какой-либо буферизации.

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

таким образом, TCP-это протокол слишком продвинутый, чтобы использовать его для потоковой передачи.

Я думаю, что в некоторых ответах отсутствует важный момент. Выбор между UDP и TCP должен не зависит от типа данных (например, аудио или видео) или от того, начинает ли приложение воспроизводить их до завершения передачи ("потоковая передача"), но является ли это реальном времени. Данные в реальном времени (по определению) чувствительны к задержке, поэтому их часто лучше всего отправлять по протоколу RTP/UDP (Real Time Protocol over UDP).

задержка не является проблемой с сохраненными данными из файл, даже если это аудио и / или видео, поэтому он, вероятно, лучше всего передается по TCP, поэтому любые потери пакетов могут быть исправлены. Отправитель может читать вперед и держать сетевой канал полным, а приемник также может использовать много буферизации воспроизведения, чтобы он не прерывался случайной повторной передачей TCP или мгновенным замедлением сети. Предельный случай - это когда вся запись передается до начала воспроизведения. Это исключает любой риск остановки воспроизведения, но часто непрактичный.

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

Comments

    Ничего не найдено.