Использует ли webrtc http

Открытие нового соединения TCP для каждого запроса стало проблемой, когда сеть развивалась. Мы начали создавать полные приложения вместо простых веб -страниц, а количество носителей и файлов, которые необходимо для поиска браузера, стало больше. Представьте себе типичное веб -приложение, которое требует файла HTML, CSS и Javascript, а также различные изображения и другие активы. Для каждого файла нужно было сделать новое соединение.

Webrtc vs http -потоковая передача

ВОЗМОЖНО, АДРЕСАНА Экттрон, в то время как.

-Обсудить webrtc

Я экспериментировал с протоколами потоковой передачи WEBRTC и HTTP (HLS, MPEG-DASH) для потоковой передачи видео в течение нескольких дней и обнаружил, что, хотя у WEBRTC достигает второго задерже. Поэтому у меня есть несколько вопросов, связанных с потоковой передачей WEBRTC против HTTP.

1. Как WEBRTC может достигать второго задержки по сравнению с протоколами потоковой передачи HTTP?

WEBRTC может достичь второго задержки по сравнению с протоколами потоковой передачи HTTP из-за возможности связи в реальном времени (RTC). WEBRTC создан для предоставления приложений с мгновенной передачей видео, аудио и других данных между сверстниками. Это допускает практически мгновенную передачу содержания, что приводит к второму задержке.

2. Если WEBRTC уже обеспечивает потоковую передачу видео с низкой задержкой, почему есть усилия по объединению протоколов потоковой передачи HTTP в соответствии с стандартом MPEG-Dash?

Усилия по объединению протоколов потоковой передачи HTTP в соответствии с стандартом MPEG-Dash обусловлены необходимостью стандартизированного подхода к потоковой передаче на основе HTTP. Хотя WEBRTC предоставляет потоковую передачу видео с низкой задержкой, он не подходит для всех вариантов использования и может быть совместимы со всеми устройствами и программным обеспечением. Объединив протоколы потоковой передачи HTTP в соответствии с стандартом MPEG-DASH, поставщикам контента становится легче доставлять высококачественные видеопотоки на разных платформах и устройствах, обеспечивая постоянный опыт просмотра для пользователей.

3. Как WEBRTC по сравнению с RTMP? (Я до сих пор не изучал RTMP, но я хочу знать, возможно ли достичь задержек на субсекунде с RTMP)

WEBRTC и RTMP – это протоколы, используемые для потоковой среды, но они имеют некоторые различия с точки зрения задержки и совместимости. WEBRTC предназначен для общения в реальном времени и может достичь задержек на второй второй. С другой стороны, RTMP (протокол обмена сообщениями в реальном времени)-это протокол, в основном используемый для потокового звука, видео и данных между кодером и потоковым сервером. В то время как RTMP может обеспечить потоковую передачу с низкой задержкой, достижение субсекундных задержек может зависеть от различных факторов, таких как условия сети и конфигурации сервера.

Сравнительное исследование между потоковой передачей на основе WEBRTC и HTTP

В течение долгого времени снижение потоковой задержки было популярной темой. Известно, что задержки десятков секунд и даже на одну минуту возникают с потоковой передачей на основе HTTP в прошлом. С традиционной задержкой вещания в однозначные секунды и новые решения, такие как WEBRTC Development Services, Вопрос в том, какой подход принять. Потоковая передача WEBRTC способна доставлять видео не только на подсекундах, но и в менее чем 500 миллисекундах. В настоящее время это самая низкая технология потоковой передачи, обеспечивая практически мгновенную передачу.

В этом изящном руководстве мы посмотрим, как работает Webrtc, и сравним его с HTTP с точки зрения Служба потоковой передачи видео. Давайте начнем!

Потоковая передача HTTP и WEBRTC


Быстрое краткое изложение потоковой передачи и webrtc на основе HTTP

Протоколы на основе HTTP-это технически регулярные веб-серверы, отправляющие прогрессивные загрузки. Они используют адаптивную потоковую передачу битрейта для обеспечения максимально возможного качества видео и просмотра, независимо от соединения, программного обеспечения или устройства. Некоторые из наиболее распространенных протоколов на основе HTTP включают Mpeg-Dash, Apple’S HLS, Adobe HDS и Microsoft Smoothing Streaming.

Webrtc – это надежный протокол, который поддерживается отличными инструментами и широко распространенной отраслью поддержки. Он был создан для предоставления приложений с возможностями связи в реальном времени (RTC), что позволяет передавать видео, аудио или любое другое тип данных между аналогами. Это ключевое различие между ними по сравнению с потоковой передачей на основе HTTP, которая ориентирована на клиенту.

UDP против. TCP

Основные компоненты интернет -протокола, протокол Datagram пользователя (UDP) и протокол управления передачей (TCP), оба находятся на транспортном уровне.

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

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

Протоколы, такие как WEBRTC, часто используют UDP, тогда как протоколы на основе HTTP используют TCP.

Как складывается Webrtc по сравнению с потоковой передачей на основе HTTP?

  • Какой тип задержки вы ищете?
  • Каков будет размер аудитории?
  • Какую максимальную сумму вы готовы потратить?

Задержка

Ответы на вопросы задержки зависят от диапазона задержек, к которым вы стремитесь.

Новый и улучшенный HLS, такой как LL-HLS и LL-Dash, имеет 3 секунду или меньше задержки. Это все еще считается быстро, и этого будет достаточно для большинства случаев использования с низкой задержкой. Webrtc, с другой стороны, остается самым быстрым решением, если ваш вариант использования требует потоковой передачи в реальном времени. Поскольку это протокол UDP, разработанный для полной адаптации к современному Интернету. Он поддерживает 500 мс задержки в реальном времени.

WEBRTC был разработан для обеспечения двунаправленной связи в реальном времени. В отличие от HLS, который основан на TCP, WEBRTC основан на UDP. Это означает, что WEBRTC может начать без клиента и сервера, не обмениваясь какой -либо информацией рукопожатия. В результате WEBRTC быстрее, но также делает его более восприимчивым к колебаниям сети.

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

По сравнению с HLS, масштабирование WEBRTC значительно сложнее. Тем не менее, это может быть решено с помощью гибридного рабочего процесса. Ваш выбор будет определяться вашим вариантом использования и целевым размером аудитории.

Когда дело доходит до достижения массовой аудитории, протоколы на основе HTTP выходят на вершину.

Использует ли webrtc http

Открытие нового соединения TCP для каждого запроса стало проблемой, когда сеть развивалась. Мы начали создавать полные приложения вместо простых веб -страниц, а количество носителей и файлов, которые необходимо для поиска браузера, стало больше. Представьте себе типичное веб -приложение, которое требует файла HTML, CSS и Javascript, а также различные изображения и другие активы. Для каждого файла нужно было сделать новое соединение.

Webrtc vs http -потоковая передача

ВОЗМОЖНО, АДРЕСАНА Экттрон, в то время как.

-Обсудить webrtc

Я экспериментировал с протоколами потоковой передачи WEBRTC и HTTP (HLS, MPEG-DASH) для потоковой передачи видео в течение нескольких дней и обнаружил, что, хотя у WEBRTC достигает второго задерже. Поэтому у меня есть несколько вопросов, связанных с потоковой передачей WEBRTC против HTTP.

1. Как WEBRTC может достигать второго задержки по сравнению с протоколами потоковой передачи HTTP?

2. Если WEBRTC уже обеспечивает потоковую передачу видео с низкой задержкой, почему есть усилия по объединению протоколов потоковой передачи HTTP в соответствии с стандартом MPEG-Dash?
3. Как WEBRTC по сравнению с RTMP? (Я до сих пор не изучал RTMP, но я хочу знать, возможно ли достичь задержек на субсекунде с RTMP)

Сравнительное исследование между потоковой передачей на основе WEBRTC и HTTP

В течение долгого времени снижение потоковой задержки было популярной темой. Известно, что задержки десятков секунд и даже на одну минуту возникают с потоковой передачей на основе HTTP в прошлом. С традиционной задержкой вещания в однозначные секунды и новые решения, такие как WEBRTC Development Services , Вопрос в том, какой подход принять. Потоковая передача WEBRTC способна доставлять видео не только на подсекундах, но и в менее чем 500 миллисекундах. В настоящее время это самая низкая технология потоковой передачи, обеспечивая практически мгновенную передачу.

