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

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

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

Например:

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


person Sesh    schedule 27.11.2008    source источник
comment
Что вы имеете в виду под "Интернетом"? Вы имеете в виду использование браузера? Или через общедоступный Интернет?   -  person benc    schedule 24.09.2009
comment
Я хотел спросить, что есть mp3, размещенный по URL-адресу, например, someserver / somemusic.mp3. Если это передается на любой клиент - браузер, устройство и т. Д., Как http передает это. Если я правильно понимаю приведенные ниже ответы, это делегируется RTP.   -  person Sesh    schedule 25.09.2009
comment
Порт 80 UDP также зарезервирован для HTTP, что я считаю забавным, поскольку я никогда не видел, чтобы он использовался, и я не мог представить себе хорошего его использования.   -  person Joshua    schedule 06.12.2010
comment
Это зарезервировано, потому что у комитета IANA более гибкое воображение, чем у вас. ;-) Они думают, что это могло бы быть хорошим применением. Кроме того, если не зарезервировать порт 80 для UDP / HTTP, он останется открытым для какого-либо другого протокола UDP, что вызовет путаницу при разговоре о порте 80.   -  person Jesse Chisholm    schedule 27.01.2015


Ответы (15)


Обычно нет.

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

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

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

person unwind    schedule 27.11.2008
comment
Очевидно, что это неправильно, в HTTP нет ничего, что препятствовало бы потоковой передаче, это просто не так эффективно, как был бы выделенный протокол. HTTP Dyanmic Streaming с использованием чанков: http://www.adobe.com/products/httpdynamicstreaming/ HTTP Pseudo-Streaming: longtailvideo .com / support / jw-player / jw-player-for-flash-v5 /. - person Steve-o; 07.07.2010
comment
потоки YouTube через http. - person nos; 09.06.2011
comment
@ snowcrash09 Даже сам удалить не могу, так как принято. Это странно. Переписал, надеюсь теперь меньше обидно. - person unwind; 02.05.2012
comment
Просто педантично в отношении HTTP и потоковой передачи - еще в темные времена видео QuickTime было server push, где HTTP-соединение отправляло MJPEG (несколько изображений JPEG), каждое как отдельная часть многостраничного ответа MIME на HTTP-запрос. Каждое изображение JPEG приходит и заменяет предыдущее на дисплее. Но вы правы, @unwind, сегодня это делается редко, так как RTP / RTSP работает лучше. - person Jesse Chisholm; 27.01.2015
comment
@nos Youtube не транслируется. Браузер загружает файл в кеш и начинает воспроизведение с файла до того, как он будет полностью загружен. Хотя это имитирует потоковую передачу, это не так. - person SimonStiph; 16.10.2015
comment
Не уверен, насколько авторитетен этот сайт, но что этот сайт поддерживает - person Abdul; 14.09.2016
comment
Новый HTTP / 3. - person ; 09.04.2020

Из RFC 2616:

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

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

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

person Alnitak    schedule 27.11.2008
comment
Существуют ли какие-либо веб-серверы, которые можно настроить для приема соединений, отличных от TCP? - person Spidey; 10.11.2009
comment
Здесь есть модификация apache pel.cis.udel.edu для использования протокола SCTP вместо TCP. - person nos; 09.06.2011
comment
@nos Ага, и у Google тоже есть SPDY. Однако оба являются надежными транспортными механизмами. - person Alnitak; 09.06.2011
comment
@Alnitak SPDY - это протокол прикладного уровня, а не протокол транспортного уровня. - person Walking Wiki; 26.02.2012
comment
@WalkingWiki, конечно, вы правы - в этом контексте SPDY заменяет HTTP, а не TCP. - person Alnitak; 03.06.2012
comment
Google экспериментирует с SPDY через UDP, чтобы уменьшить задержку, они называют это QUIC. Сборка Chrome dev поддерживает это. Не знаю, какие веб-серверы его используют. blog.chromium.org/2013/06/experimenting-with-quic. html - person Colonel Panic; 05.07.2013
comment
@ColonelPanic да, я это видел - стоит следить! - person Alnitak; 05.07.2013
comment
Согласно следующей статье в Википедии, SPDY - это сеансовый уровень: en.wikipedia.org/wiki/OSI_model - person Memet Olsen; 20.11.2013
comment
@MemetOlsen, возможно, вы правы, но в наши дни вряд ли кто-то говорит о уровнях 5 и 6 модели OSI ... - person Alnitak; 20.11.2013

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

