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

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

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

Например:

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

Ответ 1

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

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

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

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

Ответ 2

Из RFC 2616:

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

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

РЕДАКТИРОВАТЬ - совсем недавно протокол QUIC (точнее, псевдотранспорт или протокол уровня сеанса) использует UDP для передачи трафика HTTP/2.0, и большая часть трафика Google уже использует этот протокол. Это еще не опубликовано как RFC, хотя.

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

Может быть, некоторые изменения в этой теме с QUIC

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

Ответ 7

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

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

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

Ответ 9

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

Ответ 10

Ответ: Да

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

Explaination:

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

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

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

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

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