В этом изящном руководстве мы посмотрим, как работает Webrtc, и сравним его с HTTP с точки зрения Служба потоковой передачи видео . Давайте начнем!

Потоковая передача HTTP и WEBRTC


Быстрое краткое изложение потоковой передачи и webrtc на основе HTTP

Протоколы на основе HTTP-это технически регулярные веб-серверы, отправляющие прогрессивные загрузки. Они используют адаптивную потоковую передачу битрейта для обеспечения максимально возможного качества видео и просмотра, независимо от соединения, программного обеспечения или устройства. Некоторые из наиболее распространенных протоколов на основе HTTP включают Mpeg-Dash, Apple’S HLS, Adobe HDS и Microsoft Smoothing Streaming.

Webrtc – это надежный протокол, который поддерживается отличными инструментами и широко распространенной отраслью поддержки. Он был создан для предоставления приложений с возможностями связи в реальном времени (RTC), что позволяет передавать видео, аудио или любое другое тип данных между аналогами. Это ключевое различие между ними по сравнению с потоковой передачей на основе HTTP, которая ориентирована на клиенту.

UDP против. TCP

Основные компоненты интернет -протокола, протокол Datagram пользователя (UDP) и протокол управления передачей (TCP), оба находятся на транспортном уровне.

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

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

Протоколы, такие как WEBRTC, часто используют UDP, тогда как протоколы на основе HTTP используют TCP.

Как складывается Webrtc по сравнению с потоковой передачей на основе HTTP?

  • Какой тип задержки вы ищете?
  • Каков будет размер аудитории?
  • Какую максимальную сумму вы готовы потратить?

Задержка

Ответы на вопросы задержки зависят от диапазона задержек, к которым вы стремитесь.

Новый и улучшенный HLS, такой как LL-HLS и LL-Dash, имеет 3 секунду или меньше задержки. Это все еще считается быстро, и этого будет достаточно для большинства случаев использования с низкой задержкой. Webrtc, с другой стороны, остается самым быстрым решением, если ваш вариант использования требует потоковой передачи в реальном времени. Поскольку это протокол UDP, разработанный для полной адаптации к современному Интернету. Он поддерживает 500 мс задержки в реальном времени.

WEBRTC был разработан для обеспечения двунаправленной связи в реальном времени. В отличие от HLS, который основан на TCP, WEBRTC основан на UDP. Это означает, что WEBRTC может начать без клиента и сервера, не обмениваясь какой -либо информацией рукопожатия. В результате WEBRTC быстрее, но также делает его более восприимчивым к колебаниям сети.

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

По сравнению с HLS, масштабирование WEBRTC значительно сложнее. Тем не менее, это может быть решено с помощью гибридного рабочего процесса. Ваш выбор будет определяться вашим вариантом использования и целевым размером аудитории.

Когда дело доходит до достижения массовой аудитории, протоколы на основе HTTP выходят на вершину. Пока “CDNS” Для webrtc существует, стоимость часто является непомерно высокой.

Расходы

Webrtc-это бесплатный протокол с открытым исходным кодом. Но помните, как мы говорили о масштабировании WEBRTC? Это вполне возможно, и он работает эффективно во многих случаях использования, но это не дешево. Если вам не нужно транслировать сотни людей, Webrtc – отличный вариант. Однако, если вы хотите добраться до большой аудитории, вам придется потратить деньги на дополнительные серверы, чтобы уменьшить бремя в браузере.

HLS, пожалуй, самый экономически эффективный метод доставки видео. Масштабирование с помощью CDN легко оправдано с точки зрения затрат, поскольку в нем используются доступные инфраструктуры HTTP и текущую сетевую технологию на основе TCP.

Заключение

За последние пару лет протокол на основе HTTP и WEBRTC прошли долгий путь. Несмотря на факт, это оба передовые технологии, которые продвигают отрасль вперед, у каждого есть свой собственный набор преимуществ и недостатков. Ни один выбор не идеален для всех, но один из них может подойдет вам лучше всего подходит для вас.

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

Любопытно найти лучшее решение для вас? Свяжитесь с нашими экспертами по потоковой передаче видео в прямом эфире!

Http, websocket, grpc или webrtc: какой протокол связи лучше всего подходит для вашего приложения?

Активируйте свою 30-дневную бесплатную пробную версию сегодня и начните прототипирование.

  • Создайте видеочат
  • Что такое SFU
  • Протоколы потоковой передачи видео
  • P2P видеоконференция

Поделиться статьей на:

При выборе протокола связи для ваших приложений есть множество различных вариантов. В этом посте мы’LL взгляните на четыре популярных решения: Http, WebSocket, grpc, и Webrtc. Мы рассмотрим каждый протокол, исследуя технологию, стоящую за ней, что оно’лучше используется для его сильных и слабых сторон.

· Опубликовано 26 сентября 2022 г

Http vs websockets vs grpc против webrtc - протоколы связи

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

В будущем мы можем даже перевести встречи и вечеринки по случаю дня рождения в VR (надеюсь, это просто шутка!). Но лучшая форма общения всегда будет зависеть от ситуации.

Быстрое текстовое сообщение иногда лучше длинного электронного письма. В других случаях видеозвонок с командой – лучший способ обмена информацией. Напротив, важные страховые документы должны быть отправлены по регулярной почте и доставлены в жесткой копии.

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

Обзор

В этой статье мы’LL Compe Some Popular Протоколы связи Мы можем использовать в качестве разработчиков и исследовать плюсы и минусы различных вариантов. Нет решения лучше, чем другое – есть только некоторые, которые лучше для конкретного приложения или проблемы.

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

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

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

Что такое протокол связи?

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

Протоколы, обсуждаемые в этой статье, определяют, как программное обеспечение для приложений будет взаимодействовать друг с другом. Разные протоколы придерживаются разных правил, и это’необходимо для понимания сильных сторон и ограничений каждого. В этой статье вы’LL узнайте о следующих протоколах:

Протоколы связи - временная шкала

Http (Протокол переноса гипертекста) – это протокол применения для распределенных, совместных и гипермедийных информационных систем. HTTP является основой передачи данных для World Wide Web. Гипертекст – это структурированный текст, который использует логические ссылки (гиперссылки) между узлами, содержащими текст. HTTP является протоколом для обмена или передачи гипертекста.

Http/2 был разработан для устранения недостатков оригинального протокола HTTP и повышения производительности. Http/2 быстрее и эффективнее, чем http/1.1, и он поддерживает мультиплексирование, чтобы позволить мультиплексению нескольких запросов и ответов по одному соединению. Другие примечательные функции включают сжатие заголовка и нажатие на сервер. Это’Постепенно становится протоколом по умолчанию для веб -трафика.

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

grpc Современная рамка RPC с открытым исходным кодом, которая использует HTTP/2 для транспорта. Это отличный выбор для приложений, которые должны сделать много небольших, быстрых вызовов API. GRPC генерирует кроссплатформенные привязки клиента и сервера для многих языков, что позволяет клиентскому приложению напрямую вызовать метод на приложении сервера на другой машине, как если бы он был локальным объектом.

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

Понимание TCP и UDP

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

TCP (протокол управления передачей) это стандарт, который определяет, как установить и поддерживать сетевой разговор через Интернет. TCP является наиболее часто используемым протоколом в Интернете и любой сети, ориентированной на соединение. Когда вы просматриваете Интернет, ваш компьютер отправляет пакеты TCP на веб -сервер. Веб -сервер отвечает, отправляя пакеты TCP обратно на ваш компьютер. Сначала установлено соединение между двумя устройствами перед обменой каких -либо данных, и TCP использует исправление ошибок, чтобы убедиться, что все пакеты будут успешно доставлены. Если пакет будет потерян или поврежден, TCP попытается отправить его.

UDP (протокол Datagram пользователя) это бессмысленный, ненадежный протокол транспортного уровня. Это не требует установления или обслуживания соединения, и не гарантирует, что сообщения будут доставлены в порядке. Это означает, что может быть некоторая потеря данных, если пакет не отправляется или если он’S испортился. UDP часто используется для потоковых средств массовой информации или приложений в реальном времени, где пакеты сброшены менее проблематичны, чем обеспечение доставки.