person Frank Schwieterman    schedule 27.11.2008
comment
Чтобы быть более конкретным, часть UPnP, которая использует UDP и HTTP-подобные сообщения, называется SSDP (Simple Service Discovery Protocol). Структура сообщения такая же, но набор METHOD другой. После этого UPnP использует другие протоколы (и обычно TCP) для всего остального. - person Jesse Chisholm; 27.01.2015

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

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

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

person Exotic Hadron    schedule 09.02.2013
comment
Другой вопрос: поддерживают ли основные веб-браузеры веб-страницы HTTP через UDP? - person user2284570; 15.05.2015
comment
да, потому что HTTP находится на уровне приложений, а UDP - на транспортном уровне. браузеры не записывают пакеты TCP или UDP. Они также не пишут IP-пакеты. Это обрабатываются ОС и драйверами. Уровень Ethernet настолько низкий, что в этот момент он может быть в микросхеме, близком к MAC. - person yan bellavance; 09.12.2016
comment
@yanbellavance, это совершенно неверно. Хотя браузеры и веб-серверы действительно не генерируют необработанные фреймы TCP (ни UDP, если на то пошло), они действительно должны выбрать транспорт для использования, а для обычного HTTP это всегда ПТС. Однако более новый псевдопротокол QUIC использует UDP. - person Alnitak; 27.09.2018

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

person jkc    schedule 06.11.2012

Возможно, некоторые изменения по этой теме с помощью QUIC

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

person Sébastien    schedule 29.04.2015

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

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

Чтобы ответить на ваш вопрос, нет, HTTP НЕ использует UDP. Тем не менее, о чем вы говорите, потоковая передача mp3 / видео МОЖЕТ происходить через UDP и, на мой взгляд, никогда не должна происходить через HTTP.

person Henry B    schedule 27.11.2008
comment
Потоковая передача через HTTP обычно называется (что я считаю наиболее точной) псевдопотоковой передачей - регулируемой скоростью передачи данных через HTTP. Как и многое в нашем мире, маркетологи злоупотребляют номенклатурой, в результате чего люди, ориентированные на детали, как мы, цепляются за особенности. - person Stu Thompson; 17.12.2008

Ответ: да

Причина. См. модель OSI.

Объяснение:

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

person savvy    schedule 05.12.2010
comment
Вы не можете победить TCP вручную без большего количества информации, чем вы должны иметь на этом уровне. - person Joshua; 29.12.2010
comment
UDP можно использовать поверх TCP. Они оба являются протоколами транспортного уровня, так что это один или другой. - person opyate; 27.02.2012

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

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

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

person Phil Karn    schedule 03.09.2018

Попробуйте запустить HTTP через UDP с помощью node-httpp:

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

person sequoiar    schedule 28.10.2012

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

person user2946342    schedule 01.11.2013
comment
Пожалуйста, включите ссылки в поддержку ваших утверждений. - person Max Leske; 02.11.2013
comment
Я читал, что протокол Torrent UDP Tracker является двоичным и НЕ отформатирован как HTTP. xbtt.sourceforge.net/udp_tracker_protocol.html - person Jesse Chisholm; 27.01.2015

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

person HM Manya    schedule 10.09.2015
comment
Хорошо упомянуто: UDP is not connection oriented there is no retransmit mechanism. - person ivanleoncz; 09.02.2018

(Это старый вопрос, но он заслуживает обновленного ответа.)

По всей вероятности, HTTP / 3 будет использовать протокол QUIC, который описывается как

мультиплексированный транспорт через UDP

Итак, с определенной точки зрения, вы могли говорят, что HTTP / 3 будет использовать UDP.

person jub0bs    schedule 09.01.2019

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

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

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

person Pavel    schedule 27.12.2010
comment
это не отвечает на вопрос, однако это может быть поводом для ответа. - person Hawken; 03.06.2012
comment
re: лучший протокол для потоковой передачи, учитывая, что скорость отдельных фрагментов данных важнее, чем прохождение всех данных. Если ваш поток не может легко восстановить из-за отсутствующих фрагментов, вам лучше использовать TCP. Многие протоколы безопасности видео выбирают TCP по этой причине - надежность важнее чистой скорости. - person Jesse Chisholm; 27.01.2015

HTTP / 3 (также известный как QUIC) использует UDP вместо TCP.

https://http3-explained.haxx.se/en/the-protocol/feature-udp

person John Zhau    schedule 30.06.2021