Http/1

Это’S, важно иметь базовое понимание основания всех интернет -коммуникаций и передачи данных на уровне приложений – HTTP (протокол передачи гипертекста).

Понимание http/1 и его ограничения также будут важными, прежде чем мы сможем изучить другие протоколы более подробно и в полной мере оцените то, что они предоставляют.

С HTTP клиенты и серверы общаются, обменивая отдельные сообщения. Сообщения, которые отправляет клиент, называются запросами, а сообщения, отправленные сервером, называются ответами. Эти сообщения отправляются в виде регулярных текстовых сообщений через соединение TCP. Они также могут быть зашифрованы с помощью TLS и отправлены с помощью протокола HTTPS.

Клиент, как правило, будет веб -браузером или приложением, работающим на пользователе’S Телефон или компьютер, но технически это может быть что угодно, например, сценарий, который сканирует веб -сайты.

HTTP -запросы могут течь только в одном направлении, от клиента на сервер. У сервера нет возможности инициировать связь с клиентом; он может ответить только на запросы.

Http/1.1 Пример запроса/ответа

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

Однако этот протокол расширился таким образом, что он не был изначально предназначен. В следующих разделах мы’LL Изучите некоторые из http/1’S ограничения.

Http/1 в реальном времени

HTTP/1 неэффективен, когда сообщения должны быть отправлены в режиме реального времени от клиента на сервер и наоборот. Например, если на сервере доступна новая информация, которую необходимо поделиться с клиентом, эта транзакция может произойти только после того, как клиент инициирует запрос.

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

Короткий опрос

Короткий опрос HTTP – это метод, при котором клиент неоднократно отправляет запросы на сервер, пока не ответит новыми данными. Как только он получает данные, он снова запускает процесс и неоднократно спрашивает, пока что -то еще не будет доступно.

Http короткий опрос

Это неэффективная коммуникационная стратегия в реальном времени, так как она тратит много ресурсов, постоянно передавая и анализируя HTTP-запросы/ответы.

Длинный опрос

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

Http long опросы

Длительный опрос более эффективен, чем короткие опросы, но не является оптимальным решением для общения в реальном времени.

Серверные события (SSE)

Сервер, отправленные события, позволяет клиенту удерживать подключение и получать обновления (push-сообщения) с сервера в режиме реального времени, без необходимости постоянно опросить сервер для новых данных. Это одностороннее соединение, поэтому вы не можете отправлять события из клиента на сервер.

SSE – это стандарт, описывающий, как серверы могут инициировать передачу данных по отношению к клиентам после установки начального клиентского соединения.

Проблема производительности с http/1

Большинство потоков данных HTTP состоят из небольших, взрывающих передач данных, тогда как TCP оптимизирован для долгоживущих соединений и объемных передач данных. Время обработки в сети является ограничивающим фактором в пропускной способности TCP и производительности в большинстве случаев. Следовательно, задержка – это узкое место в производительности, и большинство веб -приложений предоставляют ее.

Вышеуказанное означает, что TCP, который использует HTTP, был создан для обработки долгоживущих соединений и передачи многих данных. Http/1, с другой стороны, откроет кучу коротких соединений TCP и обычно отправляет только небольшие кусочки данных.

Блокировка головы

Проблема с производительностью с http/1.0 – это то, что вам нужно открыть новое соединение TCP для каждого запроса/ответа. Это не было проблемой для того, для чего HTTP был изначально изобретен – чтобы получить гипертекстовый документ. Часть документа важна, потому что HTTP не предназначался для “гипермедиа”.

Открытие нового соединения TCP для каждого запроса стало проблемой, когда сеть развивалась. Мы начали создавать полные приложения вместо простых веб -страниц, а количество носителей и файлов, которые необходимо для поиска браузера, стало больше. Представьте себе типичное веб -приложение, которое требует файла HTML, CSS и Javascript, а также различные изображения и другие активы. Для каждого файла нужно было сделать новое соединение.

Поступает http/1.1, которые имеют постоянные соединения, которые определяют, что мы можем иметь более одного запроса или ответа на одном и том же соединении TCP.

Это решение определенно улучшение, но оно не позволяет серверу отвечать несколько ответов одновременно. Это’S сериализованный протокол, где вы должны отправить запрос и ждать ответа, затем отправить второй запрос и так далее. Это известно как блокировка головы линии.

Однако возможно достичь некоторого параллелизма, так как браузер может открыть до шести соединений TCP с тем же происхождением – где “источник” определяется как уникальная комбинация хозяин и порт число.

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

Естественно, программисты нашли легкий обходной путь – изменяя происхождение. Вместо того, чтобы размещать все активы на одном и том же происхождении, вы размещаете шесть изображений на одном происхождении, а остальное на другом. Теперь у вас может быть 12 одновременных запросов (или открыть соединения TCP). Это называется как “Шарь”.

  • Изображений 1-6 размещены на 1.изображений.компонент
  • Изображений 7-12 размещены 2.изображений.компонент

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

Есть также и другие проблемы, так как каждое соединение TCP добавляет ненужные накладные расходы на сервер. Подключения конкурируют друг с другом, каждое рукопожатие TCP и TLS добавляет ненужные затраты, и другие ресурсы сервера/прокси должны использоваться для поддержания активных соединений. Существует четкое ограничение в том, как HTTP/1 использует базовые соединения TCP.

Заголовки и печенье раздуваются

Другая проблема заключается в том, что по мере развития HTTP в спецификацию было добавлено больше заголовков. Разработчики также имеют возможность добавить файлы cookie в заголовки, и они могут быть произвольно большими. Это добавляет много раздувания, так как каждый запрос и ответ должны передавать всю эту текстовую информацию и http/1.1 не включает механизм сжатия заголовков и метаданных.

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

Приоритет

С http/1.1, браузеры “расставлять приоритеты” Ресурсы, удерживая приоритетную очередь на клиента и приняв образованные предположения о том, как лучше использовать доступные соединения TCP. Браузеры встроили эвристику для определения, какие ресурсы более ценны, чем другие.

Например, загрузка CSS будет иметь более высокий приоритет, чем загрузка изображений.

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

Http/2

HTTP/2 – это улучшенная версия протокола HTTP и решает все проблемы с производительностью, изложенные выше с HTTP/1 и добавляет другие улучшения без изменения какой -либо семантики (глаголы, заголовки и т. Д.).

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

Некоторые другие преимущества http/2:

  • Использует сжатие заголовка, чтобы уменьшить размер заголовков, что избегает отправки тех же самых простых текстовых заголовков снова и снова. Это значительно уменьшает накладные расходы/ответы и объем отправленных данных.
  • Позволяет приоритетам, позволяя клиенту (разработчику) указать приоритет необходимых ресурсов. Это’S также возможно обновить приоритет текущих запросов – например, при прокрутке, если изображение больше не видно, приоритет может измениться.
  • Использует Server Push для отправки данных клиенту, прежде чем он запрашивает его. Это может быть использовано для улучшения времени загрузки путем устранения необходимости для клиента для получения нескольких запросов.

Как работает HTTP/2?

Базовый протокол в HTTP/2 – это рамка. Этот новый бинарный механизм кадрирования меняет, как данные обмениваются между клиентом и сервером.

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

Http/1,1 против запроса HTTP/2

А рамка это наименьшая единица связи, которая несет определенный тип данных.

Некоторые другие примеры кадров:

  • Настройки: настройки обмена в начале или во время соединения.
  • Приоритет: переназнайте приоритет для сообщений.
  • Push_promise: позволяет серверу нажимать данные для вас – это выполняет обещание того, что будет отправлять сервер. Например, если вы запросите индекс.HTML, сервер может создать push_promise, который обещает натолкнуть приложение.JS и стили.CSS, что означает, что клиенту не нужно запрашивать эти ресурсы.

Рамы объединены, чтобы сформировать сообщение, Например, заголовок и кадр данных на изображении выше. Это приравнивается к нормальному запросу или ответу.

Затем, наконец, серия Сообщения может быть частью транслировать. Это обеспечивает двунаправленный поток данных между клиентом и сервером и полный запрос и мультиплексирование ответа.

HTTP/2 несколько потоков

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

Http/2 потока мультиплексирования

Новый двоичный слой кадрирования позволяет клиенту и серверу разбить HTTP -сообщение на независимые рамки, переплетать их, а затем собирать их на другом конце.

Это только краткое изложение того, как http/2.0 работ. Если вы хотите узнать больше и изучить приоритеты, толкание сервера и сжатие заголовка, см. Для истории проблем HTTP/1 и того, как HTTP/2 решает их, посмотрите это видео.

HTTP/2 потоковая передача данных по двунаправленной передаче

  • Одно подключение HTTP/2 может содержать несколько одновременно открытых потоков, с любыми интерристыми рамами конечной точки из нескольких потоков.
  • Потоки могут быть установлены и используются в одностороннем порядке или обмен клиентом или сервером.
  • Потоки могут быть закрыты любой конечной точкой.

Существует много недоразумений с функциональностью нажатия сервера, что позволяет серверу через HTTP/2 активно отправлять ресурсы, которые, как вам могут понадобиться, например, например, .JS и .CSS -файлы, без клиента. Это не имеет ничего общего с двунаправленной потоковой передачей и является лишь методом веб -оптимизации для кэшированных ресурсов.

Что правда, так это то, что с http/2 сервер может’t инициирует а транслировать. Но как только клиент открывает поток, отправив запрос, обе стороны могут отправлять данные рамы над постоянным розеткой в ​​любое время. Отличный пример этого – GRPC, о чем мы обсудим позже.

При HTTP/2 можно достичь двунаправленной потоковой передачи данных, и вы можете утверждать, что это’S более оптимальное решение, чем что -то вроде веб -окетов, или вы можете утверждать, что это не. Мы’LL обсудите это более подробно в разделе WebSocket.

Веб -вагоны

Цель этой технологии состоит в том, чтобы предоставить механизм для приложений на основе браузеров, которые требуют двусторонней связи с серверами, которые не полагаются на открытие нескольких HTTP-соединений (E.г., Использование xmlhttprequest или iframes и длительный опрос).

Веб-токи были изобретены, чтобы включить полнодуплексную связь между клиентом и сервером, что позволяет немедленно перемещаться в обе стороны через одно открытое соединение.

После установки подключения к веб -сокетам клиенту не нужно опросить сервер для обновлений. Вместо этого общение происходит двунаправленно. Это улучшает скорость и возможности в реальном времени по сравнению с исходным длинным и коротким заводом HTTP/1. WebSocket не имеет формата, который он соответствует. Вы можете отправить любые данные, текст или байты – эта гибкость является одной из причин, по которой веб -тока популярны.

Некоторые из них могут показаться знакомыми тем, что мы обсуждали в разделе HTTP/2, но это’Важно отметить, что WebSockets были изобретены задолго до http/2. Мы’ll сравнить их более позже.

Как работают веб -питания

Веб -питания эффективно работают как транспортный слой по TCP.

Чтобы установить соединение WebSocket, клиент и сервер сначала должны выполнить рукопожатие над обычным HTTP/1.1 соединение. Это рукопожатие – мост от http до веб -питания.

Запрос на обновление WebSocket

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

Получить /чат http /1.1 хост: пример.Com: 8000 Обновление: WebSocket Connection: Обновление Sec-Websocket-Key: Dghlihnhbxbszsbub25jzq == sec-websocket-version: 13

Затем сервер завершит рукопожатие специальным ответом, который указывает, что протокол будет переключаться с HTTP на WebSocket:

Http/1.1 101 Обновление протоколов переключения: Подключение к WebSocket: обновление Sec-WebSocket-Accept: S3pplmbitxaq9kygzzhzrbk+xoo =

Веб -вагоны требуют единого идентификатора ресурсов (URI) с помощью схемы WS: // или wss: //. Схема WS: // используется для незашифрованных соединений, а схема WSS: // используется для зашифрованных соединений, аналогично тому, как http -URL -адреса используют http: // или https: // схема.

После установки двухстороннего канала связи клиент и сервер могут отправлять сообщения вперед и назад. Эти сообщения могут быть чем угодно, от двоичных данных до текста. Подключение к WebSocket останется до тех пор, пока не отключит клиент или сервер.

WebSocket Multiplexing

На момент написания протокола WebSocket не поддерживает встроенное мультиплексирование. Мы обсудили мультиплексирование в разделе HTTP/2, и мы узнали, что это’встроенная функция для http/2, и это’возможно иметь несколько потоков, мультиплексированные по одному и тому же соединению. Каждый поток получает уникальный идентификатор, и все отправленные кадры имеют идентификатор, связанный с соответствующим потоком.

Не поддерживать мультиплексирование означает, что протокол WebSocket требует нового транспортного соединения для каждого соединения WebSocket. Например, несколько клиентов, работающих в разных вкладках одного и того же браузера, приведут к отдельным соединениям. Иметь мультиплексирование над веб-токцами-это то, что вам нужно будет реализовать в качестве разработчика или полагаться на сторонний плагин или библиотеку.

WebSocket vs http/2

Итак, HTTP/2 заменил WebSockets? Короткий ответ: нет. Более длинный ответ заключается в том, что http/2 делает возможным двунаправленное потоковое вещание, и в результате веб -тока – не единственный/лучший вариант. Http/2 как спецификация делает для вас больше работы по сравнению с Websockets. Он имеет встроенное мультиплексирование и, в большинстве случаев, приведет к меньшему количеству открытых соединений TCP с исходным. С другой стороны, WebSockets предоставляют большую свободу и не ограничивают то, как данные отправляются между клиентом и сервером после установки соединения. Тем не менее, вам нужно будет управлять переподключением сами (или полагаться на библиотеку, которая делает это для вас).

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

Более подробные и самоуверенные обсуждения, см. Эти вопросы переполнения стека:

  • Сделает ли HTTP/2 webSocket устаревшим
  • Http/2 или веб -питания для клиента с низкой задержкой для сообщений сервера
  • HTTP/2 против веб-нок для потоковой передачи двунаправленных сообщений

Существует также RFC, чтобы разрешить механизм запуска протокола WebSocket через один поток соединения HTTP/2.

Возможность начала загрузки Websockets от HTTP/2 позволяет обмену одному TCP -соединению как по протоколам и расширяет более эффективное использование сети HTTP/2 для веб -сайтов для WebSockets.

Это было реализовано в Chrome и Firefox. Вы можете прочитать документ и мотивацию Chrome Design.

Когда вы должны использовать веб -токеты?

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

  • Приложения чата
  • Многопользовательские игры
  • Совместное редактирование приложений
  • Живой спортивный тикер
  • Заявка на торговлю акциями
  • Деятельность в реальном времени

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

Поддержка веб -билетов хороша и долгое время поддерживается крупными браузерами и клиентами, а также хорошо задокументирован и прост в использовании. Тем не менее, WebSockets не должны быть чрезмерно использованы; В зависимости от того, чего вы хотите, могут быть лучшие альтернативы.

Например, серверные события (SSE) эффективны по HTTP/2 и простые в использовании. SSE не является двунаправленной системой связи; Сервер в одностороннем порядке доживает данные клиенту. Но если все, что вам нужно, это способ для сервера отправлять данные клиенту, это потенциально лучший вариант, чем добавление накладных расходов веб -билетов. SSE также возвращается к http/1.1 Когда HTTP/2 недоступен. Кроме того, клиент (или браузер) управляет подключением для вас и поддерживает автоматическое повторное соединение.

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

grpc

GRPC – это современная высокопроизводительная система удаленного вызова с открытым исходным кодом (RPC), которая может работать в любой среде. Он может эффективно подключать услуги в центрах обработки данных с подключаемой поддержкой для балансировки нагрузки, отслеживания, проверки здоровья и аутентификации. Он также применим в последней миле распределенных вычислений для подключения устройств, мобильных приложений и браузеров для сервисов бэкэнда.

GRPC-это RPC-система, основанная на с открытым исходным кодом, изначально разработанная в Google. GRPC позволяет применениям прозрачно передавать и упрощает построение подключенных систем.

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

Построенный на HTTP/2, GRPC использует такие функции, как двунаправленная потоковая передача и встроенный транспортный уровень безопасности (TLS).

GRPC мотивация

Это’Важно погрузиться в мотивацию GRPC и почему он был изобретен, чтобы понять его преимущества. Почему бы не использовать существующую технологию, которую у нас уже есть: http/2 и веб -билет, например,? Зачем нам нужен еще один слой абстракции поверх того, что у нас уже есть?

Существуют различные способы, которыми данные могут быть структурированы и отправлены через Интернет. Некоторые популярные примеры – мыло, отдых и график. Вы даже можете создать свой собственный протокол, отправлять данные через необработанную TCP и самостоятельно обрабатывать реализацию, если хотите.

Но независимо от того, что вы выберете в качестве своего протокола связи, проблема в том, что вам необходимо убедиться, что клиент и сервер согласятся с протоколом. Например, если вы’Построить API REST, клиентская библиотека, которую вы должны использовать для отправки данных REST, является библиотекой HTTP. Библиотека HTTP встроена в браузер по умолчанию, и браузер обрабатывает все для вас:

  • Он устанавливает связь с сервером.
  • Он обрабатывает http/2 и запасной на http/1. И в будущем нужно будет поддерживать HTTP/3.
  • Он обрабатывает TLS и ведет переговоры с протоколом.
  • Он обрабатывает заголовки, потоки и все остальное.

Но что, если ты’не в браузере? Что если ты’RE приложение Python, работающее на некотором сервере, CLI Golang или приложение Flutter, работающее на iOS? Все эти клиенты нуждаются в собственной библиотеке HTTP, которая понимает протокол, с которым вы общаетесь.

К счастью, многие преданные люди работают над различными библиотеками HTTP для всех этих языков и рамок. На некоторых языках даже есть несколько библиотек HTTP с различными функциями. Все это, однако, поступает по цене – и это обслуживание.

Эта стоимость может повлиять на вас в случае, если вы, например, обновите свой сервер до HTTP/2, если используемая вами библиотека Golang поддерживает его. Но на вашем фронтальном клиенте Python библиотека HTTP эквивалентной HTTP не реализована HTTP/2 или больше не может поддерживать. Различные библиотеки HTTP на других языках нельзя сравнивать 1: 1.

По мере развития HTTP эти библиотеки должны идти в ногу с достижениями, проблемами безопасности, новыми функциями и другими исправлениями. HTTP – это просто пример, и то же самое относится и к протоколу WebSocket или любым другим. Что -то может быть хорошо реализовано в основных браузерах, но эта функциональность должна быть перенесена на несколько разных языков и рамок.

Чем отличается GRPC?

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

Под капотом GRPC использует HTTP/2 в качестве своего протокола, однако эта реализация скрыта от вас. В будущем, сопровождающие GRPC могут легко заменить HTTP/2 на HTTP/3, и вы немедленно выиграете от этого изменения.

GRPC также использует буферы протокола в качестве языка определения интерфейса (IDL) и его основной формат обмена сообщениями. Этот формат является нейтральным языком и позволяет легко общаться между различными языками программирования. Мы’LL изучите эту концепцию больше в следующем разделе.

Общение с клиентом сервера GRPC

Что такое буферы протокола?

Буферы протокола-нейтральный, нейтральный, нейтральный платформ, расширяемый механизм для сериализации структурированных данных-подумайте XML, но меньше, быстрее и проще. Вы определяете, как вы хотите, чтобы ваши данные были структурированы один раз. Затем вы можете использовать специальный сгенерированный исходный код, чтобы легко записать и прочитать ваши структурированные данные в различные потоки данных и использование различных языков.

Традиционно с API, вы надеваете’T есть договор, определенный самим протоколом. Например, если вы’Повторяя отдых, вы’re Обычно просто отправлять сообщения JSON с парами ключей/значения, которые арендуют’t проверяется до тех пор, пока сообщение не будет на приемном конце. Это сообщение обычно может быть чем угодно, и оно’Поддается вам, чтобы убедиться, что правильная структура определяется.

Взгляните на следующую полезную нагрузку JSON:

‘идентификатор’: 123 ‘имя’: ‘Гордон’, ‘электронная почта’: ‘Гордон@где -то.io’

Как только эти данные будут получены на клиенте/сервере, они могут быть опустошены в объект, например:

классный человек

Однако, как разработчик, решать вам, чтобы реализовать правильную логику сериализации и детерулизации для вышеупомянутой полезной нагрузки – это может включать в себя написание методов Tojson и FromJson вручную, полагаясь на генерацию кода, или это может быть встроенная функция языка, который вы’повторный использование.

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

С помощью буферов протокола вы создаете схему, которая определяет тип объекта для полей и указываете, что требуется, а какие являются необязательными:

// Сообщение о запросе, содержащее человека&rsquo;S Информационное сообщение человек < optional int32 required string name = 2; optional string email = 3; >// Ответное сообщение, содержащее сообщение приветствия

Затем вы можете указать процедуры, которые вы хотите разоблачить.

// определение сервиса приветствия. Сервис приветствует < // Sends a greeting rpc SayHello (Person) returns (HelloReply) <>>

Как только вы&rsquo;VE указал структуры и схемы данных, вы используете протокол протокола Buffer Protoc для генерации классов доступа к данным на предпочтительном языке (ы) из вашего определения протока.

Это будут интерфейсы, которые описывают объекты, изложенные в прото -файле, с аксессуарами для каждого поля, а также методы для сериализации/анализа всей структуры на/из необработанных байтов.

режимы GRPC

Есть четыре способа транспорта над GRPC. Эти четыре режима повторяют поведение, которое мы обсуждали ранее, например, обычный запрос/ответ, SSE и WebSockets.

Unary RPC

Unary RPC – это простой запрос и ответ, аналогичный вызову функции. Клиент просит некоторые данные, а сервер выполняет некоторую обработку и возвращает эти данные.

Сервер потоковой RPC

RPC -потоковой передачи сервера, где клиент отправляет один запрос на сервер и ожидает несколько или поток ответов. Клиент читает из возвращаемого потока, пока не появится сообщений.

Примером будет потоковая передача видео, где вы просите загрузить видео, а сервер отвечает с помощью видеопотока.

Клиент потоковой RPC

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

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

Двунаправленный поток RPC

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

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

В двунаправленном потоковом RPC вызов инициируется клиентом, вызывающим метод. Обработка потока на стороне клиента и сервера является специфичной для приложения. Поскольку два потока являются независимыми, клиент и сервер могут читать и записывать сообщения в любом порядке.

Микросервисы

Хороший пример того, где GRPC мощный, находится в микросервисах.

grpc микросервисы взаимодействие

В этом примере у нас есть микросервисы, написанные на Python, Java и Golang. Это необходимо отправлять данные между собой.

Использование http/1.1 и JSON потребует от вас реализации HTTP -соединений и сериализации для каждого языка. Вам также необходимо убедиться, что схема внедрена правильно для каждого языка, и если API изменится, все услуги должны быть обновлены вручную.

GRPC, с другой стороны, обрабатывает реализацию HTTP/2.0 Протокол для нас. Записана одна схема, и соответствующий код может быть сгенерирован для всех используемых языков. Эта схема можно рассматривать как договор, которым должны придерживаться все языки, что делает общение между этими услугами намного проще и более надежным.

GRPC производительность

GRPC быстрый и, как правило, гораздо более эффективен, чем эквивалент отдыха:

  • Буферы протокола сериализуются и отправляются как двоичные файлы над проволокой, которые значительно меньше, чем обычные сообщения JSON.
  • GRPC использует http/2.0, что обеспечивает дальнейшие улучшения

GRPC эффективно сжатие отправленных данных имеет значительное преимущество, поскольку чем меньше передаваемой полезной нагрузки данных, тем меньше TCP -круглых поездок необходимо. Максимальный блок передачи (MTU)-это измерение, представляющее самый большой пакет данных, который примет устройство подключенного к сети, которое составляет 1500 байтов.

Сжатие обрабатывается для вас, и вы получаете выгоду, просто используя GRPC. В качестве альтернативы можно использовать что -то вроде GZIP для сжатия сообщений JSON перед отправкой обычного HTTP. Однако это может быть неудобно и добавляет слой сложности. Различные языки и среды могут также иметь разные уровни поддержки GZIP и других эквивалентных инструментов сжатия. И для каждого языка, который вы используете, вам нужно будет переосмыслить правильное сжатие и логику общения. Это аналогичная проблема с тем, что мы обсуждали о библиотеке HTTP.

Когда вы должны использовать GRPC?

Если вы&rsquo;Повторный использование нескольких различных языков программирования, которые необходимо тесно интегрироваться друг с другом, и требуют быстрой и частой связи, которая посылает много данных, тогда GRPC будет идеальным.

  • С потоковой передачей GRPC, это&rsquo;Возможно, чтобы легко определить прогресс загрузки/загрузки – без необходимости делать какие -либо ненужные запросы для обновлений.
  • Это&rsquo;возможно отменить запросы.
  • Все преимущества http/2.
  • Если GRPC поддерживает ваш язык, вы надеваете&rsquo;Т должен беспокоиться о внешних библиотеках.
  • GRPC не поддерживает все языки.
  • Схема может чувствовать себя ограничительно и громоздко.
  • Это может быть сложно настроить по сравнению с веб -окетами.
  • Все еще молоды, и ошибки могут быть трудно отлаживать.
  • Связь с GRPC не совпадает из коробки с веб -браузерами. Вам нужно использовать библиотеку GRPC-Web.

Webrtc

Протокол WEBRTC-это бесплатный проект с открытым исходным кодом, который предоставляет возможности связи в режиме реального времени (RTC) для вашего приложения, которое работает сверх открытого стандарта. Он поддерживает видео, голосовые и общие данные, отправляемые между сверстниками.

Технология доступна в виде набора API JavaScript для всех основных браузеров и библиотеки для клиентов, таких как Android и iOS, приложения.

WEBRTC отличается от WebSockets и GRPC фундаментальным образом, и это то, что после установки соединения данные могут (при некоторых обстоятельствах) передаваться непосредственно между браузерами и устройствами в режиме реального времени, не касаясь сервера.

Это уменьшает задержку и делает WEBRTC отличным для обмена аудио, видео или экраном – где важна низкая задержка, и необходимо отправить много данных.

WEBRTC мотивация

Webrtc намерен стандартизировать, как медиа, такие как аудио и видео, передается через проволоку-и для этого удобно выполнять с помощью простого в использовании API.

Другие решения, такие как WebSockets, позволяют передавать любые данные между двумя коллегами; Однако эти данные должны передаваться через прокси или сервер. Полагаться на другой сервер добавляет задержку, так как все, что отправляется через него, необходимо просмотреть, обрабатывать и расшифровать. Между двумя сверстниками есть средний человек. Для потокового видео или даже чата в реальном времени эта задержка нежелательна.

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

Проблема с webrtc

Мотивация определяется, и кажется, что WEBRTC – это волшебное решение, позволяющее более быстрому общению между двумя сверстниками. Но, к сожалению, есть несколько проблем.

Первая проблема заключается в том, что установление однорангового соединения не проще-Интернет сложный, и есть много маршрутизаторов, доверенных лиц и брандмауэров между Алисой в Калифорнии и Бен в Южной Африке. И в некоторых случаях может быть невозможно иметь прямую линию между двумя сверстниками. Связь между двумя сверстниками может потребоваться обойти брандмауэр, который предотвращает открытые соединения, вы можете не иметь публичного IP -адреса, или маршрутизатор может не допустить прямого соединения между сверстниками.

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

Что немного смешно. Анонца Http соединение обновлено до WebSocket соединение только для обмена информацией для создания Webrtc связь.

Если вы действительно хотите оценить то, что делает Webrtc, и его сложность, вам нужно будет познакомиться с некоторыми потенциально незнакомыми терминами: Nat, STUN, Turn, Ice, SDP и сигнализация.

Как работает webrtc?

В приведенном выше обзоре мы описали мотивацию WEBRTC, которая описывает основную идею о том, как она работает. Этот раздел будет погружаться в некоторые из тем более низких тем, которые вам нужно понять, чтобы полностью понять Webrtc.

Перевод сетевого адреса (NAT)

Понимание того, что такое Nat и как это работает, важно для понимания WEBRTC.

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

Эти устройства арене&rsquo;T непосредственно подвергается интернету. Вместо этого весь трафик проходит через маршрутизатор, который общается с внешним миром. Когда вы запросите ресурсы с удаленного сервера, маршрутизатор отвечает за &ldquo;маршрутизация&rdquo; Запрос от локальной машины на этот сервер и маршрутизацию ответа с сервера обратно на локальную машину.

Эти запросы переведены с устройства&rsquo;S частный IP -адрес на маршрутизатор&rsquo;S Public IP с уникальным портом, который затем хранится в таблице NAT. Таким образом, наличие уникального публичного IP для каждого устройства в локальной сети не требуется.

NAT TABLE

Изображение выше – это упрощенный пример того, как будет выглядеть таблица NAT. Позволять&rsquo;S притворяться местным устройством с частным IP 192.168.1.50, Запрашивает публичный адрес 82.88.31.26:80 Для некоторых данных.

Это достигается локальным устройством, сначала отправляя запрос на маршрутизатор, который направляет запрос на удаленное устройство. Затем маршрутизатор сообщает удаленному устройству отправить ответ на свой внешний IP -адрес с уникальным портом, который в этом примере 86.88.71.25: 8830.

Этот уникальный порт важен, так как он позволит маршрутизатору определить, какое локальное устройство сделало запрос. Вся эта информация хранится в таблице NAT. Как только маршрутизатор получает ответ, он может выполнить поиск и решить, на какое локальное устройство следует пересылать ответ.

Это довольно просто для понимания, когда у нас есть нормальная пара запросов/ответов – одно устройство и один сервер. Но что произойдет, если другое внешнее устройство с совершенно другим IP -адресом решит отправить пакеты на внешний IP -адрес маршрутизатора на том же порте, который ранее использовался? Если маршрутизатор пересылает его на локальное устройство, отображаемое на этот номер порта?

Это решение зависит от того, какой перевод NAT использует маршрутизатор, и в конечном итоге определяет, может ли установить одноранговое соединение. В зависимости от используемого вами маршрутизатора, он будет реализовать другой перевод NAT. Есть четыре различных метода перевода NAT:

  • Один к одному Nat
  • Адрес ограничен Nat
  • Порт ограничен Nat
  • Симметричный Nat

Один к одному Nat: Карты один внешний IP -адрес и порт (обычно общедоступный) на один внутренний IP -адрес и порт (обычно частный). В приведенном выше примере, если маршрутизатор получает ответ на порту 8830 и внешний IP 86.88.71.25, он перешлет бы его на локальное устройство 192.168.1.50, Как это локальное устройство, которое сделало запрос (информация получена из таблицы NAT). Маршрутизатор не заботится о IP -адреса. Если оно&rsquo;S на конкретном внешнем порте он идет на это локальное устройство.

Адрес ограничен Nat: Удаленное устройство может отправить пакет на локальное устройство, только если локальное устройство ранее отправило пакет на удаленный IP -адрес. Таким образом, мы разрешаем это только в том случае, если мы общались с этим хостом раньше. В приведенном выше примере разрешить только пакеты из 86.88.71.25.

Порт ограничен Nat: То же самое, что и адрес, ограниченный NAT, но ограничение также включает номера портов. Удаленное устройство может отправлять пакет только на внутреннее устройство, если внутреннее устройство ранее отправило пакет на IP -адрес x и порт P. В приведенном выше примере разрешить только из 86.88.71.25 и порт 80.

Симметричный Nat: Самый ограничительный. Для этого Внешний IP, Внешний порт, назначение IP, и порт назначения Все должны соответствовать тому, что присутствует в таблице NAT. Это означает, что пакеты могут быть отправлены в определенный порт локального устройства только в том случае, если это устройство запрашивало IP и порт назначения и порт.

WEBRTC не работает над симметричным NAT, и чтобы понять, почему мы должны понять, что такое STUN Server.

Утилиты для проходов сессии для NAT (STUN)

STUN – это протокол, который сообщает вам ваш общедоступный IP -адрес/порт через NAT и определение любых ограничений в вашем маршрутизаторе, которые предотвратят прямое соединение с одноранговым узлом. Сервер STUN – это механизм для клиентов, чтобы обнаружить наличие NAT, а также тип NAT, и определить внешний IP -адрес NAT и отображение порта.

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

Это работает для один к одному, адрес ограничен, и Порт ограничен Nat. Но не работает для Симметричный Nat. Потому что, когда вы запрашиваете STUN Server для вашей публичной информации, эта пара связи была создана специально для клиента, делающего запрос. Невозможно привлечь другого сверстника с использованием симметричного NAT – связь через порт локального устройства ограничена сервером STUN.

STUN SERVERS легкие и дешевые для поддержания. Есть общественные оглушительные серверы, которые могут быть запрошены бесплатно.

Изображение ниже иллюстрирует, когда работает STUN и когда можно установить одноранговое соединение.

Webrtc Stun Server - когда он работает

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

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

Пересечение с использованием реле вокруг NAT (поворот)

Turn – это протокол для передачи сетевого трафика, когда прямое соединение не может быть установлено между двумя сверстниками. Например, если один выпуск находится за симметричным NAT, необходим выделенный сервер для передачи трафика между сверстниками. В этом случае вы создадите соединение с сервером Turn и сообщите всем одно однорангово.

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

Следующее изображение показывает, как сервер поворота используется для передачи сообщений между двумя или более сверстниками.

WEBRTC Turn Server

Интерактивное учреждение подключения (ICE)

ICE использует комбинацию протоколов STUN and Turn для предоставления механизма для хозяев для обнаружения публичных IP -адресов друг друга и установить прямое соединение. Если прямое соединение невозможно, ICE будет использовать Turn для установления ретрансляционного соединения между двумя хостами.

Все эти возможные способы потенциального установления связи называются кандидатами на льду. Все собранные адреса отправляются на дистанционный одноранж через SDP, которые мы рассмотрим дальше. Webrtc использует эту информацию на каждом клиенте, чтобы определить лучший способ подключения к другому однорангу. Может случиться так, что оба однорангожи.

Протокол описания сеанса (SDP)

SDP, по сути, является форматом данных для описания сеансов медиа для объявления сеанса, приглашения на сессию и других форм инициирования сеанса. Это стандарт для описания мультимедийного контента для соединения, такого как разрешение, форматы, кодеки и шифрование.

Важно отметить это&rsquo;S также используется для описания кандидатов на льду и других сетевых вариантов. Когда Пир А хочет подключиться к сверстнику В, им необходимо поделиться информацией о СДП для подключения. Как этот SDP полностью распространяется – это называется сигнализацией, и мы рассмотрим его дальше.

Сигнализация – установление соединения

Сигнализация – это процесс отправки управляющей информации между двумя устройствами для определения протоколов связи, каналов, кодеков и форматов медиа -. Самое важное, что нужно знать о процессе сигнализации для WEBRTC: это не определено в спецификации.

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

Важным предостережением является то, что у Webrtc не есть сигнализация, встроенная как часть спецификации, так как два устройства не могут напрямую связаться друг с другом, что мы подробно изучили ранее. Чтобы два коллеги могли подключаться с помощью WEBRTC, они требуют данных SDP друг друга.

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

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

Когда вы должны использовать webrtc?

Вы можете даже спросить: почему я должен использовать Webrtc? Кажется сложным понять и еще сложнее настроить.

Настройка сложно, но есть много преимуществ:

  • API прост в использовании и доступен непосредственно в вашем браузере.
  • У него хорошая производительность, что позволяет передавать контент с высокой полосой пропускания, например, видео или аудио.
  • Более продвинутые функции, такие как обмен экранами и обмен файлами могут быть легко реализованы.
  • Поддерживает одноранговое соединение с уменьшенной задержкой.
  • Бесплатный и открытый исходный код.
  • Нет встроенной сигнализации.
  • Вам нужно поддерживать серверы оглушения и поворота.
  • Для групповых соединений (например, группового видеопроката) может потребоваться SFU.
  • Сложно настроить и понять.

Что вы должны выбрать?

Выбор протокола будет зависеть от ваших конкретных потребностей.

Http: С HTTP/2 теперь можно иметь двунаправленную связь между клиентом и сервером. В зависимости от вашего приложения вам может не понадобиться полная дуплексная связь, и что -то вроде SSE будет более чем достаточно. В этой статье мы также обнаружили, что WebSockets и GRPC зависят от HTTP, в то время как WEBRTC требует какой -то другой канал для сигнализации. Это&rsquo;S стоит сначала исследовать, если HTTP решает ваши потребности в приложении, прежде чем углубляться в эти другие протоколы.

Веб -вагоны Лучше всего подходят для приложений в реальном времени, которые требуют двустороннего общения, таких как приложения чата. Они также относительно легко настройка и использование. Тем не менее, WebSockets не так эффективно, как GRPC или Webrtc, и они не очень хорошо подходят для приложений, которые должны отправлять много данных.

grpc является более эффективным протоколом, чем WebSockets, и он лучше подходит для приложений, которые необходимо отправлять много данных. Тем не менее, GRPC сложнее настройки и использования, чем WebSockets. Если вам нужно сделать много небольших вызовов API, GRPC – хороший выбор. Или, когда вы внедряете микросервисы с различными языками программирования, которые необходимо общаться, затем GRPC&rsquo;S сериализованные структурированные данные и генерация кода сэкономит вам много времени. Это&rsquo;S также стоит отметить, что вы можете&rsquo;t легко использовать GRPC из браузера. Для этого вам нужен выделенный прокси в бэкэнд, который переводит вызовы – см. Grpc -Web.

Webrtc является наиболее эффективным протоколом связи в реальном времени с низкой задержкой между браузерами и устройствами, и он хорошо подходит для приложений, которые должны отправлять много данных. WEBRTC также предоставляет простой в использовании API, доступный непосредственно в браузере, что позволяет легко делиться вашей камерой, аудио, экраном или другими файлами. Тем не менее, WEBRTC может быть сложным для настройки и использования, так как это требует от вас выполнения сигнализации и поддержания поворота и оглушенного сервера.

Заключение

Будущее увидит больше протоколов, изменений и дальнейших улучшений. HTTP/3 уже выпущен, и есть также новый протокол связи под названием WebTransport, потенциальная замена для веб -билетов.

Мы надеемся, что вы нашли эту статью полезной и что она поможет вам принять обоснованное решение. Если вы хотите продолжить обсуждение, обратитесь к нам в Twitter или LinkedIn.

WEBRTC против HLS: сравнение между протоколами потоковой передачи

В этом сообщении сравниваются WEBRTC и HLS, два самых популярных потоковых протоколах. Он изучает плюсы и минусы каждого протокола и исследует его приложения. Кроме того, в сообщении представлен обзор которого лучше для потоковой передачи, что позволяет читателям выбрать правильную технологию для своих нужд.

Ашик Т.С

22 февраля 2023 года

WEBRTC против HLS: сравнение между протоколами потоковой передачи

В современную цифровую эпоху протоколы потокового вещания стали важными для потребления и обмена медиа. От живых потоков до видео по запросу, потоковые протоколы позволили нам получить доступ к контенту в любом месте, в любое время. Но с таким количеством доступных вариантов, знание того, что лучше для ваших нужд, может занять время и усилия. В этой статье мы рассмотрим два самых популярных потоковых протокола: WEBRTC и HLS, сравнить их и помочь вам принять обоснованное решение.

Что такое webrtc?

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

Приложения WEBRTC

Вот некоторые из наиболее часто используемых случаев использования Webrtc:

  • Голосовые и видеозвонки: Одним из самых популярных вариантов использования для WEBRTC является голосовые и видеозвонки. Это позволяет общаться с низкой задержкой в ​​режиме реального времени между двумя или более. Предприятия широко используют эту функцию для приложений для внутренней коммуникации, совместной работы и обращенных к потребителям для социальных сетей и онлайн-знакомств.
  • Онлайн -конференция: Еще один популярный вариант использования для WEBRTC – онлайн -конференция. Это позволяет нескольким пользователям присоединяться к виртуальному конференц -зале и взаимодействовать друг с другом через видео и аудио, а также обмениваться экранами и документами. Предприятия широко используют эту функцию для удаленных встреч и презентаций, а также образовательных учреждений для онлайн -классов и лекций.
  • Чат: WEBRTC также обеспечивает текстовое общение в реальном времени через чат. Эта функция может быть интегрирована в различные приложения и платформы, такие как социальные сети, онлайн -игры и поддержка клиентов. Это обеспечивает мгновенное общение и может использоваться для улучшения пользовательского опыта в различных контекстах.

Что такое HLS?

HLS (HTTP Live Streaming) – это адаптивный протокол потоковой передачи битрейта, разработанный Apple. Он широко используется для прямой трансляции на мобильных устройствах и настольных браузерах. HLS предназначен для работы с протоколом HTTP и может быть легко интегрирован в существующую инфраструктуру на основе HTTP.

Приложения HLS

Вот некоторые из наиболее распространенных способов использования HLS в сегодняшний день и возраст:

  • Живая потоковая передача: HLS широко используется для событий в прямом эфире, таких как спорт, концерты и новостные трансляции. Протокол предназначен для обработки высокого трафика и обеспечения плавного потокового опыта для зрителей. Адаптивная функция битрейта позволяет потоку приспособиться к интернет -подключению зрителя, обеспечивая лучший опыт просмотра.
  • Видео по запросу (VOD): HLS также обычно используется для контента с видео по запросу (VOD), такого как фильмы, телешоу и видеоуроки. Протокол обеспечивает легкую интеграцию с системами управления контентом и плавным потоковым опытом для зрителя с адаптивным битрейтом.
  • IPTV и OTT: HLS также используется в службах IPTV и чрезмерных (OTT), таких как потоковое телевидение и видео службы. Способность протокола обрабатывать высокий трафик и обеспечить плавный опыт потоковой передачи делает его популярным выбором для этих приложений.
  • Мобильная потоковая передача: HLS также популярен для мобильной потоковой передачи, так как он поддерживается на платформах iOS и Android.
  • Предприятие связи: HLS используется в корпоративных коммуникационных платформах, которые позволяют сотрудникам транслировать видео, обмениваться экранами и делать аудио/видеозвонки, поскольку они обеспечивают плавную потоковую связь и совместим с большинством устройств.

WEBRTC против HLS: подробное сравнение

Особенность Webrtc HLS
Поддержка браузера Chrome, Firefox, Safari, Edge (с плагином) Safari, Chrome, Edge, Firefox (с плагином)
Поддержка устройства Windows, MacOS, Linux, iOS, Android iOS, Android, MacOS, Windows
Поддержка кодека VP8, VP9, ​​H.264, ч.265 ЧАС.264, ч.265
Задержка Низкий Высокий
Безопасность Высокий Середина
Качество видео Высокий Высокий
способ доставки Пиринговый На основе сервера
Масштабируемость Высокий Высокий
Совместимость Ограниченное Широкий

При принятии решения о том, какой протокол использовать, важно учитывать такие факторы, как задержка, безопасность, качество видео, метод доставки, масштабируемость и совместимость.

Задержка

Когда дело доходит до задержки, у WEBRTC есть четкое преимущество перед HLS. Webrtc использует общение в реальном времени, то есть видео мгновенно доставлено зрителям. С другой стороны, HLS использует механизм буферизации, который задерживает доставку видео. В зависимости от условий сети эта задержка может быть от нескольких секунд до нескольких минут. Эти элементы делают WEBRTC более подходящим для вариантов использования, которые требуют низкой задержки, таких как живые видеочаты и онлайн -игры.

Безопасность

И WEBRTC, и HLS используют шифрование для защиты видеопотоков. Однако уровень безопасности, обеспечиваемый каждым протоколом, отличается. WEBRTC использует безопасное транспортное протокол в реальном времени (SRTP) для шифрования видеопотока, который считается одним из наиболее безопасных методов шифрования. С другой стороны, HLS использует протокол HTTP Secure (HTTPS) для шифрования видеопотока. Хотя HTTPS считается безопасным, SRTP менее безопасен. Из -за этих причин WEBRTC более подходит для случаев использования, которые требуют высокого уровня безопасности, таких как финансовые операции и государственное общение.

Качество видео

И WEBRTC, и HLS способны доставить высококачественное видео. Тем не менее, качество видео, доставленное каждым протоколом, может варьироваться в зависимости от условий сети. WEBRTC использует адаптивную потоковую передачу битрейта, которая настраивает качество видео в режиме реального времени в зависимости от условий сети зрителя. Это означает, что качество видео будет высоким даже в сетях с низкой пропускной способностью. С другой стороны, HLS использует предварительно сегментированный механизм доставки видео, который может привести к буферизации и заиканию в сетях с низкой пропускной способностью. В результате WEBRTC более подходит для вариантов использования, которые требуют высококачественного видео в сетях с низкой пропускной способностью.

способ доставки

WEBRTC и HLS используют разные методы доставки для потоковой передачи видео. WEBRTC использует метод доставки одноранговых (P2P), что означает, что видео доставляется непосредственно от одного зрителя в другой. Это уменьшает загрузку сервера и увеличивает масштабируемость видеопотока. С другой стороны, HLS использует метод доставки клиентского сервера, что означает, что видео доставлено с сервера на зритель. Это может привести к проблемам масштабируемости, особенно во время пикового движения. В результате WEBRTC более подходит для вариантов использования, которые требуют высокой масляности, таких как живые события и онлайн -игры.

Масштабируемость

WEBRTC и HLS имеют разные характеристики масштабируемости. WEBRTC использует метод доставки P2P, который уменьшает загрузку сервера и увеличивает масштабируемость видеопотока. С другой стороны, HLS использует метод доставки клиентского сервера, который может привести к проблемам масштабируемости, особенно во время пикового движения. В результате WEBRTC более подходит для вариантов использования, которые требуют высокой масляности, таких как живые события и онлайн -игры.

Совместимость

WEBRTC и HLS имеют разные характеристики совместимости. WEBRTC совместим с большинством современных браузеров, включая Chrome, Firefox и Safari. Тем не менее, он не совместим с Internet Explorer и Edge. С другой стороны, HLS совместим с большинством современных браузеров, включая Chrome, Firefox, Safari, Internet Explorer и Edge. Из -за этого HLS более подходит для вариантов использования, которые требуют совместимости с широким спектром браузеров и устройств.

Webrtc против HLS: что лучше?

Webrtc это отличный вариант для потоковых приложений с низкой задержкой в ​​реальном времени. Он идеально подходит для вариантов использования, таких как голосовые и видеозвонки, онлайн -конференция и чат. С другой стороны, HLS отличный вариант для потоковой трансляции видео для большой аудитории. Особенно хорошо подходит для таких вариантов использования, как потоковая трансляция спорта, концерты и другие события, требующие высокой масштабируемости. Способность HLS адаптироваться к различным условиям сети делает его популярным выбором для потокового контента для зрителей на различных устройствах и сетях.

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

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

Заключение

В заключение, как WEBRTC, так и HLS имеют свои уникальные функции и варианты использования, которые делают их подходящими для различных типов потоковой передачи. Webrtc лучше всего подходит для низкой задержки, общения в реальном времени, таких как голосовые и видеозвонки, онлайн-конференция и чат. С другой стороны, HLS лучше всего подходит для высококачественной потоковой передачи предварительно записанных видео на широком спектре устройств.

Часто задаваемые вопросы

1. Использует ли WeBRTC TCP или UDP?

WEBRTC использует как TCP, так и UDP в зависимости от типа передаваемых данных. Он использует TCP для управления сообщениями и UDP для потоковой передачи мультимедиа.

2. Использует ли YouTube HLS?

Да, YouTube использует HLS (HTTP Live Streaming) в качестве одного из своих потоковых протоколов для доставки видео зрителям.

3. Webrtc только для браузеров?

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

4. Использует ли Netflix webrtc?

Нет, Netflix не использует webrtc для потоковой передачи. Они используют свою собственную проприетарную технологию, называемую адаптивной потоковой передачей над HTTP (ASOH), которая основана на HTTP Live Streaming (HLS).