Používá webrtc http

Otevření nového připojení TCP pro každou žádost se stalo problémem, jak se web vyvinul. Začali jsme stavět plné aplikace místo jednoduchých webových stránek a počet médií a souborů, které prohlížeč potřebný k načtení, se stal více. . Pro každý soubor muselo být vytvořeno nové připojení.

Streamování webrtc vs http

Возможно, адреса электроной почты являются а Němec д э г г р р р р р р г р р р р р р р р р т т р р р э э э э э э э э э э э э э э и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и ектронной почты.

-Diskutujte o WebRTC

Experimentoval jsem s protokoly streamování WEBRTC a HTTP (HLS, MPEG-DASH) pro živé video streamování na několik dní a zjistil jsem, že zatímco WebRTC dosáhne subjektů HTTP, protokoly HTTP Streaming vždy mají vícesexuální latence. Proto mám několik otázek souvisejících s streamováním WebRTC vs http.

1. Jak je WebRTC schopen dosáhnout subjektových latencí ve srovnání s protokoly streamování HTTP?

WebRTC je schopen dosáhnout subjektových latencí ve srovnání s protokoly streamování HTTP díky své schopnosti komunikace v reálném čase (RTC). WebRTC je postaven tak, aby poskytoval aplikacím okamžitý přenos videa, zvuku a dalších dat mezi vrstevníky. To umožňuje prakticky okamžitý přenos obsahu, což má za následek pododdělení druhé latence.

2. Pokud již WebRTC poskytuje streamování videa s nízkou latencí, proč existuje snaha sjednotit protokoly streamování HTTP pod standardem MPEG-Dash?

Snaha sjednotit protokoly streamování HTTP v rámci standardu MPEG-Dash je poháněna potřebou standardizovaného přístupu k streamování založené na HTTP. Zatímco WEBRTC poskytuje streamování videa s nízkou latencí, není vhodné pro všechny případy použití a nemusí být kompatibilní se všemi zařízeními a softwarem. Sjednocením protokolů streamování HTTP v rámci standardu MPEG-Dash je pro poskytovatele obsahu snazší poskytovat vysoce kvalitní streamování videa na různých platformách a zařízeních a zajistit konzistentní zážitek z prohlížení pro uživatele.

. Jak se WebRTC ve srovnání s RTMP? (RTMP jsem dosud nezkoumal, ale chci vědět, jestli je možné dosáhnout subsekundových latence s RTMP)

. WebRTC je určen pro komunikaci v reálném čase a může dosáhnout latence subsekund, takže je vhodné pro aplikace, které vyžadují okamžitý přenos. Na druhé straně je RTMP (protokol pro zasílání zpráv v reálném čase) protokolem primárně pro streamování zvuku, videa a dat mezi kodérem a streamovacím serverem. Zatímco RTMP může poskytnout streamování s nízkou latencí, dosažení subsekundových latencí může záviset na různých faktorech, jako jsou síťové podmínky a konfigurace serveru.

Srovnávací studie mezi streamováním založeným na WebRTC a HTTP

Populární téma bylo po dlouhou dobu snižování latence streamování. Je známo, že se v minulosti vyskytují latence desítek sekund a dokonce i jednu minutu. S tradiční latence vysílání v jednociferných sekundách a rozvíjejících se řešeních WEBRTC Development Services, Otázkou je, jaký přístup k přijetí. Streamování WebRTC je schopno dodávat video nejen v dílčích sekundách, ale za méně než 500 milisekund. V současné době je dostupná technologie streamování nejnižší latentnosti, která umožňuje prakticky okamžitý přenos.

V tomto šikovném průvodci se podíváme na to, jak funguje WebRTC, a porovnáme jej s HTTP z pohledu a Služba streamování videa. Začněme!


Protokoly založené na HTTP jsou technicky běžné webové servery, které vysílají progresivní stahování. Používají adaptivní streamování bitrate k zajištění nejvyšší možné kvality videa a prohlížení, bez ohledu na připojení, software nebo zařízení. Mezi nejběžnější dostupné protokoly založené na HTTP patří MPEG-Dash, Apple’S HLS, Adobe HDS a Microsoft Smooth Streaming.

WebRTC je robustní protokol, který je podporován vynikajícími nástroji a rozšířenou podporou průmyslu. Byl vytvořen tak, aby poskytoval aplikacím s možností komunikace v reálném čase (RTC), což umožnilo přenášet video, zvuk nebo jakýkoli jiný typ dat mezi vrstevníky. Toto je klíčový rozdíl mezi nimi ve srovnání s streamováním založeným na HTTP, který je orientován na klient-server.

UDP vs. TCP

Základní komponenty pro protokol internetového protokolu, protokol UDP (UDP) a protokol TCP), oba jsou na přepravní vrstvě sídlí (TCP).

Hlavním rozlišením mezi UDP a TCP je to, že TCP vyžaduje při přenášení dat třícestný handshake. Iniciátor (klient) požaduje, aby akceptor (server) navázal připojení, akceptor odpovídá a iniciátor uzná odpověď a udržuje relaci mezi oběma koncemi. TCP je proto nesmírně důvěryhodný a může se zabývat ztrátou a objednávkou paketů.

UDP, na druhé straně’T vyžadují začátek handshake. Převoduje data bez ohledu na omezení šířky pásma, což je jak rychlejší, tak riskantní. Protože UDP nepodporuje opakované přenosy, uspořádání paketů nebo kontrolu chyb, má síťová škytavka potenciál kontaminovat data v tranzitu.

.

Jak se streamování založené na HTTP na základě HTTP?

  • Jaký typ latence hledáte?
  • Jaká bude velikost publika?
  • Jaká je maximální částka, kterou jste ochotni utratit?

Odpovědi na otázky latence závisí na rozsahu latence, na který se zaměřujete.

Nové a vylepšené HLS, jako jsou LL-HLS a LL-Dash. To je stále považováno za rychlé a bude to stačit pro většinu případů použití s ​​nízkou latencí. WebRTC na druhé straně zůstává nejrychlejším řešením, pokud váš případ použití vyžaduje streamování v reálném čase. Protože se jedná o protokol UDP, který se vyvine, aby se plně přizpůsobil modernímu internetu. Podporuje 500 ms latence v reálném čase.

WebRTC byl navržen tak, aby poskytoval obousměrnou komunikaci v reálném čase. Na rozdíl od HLS, který je založen na TCP, je WebRTC založen na UDP. To znamená, že WebRTC může začít bez výměny informací o klientech a serveru. Výsledkem je, že WebRTC je rychlejší, ale také je náchylnější k kolísání sítě.

WEBRTC je protokol, který má použít, pokud vaše řešení vyžaduje streamování peer-to-peer, real-time streaming. Pokud však potřebujete růst publika nad 50 lidmi, budete muset znovu zvážit svou strategii.

Ve srovnání s HLS je škálování WebRTC podstatně obtížnější. . Váš výběr bude určen podle vašeho případu použití a velikosti cílového publika.

Pokud jde o oslovení masivního publika, protokoly založené na HTTP vycházejí nahoře.

Používá webrtc http

. Začali jsme stavět plné aplikace místo jednoduchých webových stránek a počet médií a souborů, které prohlížeč potřebný k načtení, se stal více. Představte si typickou webovou aplikaci, která vyžaduje soubor HTML, CSS a JavaScript, stejně jako různé obrázky a další aktiva. Pro každý soubor muselo být vytvořeno nové připojení.

Streamování webrtc vs http

Возможно, адреса электроной почты являются а Němec д э г г р р р р р р г р р р р р р р р р т т р р р э э э э э э э э э э э э э э и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и и ектронной почты.

-Diskutujte o WebRTC

Experimentoval jsem s protokoly streamování WEBRTC a HTTP (HLS, MPEG-DASH) pro živé video streamování na několik dní a zjistil jsem, že zatímco WebRTC dosáhne subjektů HTTP, protokoly HTTP Streaming vždy mají vícesexuální latence. Proto mám několik otázek souvisejících s streamováním WebRTC vs http.

. Jak je WebRTC schopen dosáhnout subjektových latencí ve srovnání s protokoly streamování HTTP?

2. Pokud již WebRTC poskytuje streamování videa s nízkou latencí, proč existuje snaha sjednotit protokoly streamování HTTP pod standardem MPEG-Dash?
. Jak se WebRTC ve srovnání s RTMP? (RTMP jsem dosud nezkoumal, ale chci vědět, jestli je možné dosáhnout subsekundových latence s RTMP)

Srovnávací studie mezi streamováním založeným na WebRTC a HTTP

Populární téma bylo po dlouhou dobu snižování latence streamování. Je známo, že se v minulosti vyskytují latence desítek sekund a dokonce i jednu minutu. S tradiční latence vysílání v jednociferných sekundách a rozvíjejících se řešeních WEBRTC Development Services , Otázkou je, jaký přístup k přijetí. Streamování WebRTC je schopno dodávat video nejen v dílčích sekundách, ale za méně než 500 milisekund. V současné době je dostupná technologie streamování nejnižší latentnosti, která umožňuje prakticky okamžitý přenos.

V tomto šikovném průvodci se podíváme na to, jak funguje WebRTC, a porovnáme jej s HTTP z pohledu a Služba streamování videa . Začněme!

Streamování HTTP a WebRTC


Rychlý přehled streamování a webrtc založených na HTTP

Protokoly založené na HTTP jsou technicky běžné webové servery, které vysílají progresivní stahování. Používají adaptivní streamování bitrate k zajištění nejvyšší možné kvality videa a prohlížení, bez ohledu na připojení, software nebo zařízení. Mezi nejběžnější dostupné protokoly založené na HTTP patří MPEG-Dash, Apple’S HLS, Adobe HDS a Microsoft Smooth Streaming.

WebRTC je robustní protokol, který je podporován vynikajícími nástroji a rozšířenou podporou průmyslu. Byl vytvořen tak, aby poskytoval aplikacím s možností komunikace v reálném čase (RTC), což umožnilo přenášet video, zvuk nebo jakýkoli jiný typ dat mezi vrstevníky. Toto je klíčový rozdíl mezi nimi ve srovnání s streamováním založeným na HTTP, který je orientován na klient-server.

UDP vs. TCP

Základní komponenty pro protokol internetového protokolu, protokol UDP (UDP) a protokol TCP), oba jsou na přepravní vrstvě sídlí (TCP).

Hlavním rozlišením mezi UDP a TCP je to, že TCP vyžaduje při přenášení dat třícestný handshake. Iniciátor (klient) požaduje, aby akceptor (server) navázal připojení, akceptor odpovídá a iniciátor uzná odpověď a udržuje relaci mezi oběma koncemi. TCP je proto nesmírně důvěryhodný a může se zabývat ztrátou a objednávkou paketů.

UDP, na druhé straně’T vyžadují začátek handshake. Převoduje data bez ohledu na omezení šířky pásma, což je jak rychlejší, tak riskantní. Protože UDP nepodporuje opakované přenosy, uspořádání paketů nebo kontrolu chyb, má síťová škytavka potenciál kontaminovat data v tranzitu.

Protokoly jako WebRTC často používají UDP, zatímco protokoly založené na HTTP používají TCP.

Jak se streamování založené na HTTP na základě HTTP?

  • Jaký typ latence hledáte?
  • Jaká bude velikost publika?
  • Jaká je maximální částka, kterou jste ochotni utratit?

Latence

Odpovědi na otázky latence závisí na rozsahu latence, na který se zaměřujete.

Nové a vylepšené HLS, jako jsou LL-HLS a LL-Dash. To je stále považováno za rychlé a bude to stačit pro většinu případů použití s ​​nízkou latencí. WebRTC na druhé straně zůstává nejrychlejším řešením, pokud váš případ použití vyžaduje streamování v reálném čase. Protože se jedná o protokol UDP, který se vyvine, aby se plně přizpůsobil modernímu internetu. Podporuje 500 ms latence v reálném čase.

WebRTC byl navržen tak, aby poskytoval obousměrnou komunikaci v reálném čase. Na rozdíl od HLS, který je založen na TCP, je WebRTC založen na UDP. To znamená, že WebRTC může začít bez výměny informací o klientech a serveru. Výsledkem je, že WebRTC je rychlejší, ale také je náchylnější k kolísání sítě.

WEBRTC je protokol, který má použít, pokud vaše řešení vyžaduje streamování peer-to-peer, real-time streaming. Pokud však potřebujete růst publika nad 50 lidmi, budete muset znovu zvážit svou strategii.

Ve srovnání s HLS je škálování WebRTC podstatně obtížnější. To však lze vyřešit hybridním pracovním postupem. Váš výběr bude určen podle vašeho případu použití a velikosti cílového publika.

Pokud jde o oslovení masivního publika, protokoly založené na HTTP vycházejí nahoře. Zatímco “Cdns” Pro Webrtc existují, náklady jsou často neúnosné.

Náklady

WebRTC je bezplatný a otevřený protokol. Ale pamatujte, jak jsme mluvili o škálování WebRTC? Je to zcela možné a funguje to efektivně v mnoha případech použití – ale není to levné. Pokud nemusíte streamovat stovky lidí, WebRTC je skvělá volba. Pokud však chcete oslovit velké publikum, budete muset utratit peníze za další servery, abyste snížili zátěž v prohlížeči.

HLS je snad nákladově nejefektivnější metodou doručování videa. Měřítko s CDN je snadno odůvodněno z hlediska nákladů, protože využívá cenově dostupné infrastruktury HTTP a současnou síťovou technologii založenou na TCP.

Závěr

. . Žádná volba není ideální pro každého, ale jeden z nich pro vás může být nejvhodnější.

. .

? Spojte se s našimi odborníky na streamování živého videa!

HTTP, WebSocket, GRPC nebo WEBRTC: Který komunikační protokol je pro vaši aplikaci nejlepší?

Aktivujte svou 30denní bezplatnou zkušební verzi ještě dnes a spusťte prototypování.

  • Sestavte videochat
  • Co je to SFU
  • Protokoly pro streamování videa
  • P2P videokonference

Sdílet článek do:

Při výběru komunikačního protokolu pro vaše aplikace existuje spousta různých možností. V tomto příspěvku my’Podívejte se na čtyři populární řešení: Http, , , a Webrtc. Každý protokol prozkoumáme zkoumáním technologie za ní, co’S nejlépe se používá a jeho silné a slabé stránky.

· Zveřejněno 26. září 2022

HTTP vs WebSockets vs GRPC vs. WebRTC - Komunikační protokoly

Naše formy komunikace se neustále zlepšují: zvyšování, pohodlnější a spolehlivější. Naše komunikace se vyvinula z odesílání zpráv pomocí holubů dopravců, poštovní pošty, na vynález pevné linky, e -mailem a textové zprávy z malého zařízení, které se hodí do našich kapes.

V budoucnu můžeme dokonce přejít na schůzky a narozeninové oslavy na VR (doufejme, že je to jen vtip!). Ale nejlepší forma komunikace bude vždy záviset na situaci.

. . Naproti tomu musí být důležité pojišťovací dokumenty zasílány přes běžnou poštu a doručeny v tištěné kopii.

Totéž platí také pro webové technologie a protokoly, které používáme. Různé aplikace mají různé komunikační potřeby.

Přehled

V tomto článku jsme’Pokryjte některé populární Komunikační protokoly Můžeme použít jako vývojáři a prozkoumat výhody a nevýhody různých možností. Žádné řešení není lepší než jiné – existují pouze některé, které jsou lepší pro konkrétní aplikaci nebo problém.

. Jiné aplikace mohou server dotahovat na základě potřeby a don’je třeba dostávat komunikaci od jiného vrstevníka. .

Online hra pro více hráčů, aplikace pro zasílání zpráv, webové stránky blogů, aplikace mediální galerie a software pro videokonference mají různé úrovně potřeb komunikace a dat.

Pokud vytváříte řešení pro streamování videa, pak existují i ​​další úvahy, najdete v našem článku o protokolech pro streamování videa pro výběr správného.

Co je komunikační protokol?

V počítačové síti je protokol sada pravidel, která upravují, jak jsou data vyměňována mezi zařízeními. Protokol definuje pravidla, syntaxi, sémantiku a synchronizaci komunikace a možných metod obnovy chyb.

Protokoly diskutované v tomto článku definují, jak bude software pro aplikaci navzájem interagovat. ’je nezbytné pro pochopení silných stránek a omezení každého. V tomto článku vy’Zjistěte se o následujících protokolech:

Http (Protokol Hypertext Transfer Protocol) je aplikační protokol pro distribuované, spolupráci a hypermediální informační systémy. HTTP je základem datové komunikace pro World Wide Web. Hypertext je strukturovaný text, který používá logické odkazy (hypertextové odkazy) mezi uzly obsahujícími text. HTTP je protokol pro výměnu nebo přenos hypertextu.

Http/2 byl navržen tak, aby řešil nedostatky původního protokolu HTTP a zlepšil výkon. HTTP/2 je rychlejší a efektivnější než HTTP/1.1, a podporuje multiplexování, aby bylo možné multiplexovat více požadavků a odpovědí na jedno spojení. Mezi další pozoruhodné funkce patří komprese záhlaví a tlak na server. To’S postupně se stává výchozím protokolem pro webový provoz.

WebSocket je protokol umožňující obousměrnou komunikaci mezi klientem a serverem. Je to oblíbená volba pro aplikace, které zpracovávají data v reálném čase, jako jsou chatovací aplikace, online hraní a streamování živých dat.

Grpc je moderní rámec RPC s otevřeným zdrojovým kódem, který pro přepravu používá HTTP/2. Je to skvělá volba pro aplikace, které potřebují uskutečnit spoustu malých a rychlých volání API. GRPC generuje vazebné a serverové vazby pro mnoho jazyků, což umožňuje klientskou aplikaci přímo volat metodu na serverové aplikaci na jiném stroji, jako by to byl místní objekt.

Webrtc je technologie, která umožňuje komunikaci mezi klienty v reálném čase a umožňuje navázat přímé připojení peer-to-peer. Používá se pro video, chat, sdílení souborů a živé aplikace pro streamování videa.

Porozumění TCP a UDP

Před ponořením do výše uvedených aplikačních vrstev’je důležité mít základní porozumění TCP a UDP, dvě základní dopravní vrstvy, které usnadňují přenos dat zásadně odlišnými způsoby.

TCP (Protokol pro řízení přenosu) je standard, který definuje, jak vytvořit a udržovat síťovou konverzaci přes internet. TCP je nejčastěji používaným protokolem na internetu a jakoukoli síť orientovanou na připojení. Když procházíte web, váš počítač odešle pakety TCP na webový server. Webový server odpovídáním paketů TCP zpět do počítače. Před výměnou jakýchkoli dat je nejprve vytvořeno spojení mezi dvěma zařízeními a TCP používá korekci chyb, aby zajistil, že všechny pakety budou úspěšně doručeny. Pokud je paket ztracen nebo poškozen, TCP se ho pokusí znovu odeslat.

UDP (protokol datagramu uživatele) Je protokol nespolehlivého, nespolehlivého transportního vrstvy. Nevyžaduje, aby bylo navázáno nebo udržováno připojení a nezaručuje, že zprávy budou doručeny v pořádku. Což znamená, že může dojít k určité ztrátě dat, pokud se paket neposílá nebo pokud ano’. UDP se často používá pro streamování médií nebo aplikací v reálném čase, kde vypuštěné pakety jsou méně problematické než zajištění doručení.

Http/1

’je důležité mít základní porozumění základu veškeré internetové komunikace a přenosu dat ve vrstvě aplikací – HTTP (protokol Hypertext Transfer).

Pochopení HTTP/1 a jeho omezení bude také důležité, než budeme moci podrobněji prozkoumat další protokoly a plně ocenit, co poskytují.

S HTTP, klienti a servery komunikují výměnou jednotlivých zpráv. Zprávy, které klient odesílá, se nazývají požadavky a zprávy odeslané serverem se nazývají odpovědi. Tyto zprávy jsou odesílány jako běžné textové zprávy přes připojení TCP. Mohou být také šifrovány pomocí TLS a odeslány pomocí protokolu HTTPS.

Klient bude obvykle webový prohlížeč nebo aplikace spuštěná na uživateli’telefon nebo počítač, ale může to být technicky cokoli, například skript, který plazí webové stránky.

Požadavky HTTP mohou proudit pouze v jednom směru, od klienta na server. Neexistuje způsob, jak server iniciovat komunikaci s klientem; Může reagovat pouze na žádosti.

Příklad požadavku/odezvy HTTP/1.1

. Například obnovíte stránku a na server je podána žádost o načtení nejnovějších informací.

Tento protokol se však rozšířil tak, že nebyl původně zamýšlen. V následujících oddílech jsme’’S omezení.

Http/1 v reálném čase

. Například, pokud jsou na serveru k dispozici nové informace, které je třeba sdílet s klientem, může k této transakci dojít pouze poté, co klient zahájí požadavek.

Existují pro to řešení pomocí technik zvaných HTTP krátký a dlouhý dotazování, stejně jako události zasažené serverem.

Krátké hlasování

Krátký průzkum HTTP je technika, kde klient opakovaně odesílá požadavky na server, dokud neodpovídá novými daty. Jakmile obdrží data, spustí proces znovu a opakovaně se zeptá, dokud není k dispozici něco jiného.

Krátké hlasování HTTP

Jedná se o neefektivní komunikační strategii v reálném čase, protože plýtvá spoustou zdrojů nepřetržitým přenosem a analýzou požadavků na HTTP/odpovědi.

S dlouhým hlasováním HTTP je od klienta podána jediný požadavek a poté server udržuje toto připojení otevřené, dokud nebude k dispozici nová data a může být odeslána odpověď. Poté, co klient obdrží odpověď, je okamžitě znovu vytvořeno nové připojení.

HTTP dlouhý průzkum

Dlouhé hlasování je efektivnější než krátké hlasování, ale není optimálním řešením pro komunikaci v reálném čase.

Události serveru (SSE)

Server odeslané události umožňují klientovi držet otevřené připojení a přijímat aktualizace (push zprávy) ze serveru v reálném čase, aniž by musel neustále dotahovat server pro nová data. .

.

Problém s výkonem s HTTP/1

. Doba zpáteční cesty sítě je omezujícím faktorem pro propustnost TCP a ve většině případů. V důsledku toho je latence úzkým místem výkonu a většina webových aplikací ji dodává.

Co výše uvedené znamená, že TCP, který HTTP používá, byl vytvořen pro zpracování dlouhodobých spojení a přenosu mnoha dat. Na druhé straně HTTP/1 by otevřel spoustu krátkodobých připojení TCP a obvykle by odesílala pouze malé kousky dat.

Problém s výkonem s HTTP/1.0 je to, že pro každou žádost/odpověď musíte otevřít nové připojení TCP. To nebyl problém pro to, k čemu byl HTTP původně vynalezen – načíst dokument Hypertext. Část dokumentu je důležitá, protože HTTP nebyl určen pro “Hypermedia”.

Otevření nového připojení TCP pro každou žádost se stalo problémem, jak se web vyvinul. Začali jsme stavět plné aplikace místo jednoduchých webových stránek a počet médií a souborů, které prohlížeč potřebný k načtení, se stal více. Představte si typickou webovou aplikaci, která vyžaduje soubor HTML, CSS a JavaScript, stejně jako různé obrázky a další aktiva. .

..

Toto řešení je rozhodně zlepšením, ale neumožňuje serveru reagovat s více odpověďmi současně. ’. Toto je známé jako blokování hlavy.

Je však možné dosáhnout určitého paralelismu, protože prohlížeč může otevřít až šest spojení TCP ke stejnému původu – kde “původ” je definována jako jedinečná kombinace hostitel a přístav číslo.

. . Původní šest otevřených připojení TCP se stejným původem bude znovu použito, jakmile budou k dispozici, ale jste omezeni na šest aktivních spojení.

Programátoři přirozeně našli snadné řešení – změnou původu. Místo toho, abyste hostovali všechna aktiva na stejném původu, hostujete šest obrázků na jednom původu a zbytek na druhém. Nyní můžete mít 12 současných požadavků (nebo otevřených připojení TCP). Toto se označuje jako “Sharding”.

  • snímky 1-6 .snímky.com
  • snímky 7-12 jsou hostovány na 2.snímky.com

’je těžké určit optimální počet střepů. V určitém okamžiku přidání dalších střepů zvýší složitost, přidá režii a může vést k tomu, že se odkazy stávají přetíženými a ztratí se pakety.

Existují také další obavy, protože každé připojení TCP přidává k serveru zbytečnou režii. Spojení navzájem konkurují, každý handshake TCP a TLS přidává zbytečné náklady a k udržení aktivních připojení musí být použity další zdroje serveru/proxy. Ve způsobu, jakým HTTP/1 využívá základní připojení TCP, existuje jasné omezení.

Záhlaví a sušenky nafouknou

Dalším problémem je, že s vývojem specifikace HTTP bylo do specifikace přidáno více záhlaví. Vývojáři mají také možnost přidat do záhlaví cookies, a ty mohou být libovolně velké. To přidává mnoho nadýmání, protože každá žádost a odpověď musí přenášet všechny tyto textové informace a HTTP/1.1 nezahrnuje mechanismus pro komprimaci záhlaví a metadat.

Pokud potřebujete vysoce výkonný RPC protokol, tato režie se rychle sčítá a HTTP již není optimálním řešením.

Prioritizace

S http/1.1, prohlížeče “” Zdroje držením prioritní fronty o klientovi a vzdělanými odhady, jak nejlépe využít dostupné připojení TCP. Prohlížeče mají zabudovanou heuristiku pro určení, jaké zdroje jsou cennější než ostatní.

Například načítání CSS bude mít vyšší prioritu než načítání obrázků.

Problém je v tom, že pro vás, jako vývojář, neexistuje způsob, jak upřednostňovat jednu žádost před druhým nebo změnit prioritu probíhající zprávy. Jaký obsah je načten jako první, je na prohlížeči a nemáte slovo v schématu prioritizace.

.

Nejvýznamnější změnou HTTP/2 je použití multiplexování k současně odeslání a přijímání více požadavků na HTTP a odpovědi nad a Jednotlivé připojení TCP. Všechna připojení HTTP/2 jsou přetrvávající a je vyžadováno pouze jedno spojení na původ. To umožňuje mnohem efektivnější využití síťových zdrojů a může výrazně zlepšit výkon aplikací.

Některé další výhody HTTP/2:

  • . To významně snižuje režijní náklad požadavků/odpovědí a množství odeslaných dat.
  • Umožňuje prioritizaci a umožňuje klientovi (vývojáři) určit prioritu zdrojů, které potřebuje. To’.
  • Používá server Push k odesílání dat klientovi, než o to požádá. To lze použít ke zlepšení doby načítání odstraněním potřeby klienta učinit více požadavků.

Jak funguje http/2?

Základní jednotka protokolu v HTTP/2 je a rám. Tento nový mechanismus binárního rámování mění způsob, jakým jsou data vyměňována mezi klientem a serverem.

Standard definuje deset různých typů snímků, z nichž každý slouží jinému účelu. Například záhlaví a datové rámce jsou základem požadavků a odpovědí HTTP:

HTTP/1.1 vs. HTTP/2

A rám je nejmenší jednotka komunikace, která nese konkrétní typ dat.

Některé další příklady snímků jsou:

  • Nastavení: Výměna informací o nastavení na začátku nebo během připojení.
  • Priorita: Přiřazení priority pro zprávy.
  • Push_Promise: umožňuje serveru tlačit data na vás – to funguje jako příslib toho, co server odešle. Například, pokud požádáte o index..JS a styly.CSS, což znamená, že klient nemusí tyto zdroje požadovat.

zpráva, . To odpovídá normální žádosti nebo odpovědi.

Nakonec řada série zprávy proud. To umožňuje obousměrný tok dat mezi klientem a serverem a úplným požadavkem a odpovědí multiplexování.

HTTP/2 více proudů

Obrázek nahoře je trochu zavádějící, což působí dojmem, že mezi klientem a serverem je otevřena více spojení. Ale je to jediné připojení TCP a data volně proudí mezi klientem a serverem neblokovacím způsobem.

Nová binární rámovací vrstva umožňuje klientovi a serveru rozdělit zprávu HTTP na nezávislé rámce, prokládat je a poté je znovu sestavit na druhém konci.

.0 Works. Pokud se chcete dozvědět více a prozkoumat prioritizaci, tlačení serveru a kompresi záhlaví, viz tento článek do hloubky. .

Http/2 obousměrné streamování dat

  • Jediné připojení HTTP/2 může obsahovat více souběžně otevřených proudů, s obou koncových bodů prokládaných rámů z více proudů.
  • .
  • Streamy mohou být uzavřeny v obou koncových bodech.

.JS a .. .

Je pravda, že s HTTP/2 může server’ . Jakmile však klient otevře proud odesláním požadavku, mohou obě strany odesílat data . Vynikajícím příkladem je GRPC, o kterém budeme diskutovat později.

S HTTP/2 je možné dosáhnout obousměrného proudu dat a můžete to tvrdit’s optimálním řešením než něco jako Websockets, nebo můžete tvrdit, že tomu tak není. My’O tom diskutujte podrobněji v sekci WebSocket.

Websockets

Cílem této technologie je poskytnout mechanismus pro aplikace založené na prohlížeči, které vyžadují obousměrnou komunikaci se servery, které se nespoléhají na otevření více připojení HTTP (E.., .

.

. Místo toho se komunikace děje obousměrně. To zlepšuje rychlost a schopnost v reálném čase ve srovnání s původním dlouhodobým a krátkým znečištěním HTTP/1. . Můžete odeslat jakákoli data, text nebo bajty – tato flexibilita je jedním z důvodů, proč jsou websockets populární.

Některé z nich mohou znít povědomě toho, o čem jsme diskutovali v sekci HTTP/2, ale to’. My’Porovnejte je více později.

Jak fungují websockets

Websockets efektivně běží jako transportní vrstva nad TCP.

Aby se vytvořil připojení WebSocket, musí klient a server nejprve provést handshake přes normální HTTP/1.1 připojení. Tento handshake je most z HTTP do Websockets.

Požadavek na upgrade WebSocket

. Klient může použít HTTP/1.

Získejte /chat http /1.1 Host: Příklad.COM: 8000 Upgrade: WebSocket Připojení: Upgrade Sec-Websocket-Key: dghlihnhbxbszsbub25jzq == Sec-Websocket-Version: 13

Http/1.1 101 Spínací protokoly Upgrade: WebSocket Připojení: Upgrade SEC-Websocket-Accept: S3pplmbitXaq9kygzzhzrbk+Xoo =

Websockets vyžaduje jednotný identifikátor zdroje (URI) se schématem WS: // nebo WSS: //. Schéma WS: // se používá pro nešifrovaná připojení a schéma WSS: // se používá pro šifrovaná připojení, podobně jako v tom, jak URL HTTP používají http: // nebo https: // schéma schématu.

Jakmile je navázán obousměrný komunikační kanál, může klient a server odesílat zprávy tam a zpět. Tyto zprávy mohou být cokoli od binárních dat po text. Připojení WebSocket zůstane otevřené, dokud se klient nebo server neodpojí.

Multiplexování WebSocket

V době psaní protokol Websocket nepodporuje vestavěné multiplexování. Diskutovali jsme o multiplexingu v sekci HTTP/2 a zjistili jsme, že’s vestavěnou funkcí pro HTTP/2 a’. Každý proud získá jedinečný identifikátor a všechny zaslané rámy mají ID spojené s odpovídajícím proudem.

Nepoddajování multiplexování znamená, že protokol WebSocket vyžaduje nové přepravní připojení pro každé připojení WebSocket. . Chcete-li mít multiplexování přes websockets, je obvykle něco, co budete muset implementovat jako vývojář nebo se spolehnout na plugin nebo knihovnu třetích stran nebo knihovny.

WebSocket vs http/2

Takže má HTTP/2 nahrazené websockets? Krátká odpověď je ne. Delší odpověď je, že HTTP/2 umožňuje obousměrné streamování a v důsledku toho nejsou Websockets jedinou/nejlepší možností. HTTP/2 jako specifikace pro vás dělá více práce ve srovnání s WebSockets. Má vestavěné multiplexování a ve většině případů bude mít za následek méně otevřených připojení TCP k původu. Na druhé straně, WebSockets poskytuje hodně svobody a nejsou restriktivní v tom, jak jsou data odesílána mezi klientem a serverem, jakmile je navázáno připojení. Budete však muset zvládnout opětovné připojení sami (nebo se spolehnout na knihovnu, která to pro vás dělá).

Který z nich je nakonec lepší a kde bude pracovat a druhý nebude, je na debatu a tento článek neposkytuje názornou odpověď. Websockets nabízejí velkou flexibilitu a jako zavedený standard je plně podporován všemi moderními prohlížeči a ekosystém kolem klientských a serverových knihoven je robustní.

Podrobnější a uvázanější diskuse naleznete v těchto otázkách přetečení na zásobníku:

  • Dělá HTTP/2 zastaralé
  • HTTP/2 nebo WebSockets pro zprávy klienta s nízkou latencí na server
  • HTTP/2 vs. Web-sockety pro obousměrné streamování zpráv

Existuje také RFC, který umožňuje mechanismus pro spuštění protokolu WebSocket v jednom proudu připojení HTTP/2.

Schopnost bootstrap websockets z HTTP/2 umožňuje sdílet jedno připojení k TCP v obou protokolech a rozšiřuje efektivnější využití sítě HTTP/2 do webových řazení.

Toto bylo implementováno v Chrome a Firefoxu. Zde si můžete přečíst dokument a motivaci Chrome.

Kdy byste měli používat websockets?

Websockets se nejlépe hodí pro aplikace, které vyžadují obousměrnou komunikaci v reálném čase a když je třeba rychle přenášet malé kusy dat, například:

  • Chatovací aplikace
  • Hry pro více hráčů
  • Živý sportovní ticker
  • Krmivá se aktivita v reálném čase

Shodou okolností je to oblast, kde má náš tým hodně zkušeností. ’.

Podpora pro WebSockets je dobrá a byla podporována hlavními prohlížeči a klienty po dlouhou dobu a je také dobře zdokumentovaná a snadno použitelná. Websockety by však neměly být nadměrně používány; V závislosti na tom, co chcete, mohou existovat lepší alternativy.

Například události odeslané serveru (SSE) jsou efektivní přes HTTP/2 a jednoduché použití. SSE není obousměrná komunikační systém; Server jednostranně tlačí data k klientovi. Pokud však vše, co potřebujete, je způsob, jak server odesílat data klientovi, je to potenciálně lepší volba než přidání režijních stránek WebSockets. SSE také spadne zpět na HTTP/1.. Klient (nebo prohlížeč) navíc spravuje připojení pro vás a podporuje automatické opětovné připojení.

Pokud je ztraceno spojení přes webové blokování, neexistují žádné zahrnuté mechanismy pro vyvážení zátěže nebo pro opětovné připojení. .

Grpc

GRPC je moderní open source vysoce výkonný rámec pro vzdálené procedury (RPC), který může běžet v jakémkoli prostředí. Může efektivně propojit služby v datových centrech a napříč datovými centry s podporou pluggable pro vyvážení zátěže, sledování, kontrolu a autentizaci zdraví. Je také použitelné v poslední míli distribuovaných výpočetních stránek pro připojení zařízení, mobilních aplikací a prohlížečů k backend služeb.

GRPC je open-source, smluvní systém RPC původně vyvinutý na Google. GRPC umožňuje aplikacím transparentně a zjednodušuje budování připojených systémů.

Generuje křížové platformy pro klient a server pro mnoho jazyků, což umožňuje klientské aplikaci přímo volat metodu na serverové aplikaci na jiném počítači, jako by to byl místní objekt.

Postaveno na HTTP/2, GRPC využívá funkce, jako je obousměrné streamování a vestavěná zabezpečení transportní vrstvy (TLS).

GRPC motivace

To’je důležité se ponořit do motivace za GRPC a proč bylo vynalezeno pochopit jeho výhody. Proč například nepoužívat stávající technologii, kterou již máme: HTTP/2 a WebSockets, například? Proč potřebujeme další vrstvu abstrakce na vrcholu toho, co již máme?

. Některé oblíbené příklady jsou mýdlo, odpočinek a graphql. Můžete si dokonce vytvořit svůj vlastní protokol, poslat data přes RAW TCP a implementaci zvládnout sami, pokud chcete.

Ale bez ohledu na to, co si vyberete jako svůj komunikační protokol, problém spočívá v tom, že musíte zajistit, aby se klient a server dohodli na protokolu. Například, pokud vy’Knihovna klientů, kterou musíte použít k odeslání dat REST, je Knihovna HTTP Knihovna, kterou musíte použít API. Knihovna HTTP je ve výchozím nastavení zabudována do prohlížeče a prohlížeč zpracovává vše pro vás:

  • Zřizuje komunikaci se serverem.
  • Zpracovává HTTP/2 a za ránu HTTP/1. A bude muset v budoucnu podporovat HTTP/3.
  • Zpracovává TLS a vyjednává protokol.
  • Zvládne záhlaví, potoky a všechno ostatní.

Ale co když’? Co když’? .

Naštěstí mnoho oddaných lidí pracuje na různých knihovnách HTTP pro všechny tyto jazyky a rámce. Některé jazyky mají dokonce více knihoven HTTP s různými funkcemi. To vše však přichází za cenu – a to je údržba.

. Ale na vašem front-end Pythonově klientovi ekvivalentní knihovna HTTP nezavedla HTTP/2 nebo již nebyla udržována. Různé knihovny HTTP v jiných jazycích nelze porovnat 1: 1.

Jak se specifikace HTTP vyvíjí, tyto knihovny musí držet krok s pokrokem, bezpečnostními problémy, novými funkcemi a dalšími záplatami. HTTP je pouze příklad a totéž platí pro protokol WebSocket nebo jakýkoli jiný. Něco může být dobře implementováno v hlavních prohlížečích, ale tato funkce musí být přenesena do několika různých jazyků a rámců.

Jak se liší GRPC?

GRPC se pokouší vyřešit tento problém údržbou knihovny pro samotné populární jazyky, což znamená, že všechny přidané funkce budou podporovány všemi těmito jazyky.

Pod kapotou jako protokol používá GRPC HTTP/2, tato implementace je však před vámi skrytá. V budoucnu by udržovatelé GRPC mohli snadno nahradit HTTP/2 HTTP/3 a z této změny budete okamžitě těžit.

GRPC také používá vyrovnávací paměti protokolu jako jazyk definice rozhraní (IDL) a jeho podkladový formát výměny zpráv. Tento formát je jazyk neutrální a umožňuje snadno komunikovat mezi různými programovacími jazyky. ’LL Prozkoumejte tento koncept více v další části.

Komunikace klienta GRPC

Co jsou vyrovnávací paměti protokolu?

Vyrovnávací paměti protokolu jsou jazykové neutrální, neutrální a rozšiřitelný mechanismus pro serializaci strukturovaných dat-myslím XML, ale menší, rychlejší a jednodušší. . Poté můžete použít speciální generovaný zdrojový kód pro snadné psaní a čtení strukturovaných dat do az různých datových toků a pomocí různých jazyků.

Tradičně s API, Don’T má smlouvu definovanou samotným protokolem. Například, pokud vy’znovu používáte odpočinek, ty’Obvykle jen odesíláme zprávy JSON s páry klíčů/hodnot, které jsou’. Tato zpráva může být obvykle cokoli a to’s vás, abyste zajistili, že je definována správná struktura.

Podívejte se na následující užitečné zatížení JSON:

‘id’: 123 ‘název’: ‘Gordon’, ‘e-mailem’: ‘gordon@někde.io’

Jakmile jsou tato data přijata na klientovi/serveru, může být například deserializována do objektu, například:

třídní osoba

Je však na vás jako vývojář, který implementuje správnou logiku serializace a deserilizace pro výše uvedené užitečné zatížení – může to zahrnovat psaní Tojson a Fromjson metody ručně, spoléhat se na generování kódu, nebo by to mohla být vestavěná funkce jazyka, kterým jste’znovu používat.

Bez ohledu na to, jak tyto údaje serializujete, bude muset být základní kód aktualizován, potenciálně ve více prostředích, v případě změny schématu.

U vyrovnávacích pamětí protokolu vytvoříte schéma, které definuje typ objektu pro pole a zadejte, která jsou vyžadována a které jsou volitelné:

// Zpráva o žádosti obsahující osobu&rsquo;s Informační zpráva osoba < optional int32 required string name = 2; optional string email = 3; >// Zpráva o odezvě obsahující pozdrav helloreply

Poté můžete zadat postupy, které chcete vystavit.

// Definice pozdravové služby. Pozdravoře služby < // Sends a greeting rpc SayHello (Person) returns (HelloReply) <>>

Jednou&rsquo;VE Specifikovali datové struktury a schéma, používáte protoc protoc protokoc protoc k generování tříd přístupu k datům ve vašem preferovaném jazyce z vaší definice proto definice.

Budou to rozhraní, která popisují objekty uvedené v souboru proto, s doplňky pro každé pole, jakož i metody pro serializaci/analýzu celé struktury na/ze surových bajtů.

Režimy GRPC

Existují čtyři způsoby dopravy nad GRPC. Tyto čtyři režimy replikují chování, které jsme dříve diskutovali, například normální požadavek/odpověď, SSE a WebSockets.

UNARY RPC

. Klient požádá o některá data a server provádí určitá zpracování a vrací tato data.

Streamování serveru RPC

RPC pro streamování serveru, kde klient odešle jediný požadavek na server a očekává více nebo proud odpovědí. Klient čte z vráceného proudu, dokud už nebudou žádné zprávy.

Příkladem by bylo streamování videa, kde budete žádat o načtení videa a server odpovídá proud videa.

Streamování RPC klienta

Klientské streamování RPC, kde klient píše posloupnost zpráv a odešle je na server, znovu pomocí poskytnutého proudu. Jakmile klient dokončí psaní zpráv, čeká, až si je server přečte a vrátí jeho odpověď.

Příkladem by bylo nahrát velký soubor na server a jakmile jsou všechna data odeslána, může klient odeslat závěrečnou zprávu, která naznačuje, že nahrávání je dokončeno, a server může volitelně reagovat.

Obousměrný proud RPC

Kombinace streamování klienta i serveru. Chat aplikace nebo videohra pro více hráčů je příkladem, kde data musí volně proudit mezi klientem a serverem.

Obousměrné streamování RPC, kde obě strany posílají sekvenci zpráv pomocí proudu čtení. Oba proudy fungují samostatně, takže klienti a servery mohou číst a psát v jakémkoli pořadí, které se jim líbí.

V obousměrném streamování RPC je hovor zahájen klientem, který vyvolává metodu. Zpracování proudu na straně klienta a serveru je specifické pro aplikaci. Vzhledem k tomu, že dva proudy jsou nezávislé, klient a server mohou číst a psát zprávy v libovolném pořadí.

Mikroservisy

.

Interakce GRPC Microservices

V tomto příkladu máme mikroservisy napsané v Pythonu, Javě a Golangu. Musí to posílat data mezi sebou.

Používání HTTP/1.1 a JSON budou vyžadovat, abyste implementovali připojení HTTP a serializaci pro každý jazyk. Budete také muset zajistit, aby bylo schéma správně implementováno pro každý jazyk, a pokud se změní API, musí být všechny služby aktualizovány ručně.

Na druhé straně GRPC zpracovává implementaci HTTP/2.0 Protokol pro nás. Je napsáno jediné schéma a odpovídající kód lze generovat pro všechny použité jazyky. Toto schéma lze považovat za smlouvu, kterou musí všechny jazyky dodržovat, což usnadňuje komunikaci mezi těmito službami a spolehlivějším.

Výkon GRPC

GRPC je rychlá a je obecně mnohem více výkonná než ekvivalent odpočinku:

  • Vyrovnávací paměti protokolu jsou serializovány a odeslány jako binární soubory přes drát, které jsou výrazně menší než normální zprávy JSON.
  • GRPC používá http/2.0, které přináší další vylepšení

GRPC efektivní komprimování odeslaných dat má významnou výhodu, protože čím menší je přenášeno užitečné zatížení dat, tím méně kulatých cest TCP je zapotřebí. Maximální přenosová jednotka (MTU) je měření představující největší datový paket, který zařízení připojené k síti přijme, což je 1 500 bajtů.

Komprese je zpracována pro vás a máte prospěch jednoduše pomocí GRPC. Jako alternativu je možné použít něco jako GZIP k komprimaci zpráv JSON před odesláním pravidelného HTTP. To však může být nepohodlné a přidává vrstvu složitosti. Různé jazyky a prostředí mohou mít také různé úrovně podpory pro GZIP a další ekvivalentní kompresní nástroje. A pro každý jazyk, který používáte, budete muset sami znovu splnit správnou kompresi a komunikační logiku. To je podobný problém jako o tom, o čem jsme diskutovali o knihovně HTTP.

Kdy byste měli použít GRPC?

jestli ty&rsquo;znovu používat několik různých programovacích jazyků, které se musí navzájem pevně integrovat a vyžadují rychlou a časté komunikaci, která posílá spoustu dat, pak by GRPC byla perfektní.

  • S streamováním GRPC to&rsquo;je možné snadno určit pokrok nahrávání/stahování – bez nutnosti provádět žádné zbytečné požadavky na aktualizace.
  • To&rsquo;.
  • Všechny výhody HTTP/2.
  • Pokud GRPC podporuje váš jazyk, done&rsquo;T se musí starat o externí knihovny.
  • GRPC nepodporuje všechny jazyky.
  • Schéma se může cítit restriktivní a těžkopádně.
  • Nastavení může být komplikované ve srovnání s WebSockets.
  • Stále mladé a chyby mohou být obtížné ladit.
  • . Musíte použít knihovnu GRPC-WEB.

Webrtc

Protokol WebRTC je bezplatný projekt s otevřeným zdrojovým kódem, který poskytuje schopnosti komunikace v reálném čase (RTC) pro vaši aplikaci, která funguje na vrcholu otevřeného standardu. Podporuje video, hlas a obecná data odesílaná mezi vrstevníky.

Tato technologie je k dispozici jako sada API JavaScript API pro všechny hlavní prohlížeče a knihovnu pro nativní klienty, jako jsou aplikace Android a iOS.

WebRTC se liší od WebSockets a GRPC základním způsobem, a to je, že jakmile je navázáno připojení, mohou být data (za určitých okolností) přenášena přímo mezi prohlížeči a zařízeními v reálném čase, aniž by se dotkla serveru.

.

Motivace WebRTC

WebRTC má v úmyslu standardizovat, jak jsou média, jako je zvuk a video, sdělena přes drát-a to pohodlně splnit pomocí jednoduchého použití API.

Jiná řešení, jako jsou WebSockets, umožňují přenos jakýchkoli dat mezi dvěma vrstevníky; Tato data však musí být přenášena prostřednictvím proxy nebo serveru. Spoléhání se na jiný server přidává latenci, protože na všechno, co je posíláno skrz něj. Mezi oběma vrstevníky je prostřední člověk. Pro streamování videa nebo dokonce chat v reálném čase je tato latence nežádoucí.

Prohlížeče jsou nyní také silnější než před několika lety. Prohlížeče mají přístup k webové kameře a mikrofonu, které vyžadují vestavěné API a snadný způsob přenosu těchto bohatých informací. WebRTC je určen k zjednodušení celého tohoto procesu a odhalení snadno použitelného rozhraní API nativně dostupného na prohlížeči.

Problém s WebRTC

Motivace je definována a zdá se, že WebRTC je magické řešení umožňující rychlejší komunikaci mezi dvěma vrstevníky. Bohužel však existuje několik problémů.

Prvním problémem je, že vytvoření připojení peer-to-peer není jednoduché-internet je komplikovaný a existuje mnoho směrovačů, proxy a firewallů mezi Alice v Kalifornii a Ben v Jižní Africe. A za určitých okolností nemusí být možné mít přímou hranici mezi dvěma vrstevníky. Možná spojení mezi dvěma vrstevníky může obejít firewall, která zabraňuje otevřeným spojení, můžete mít potenciálně veřejnou IP adresu nebo router nemusí umožnit přímé spojení mezi vrstevníky.

Druhým problémem je, že pro dva vrstevníky musí existovat způsob, jak se navzájem objevit a určit optimální trasu, ve které se může dojít k komunikaci. To vyžaduje, aby určité informace byly sdíleny mezi dvěma klienty, než mohou vědět, jak nejlépe komunikovat mezi sebou – a běžným způsobem sdílení těchto informací je použití WebSockets.

Což je trochu vtipné. An Http Připojení je upgradováno na a WebSocket připojení pouze ke sdílení informací a vytvoření a Webrtc spojení.

Pokud opravdu chcete ocenit to, co WebRTC dělá, a jeho složitost, budete se muset seznámit s některými potenciálně neznámými pojmy: Nat, Ohrotejte, odbočujte, led, SDP a signalizace.

Jak funguje Webrtc?

Ve výše uvedeném přehledu jsme popsali motivaci WebRTC, která popisuje základní myšlenku, jak to funguje. Tato část se ponoří do některých témat na nižší úrovni, která musíte pochopit, abyste plně pochopili WebRTC.

Překlad síťové adresy (NAT)

Pochopení toho, co je NAT a jak to funguje, je nezbytné pro pochopení WebRTC.

. Směrovač bude mít veřejnou IP adresu a každé zařízení připojené k routeru bude mít soukromou IP adresu.

Tato zařízení nejsou&rsquo;t přímo vystavený internetu. Místo toho veškerý provoz prochází routerem, který komunikuje s vnějším světem. Když požadujete prostředky ze vzdáleného serveru, router je za za to odpovědný &ldquo;směrování&rdquo; Žádost z místního počítače na tento server a směrování odpovědi ze serveru zpět do místního počítače.

Tyto požadavky jsou přeloženy ze zařízení&rsquo;S soukromých IP adresa do routeru&rsquo;s veřejnou IP s jedinečným portem – který je poté uložen v tabulce NAT. Tímto způsobem není nutné mít jedinečnou veřejnou IP pro každé zařízení v místní síti.

Nat Table

Obrázek nahoře je zjednodušujícím příkladem toho, jak by vypadal tabulka NAT. Nechat&rsquo;s předstírejte místní zařízení se soukromou IP 192.168..50, požaduje veřejnou adresu 82.88.31.26:80 pro některá data.

Toho je dosaženo místním zařízením, které nejprve odešle požadavek do routeru, který požadavek směruje na vzdálené zařízení. Směrovač pak řekne vzdálenému zařízení, aby odeslal odpověď na její externí IP adresu s jedinečným portem, který je v tomto příkladu 86.88.71.25: 8830.

Tento jedinečný port je důležitý, protože umožňuje routeru určit, které místní zařízení podalo požadavek. Všechny tyto informace jsou uloženy v tabulce NAT. Jakmile router dostane odpověď, může provést vyhledávání a rozhodnout, na které místní zařízení by měla být odezva předána.

To je poměrně jednoduché, když máme normální pár požadavků/odpovědí – jeden zařízení a jeden server. Co se však stane, když se jiné externí zařízení s úplně jinou IP adresou rozhodne odesílat pakety na externí IP adresu routeru na stejném portu, který byl dříve použit? Měl by jej směrovač doplnit do místního zařízení, které je mapováno na toto číslo portu?

Toto rozhodnutí závisí na tom, který překlad NAT router používá, a nakonec určuje, zda lze vytvořit připojení peer-to-peer. V závislosti na routeru, který používáte, implementuje jiný překlad NAT. Existují čtyři různé metody překladu NAT:

  • One-to-One Nat
  • Adresa omezená Nat
  • Port omezený Nat
  • Symetric Nat

One-to-One Nat: Mapuje jednu externí IP adresu a port (obvykle veřejný) na jednu interní IP adresu a port (obvykle soukromý). Ve výše uvedeném příkladu, pokud router obdrží odpověď na portu a externí IP 86.88.71.25, předá to místnímu zařízení 192.168.1.50, Protože se jedná o místní zařízení, které podalo žádost (informace získané z tabulky NAT). Směrovač se nestará o cílovou IP nebo odkud pocházela odpověď. Pokud si to&rsquo;s na konkrétním externím portu jde do místního zařízení.

Adresa omezená Nat: Vzdálené zařízení může odeslat paket do místního zařízení, pouze pokud místní zařízení dříve odeslalo paket na vzdálenou IP adresu. Stručně řečeno, dovolujeme to pouze tehdy, pokud jsme s tímto hostitelem komunikovali. 86.88.71.25.

Port omezený Nat: Stejné jako adresa omezená NAT, ale omezení také zahrnuje čísla portů. Vzdálené zařízení může odeslat paket do interního zařízení pouze tehdy, pokud interní zařízení dříve poslalo paket na IP adresu X a port P. Ve výše uvedeném příkladu pouze povolte 86.88.71.25 a port 80.

Symetric Nat: Nejvíce omezující. Za to Externí IP, externí port, Cílová IP, a cílový port Všichni musí odpovídat tomu, co je přítomno v tabulce NAT. To znamená, že pakety lze odeslat do konkrétního portu místního zařízení, pokud bylo toto zařízení, které požadovalo cílovou IP a port.

WebRTC nefunguje nad symetrickým NAT a pochopit, proč musíme pochopit, co je omračující server.

Traversal Utilities pro NAT (omračování)

Stun je protokol, který vám řekne vaši veřejnou IP adresu/port prostřednictvím NAT a aby určil jakákoli omezení ve vašem routeru, která by zabránila přímému spojení s vrstevníkem. Server omračování je mechanismus pro klienty, aby objevil přítomnost NAT, jakož i typu NAT, a pro určení externí IP adresy NAT a mapování portů.

Účelem žádosti o omráčení je určit vaši veřejnou přítomnost tak, aby tuto přítomnost veřejnosti mohla být poté komunikována s někým jiným, aby se s vámi mohli spojit – tato komunikace se označuje jako signalizace, o které budeme diskutovat později později.

Funguje to pro jeden na jednoho, Omezená adresa, a Port omezený Nat. Ale nefunguje pro Symetric Nat. Protože když požádáte o omračující server pro vaše veřejné informace, byl vytvořen komunikační pár, zejména pro klienta, který žádost o to. Není možné zapojit dalšího vrstevníka pomocí symetrické Nat – komunikace na portu místního zařízení je omezena na omráčený server.

. Existují veřejné omračující servery, které lze zdarma dotazovat.

Níže uvedený obrázek ukazuje, kdy omráčení funguje a kdy lze vytvořit připojení peer-to-peer.

Server WebRTC STUN - Když to funguje

Na druhou stranu, pokud nelze navázat připojení peer-to-peer, například když je za symetrickým nat-pak konečné spojení v třetím kroku nebude povoleno konečné spojení v kroku třetí. Protože počáteční připojení bylo vytvořeno pomocí Stun Server a žádný jiný vrstevník nemůže tuto informaci o připojení použít.

V případě, jako je toto, kde nelze navázat přímé připojení, musíme využít server na otočení.

Traversal pomocí relé kolem NAT (Turn)

Turn je protokol pro předávání síťového provozu, pokud nelze navázat přímé spojení mezi dvěma vrstevníky. Například, pokud je jeden peer za symetrickou NAT, je zapotřebí dedicionizovaného serveru k přenosu provozu mezi vrstevníky. V takovém případě byste vytvořili spojení se serverem na otočení a sdělili všem vrstevníkům, aby poslali pakety na server, který vám poté bude předán.

To přichází s režijní náklad a server na otočení může být nákladné údržbu a provoz.

Následující obrázek ukazuje, jak se server otočení používá k přenosu zpráv mezi dvěma nebo více vrstevníky.

Webrtc otočný server

Interaktivní zařízení pro připojení (ICE)

ICE používá kombinaci protokolů omráčení a otočení k poskytnutí mechanismu pro hostitele k objevování veřejných IP adres druhého a vytvoření přímého spojení. Pokud je přímé připojení nemožné, led použije k vytvoření reléového spojení mezi oběma hostiteli.

Všechny tyto možné způsoby potenciálního navázání spojení se nazývají kandidáti na led. Všechny shromážděné adresy jsou zasílány vzdálenému vrstevníkovi prostřednictvím SDP, které prozkoumáme další. WebRTC používá tyto informace o každém klientovi k určení nejlepšího způsobu, jak se připojit k jinému vrstevníkovi. Je možné, že oba vrstevníci jsou na stejné NAT a že lze vytvořit místní připojení, nebo by mohlo být tak, že oba vrstevníci jsou za symetrickou NAT a vyžadují relé pomocí serveru otočení.

Protokol (SDP)

SDP je v podstatě formátem dat pro popis mediálních relací pro oznámení o relacích, pozvání relace a další formy zahájení relace. Je to standard pro popis multimediálního obsahu pro připojení, jako je rozlišení, formáty, kodeky a šifrování.

Důležité je, že to&rsquo;S také používá k popisu kandidátů na led a další možnosti sítí. Když se chce Peer A připojit k Peer B, musí se propojit informace o SDP. Jak je tento SDP sdílen, je zcela až do – to se označuje jako signalizace a prozkoumáme jej další.

Signalizace – navázání spojení

Signalizace je proces odesílání kontrolních informací mezi dvěma zařízeními k určení komunikačních protokolů, kanálů, mediálních kodeků a formátů a metody přenosu dat, jakož i jakékoli požadované informace o směrování. Nejdůležitější věc, kterou je třeba vědět o signalizačním procesu pro WebRTC: není definována ve specifikaci.

Připojení peer se zabývá připojením dvou aplikací na různých počítačích. Spojení je vytvořeno prostřednictvím procesu objevování a vyjednávání s názvem Signalizace.

Důležitá upozornění spočívá v tom, že WebRTC nemá v rámci specifikace zabudováno signalizaci, protože není možné, aby se dvě zařízení přímo navzájem kontaktovaly, což jsme podrobně podrobně prozkoumali dříve. Pro dva vrstevníky, kteří se mohou připojit pomocí webRTC, si vyžadují data druhého SDP.

Proto je na vás jako vývojář vytvořit způsob, jak tyto informace sdílet dvě zařízení. Populární možností jsou WebSockets nebo signalizační informace mohou být zaslány tam a zpět přes e -mail nebo doručeny pěšky a zadány ručně, aby se vytvořilo připojení.

Jakmile jsou tyto informace sdíleny, máte vše, co potřebujete pro dva vrstevníci, aby vytvořili připojení WebRTC, může to být přímé připojení, nebo to může být prostřednictvím serveru na otočení.

Kdy byste měli použít webrtc?

Můžete se dokonce zeptat: Proč bych měl používat WebRTC? Zdá se složité porozumět a ještě komplikovanější nastavit.

Nastavení je komplikované, ale existuje spousta výhod:

  • API se snadno používá a je k dispozici přímo ve vašem prohlížeči.
  • Má dobrý výkon, což umožňuje přenos obsahu vysoké šířky pásma, jako je video nebo zvuk.
  • Lze snadno implementovat pokročilejší funkce, jako je sdílení obrazovky a sdílení souborů.
  • Podporuje připojení peer-to-peer se sníženou latencí.
  • Zdarma a otevřený zdroj.
  • Žádná vestavěná signalizace.
  • Musíte udržovat servery omráčení a otočení.
  • Pro skupinové připojení (například skupinový videohovor) může být zapotřebí SFU.
  • Komplikované nastavení a porozumění.

Který byste si měli vybrat?

Protokol, který si vyberete, bude záviset na vašich konkrétních potřebách.

Http. V závislosti na vaší aplikaci nemusíte potřebovat plnou duplexní komunikaci a něco jako SSE bude více než dost. V tomto článku jsme také zjistili, že WebSockets a GRPC jsou závislé na HTTP, zatímco WebRTC vyžaduje pro signalizaci nějaký jiný kanál. To&rsquo;S hodnotami nejprve prozkoumat, zda HTTP vyřeší vaši aplikaci potřeby před ponořením do těchto dalších protokolů.

Websockets jsou nejlépe vhodné pro aplikace v reálném čase, které vyžadují obousměrnou komunikaci, jako jsou chatovací aplikace. Jsou také relativně snadné nastavit a používat. Websockets však nejsou tak efektivní jako GRPC nebo WebRTC a nejsou vhodné pro aplikace, které potřebují odeslat mnoho dat.

Grpc je efektivnější protokol než WebSockets a je vhodnější pro aplikace, které potřebují odeslat mnoho dat. GRPC je však složitější nastavit a používat než WebSockets. Pokud potřebujete provést mnoho malých hovorů API, GRPC je dobrá volba. Nebo, když implementujete mikroservisy s různými programovacími jazyky, které je třeba komunikovat, pak GRPC&rsquo;s serializovanými strukturovanými údaji a generováním kódu vám ušetří spoustu času. To&rsquo;také stojí za zmínku, že můžete&rsquo;T snadno použijte GRPC z prohlížeče. Z tohoto důvodu potřebujete ve svém backendu vyhrazený proxy, který překládá hovory – viz Grpc -Web.

Webrtc je nejúčinnějším protokolem pro komunikaci v reálném čase s nízkou latencí mezi prohlížeči a zařízeními a je vhodný pro aplikace, které potřebují odesílat spoustu dat. WebRTC také poskytuje snadno použitelné API přímo v prohlížeči, což usnadňuje sdílení fotoaparátu, zvuku, obrazovky nebo jiných souborů. WebRTC však může být komplikovaný pro nastavení a použití, protože vyžaduje provedení signalizace a udržování serveru otočení a omráčení.

Závěr

Budoucnost uvidí více protokolů, změn a dalších vylepšení. HTTP/3 je již vydán a existuje také nový komunikační protokol s názvem WebTransport, potenciální náhrada za WebSockets.

Doufáme, že jste tento článek považovali za užitečný a že vám pomůže učinit informované rozhodnutí. .

WebRTC vs HLS: Porovnání mezi protokoly streamování

Tento blogový příspěvek porovnává WebRTC a HLS, dva z nejoblíbenějších streamovacích protokolů. Zkoumá výhody a nevýhody každého protokolu a zkoumá jeho aplikace. .

Ashik Ts

22. února 2023

WebRTC vs HLS: Porovnání mezi protokoly streamování

V dnešním digitálním věku se streamovací protokoly staly nezbytnými pro konzumaci a sdílení médií. Od živých toků po video na vyžádání nám protokoly streamování umožnily přístup k obsahu kdekoli, kdykoli, kdykoli. Ale s tolika dostupnými možnostmi, vítězství, které je nejlepší pro vaše potřeby, může trvat čas a úsilí. V tomto článku se podíváme na dva z nejpopulárnějších protokolů streamování: WebRTC a HLS, porovnáme je a pomůžeme vám učinit informované rozhodnutí.

Co je Webrtc?

WebRTC je bezplatný a open-source protokol vyvinutý W3C. Umožňuje komunikaci v reálném čase, jako jsou hlasové a videohovory, online konference a chat. WEBRTC se v poslední době stala prominentní díky své schopnosti dodávat nízkou latenci, vysoce kvalitní video a zvukové proudy.

Aplikace WebRTC

Zde jsou některé z nejčastěji zaměstnaných případů použití WebRTC:

  • Hlasové a videohovory: Jedním z nejpopulárnějších případů použití pro WebRTC je hlasové a videohovory. . Podniky široce používají tuto funkci pro interní komunikaci, spolupráci a aplikace orientované na spotřebitele pro sociální sítě a online datování.
  • Online konference: Dalším populárním případem použití pro WebRTC je online konference. Umožňuje více uživatelům připojit se k virtuální zasedací místnosti a vzájemně spolupracovat prostřednictvím videa a zvuku, stejně jako sdílení obrazovek a dokumentů. Podniky široce používají tuto funkci pro vzdálené schůzky a prezentace, jakož i vzdělávacími institucemi pro online třídy a přednášky.
  • Povídat si: WebRTC také umožňuje textovou komunikaci založenou na v reálném čase prostřednictvím chatu. Tuto funkci lze integrovat do různých aplikací a platforem, jako je sociální sítě, online hraní a zákaznická podpora. .

?

HLS (HTTP Live Streaming) je adaptivní protokol pro streamování bitrate vyvinutý společností Apple. Obecně se používá pro živé streamování na mobilních zařízeních a stolních prohlížečích. HLS je navržen tak, aby pracoval s protokolem HTTP a lze jej snadno integrovat do stávající infrastruktury založené na HTTP.

Aplikace HLS

Zde je některé z běžnějších způsobů, jak se HLS používá v dnešním dni a věku:

  • Živý přenos: . Protokol je navržen tak, aby zvládl vysoký provoz a poskytoval pro diváky hladký zážitek. Adaptivní funkce bitrate umožňuje proudu přizpůsobit se připojení k internetu diváka a poskytuje lepší zážitek z prohlížení.
  • Video-on-Demand (VOD): HLS se také běžně používá pro obsah videa na vyžádání (VOD), jako jsou filmy, televizní pořady a video tutoriály. Protokol umožňuje snadnou integraci se systémy správy obsahu a zážitek z hladkého streamování pro diváka s adaptivním bitrate.
  • IPTV a OTT: HLS se také používá ve službách IPTV a Over-the-Top (OTT), jako je streamování televizních a videozáznamů. Schopnost protokolu zvládnout vysoký provoz a poskytovat zážitek z hladkého streamování z něj dělá oblíbenou volbu pro tyto aplikace.
  • Mobilní streamování: HLS je také oblíbená pro mobilní streamování, protože je podporováno na platformách iOS i Android.
  • HLS se používá v podnikových komunikačních platformách, které zaměstnancům umožňují streamovat videa, sdílet obrazovky a provádět zvukové/videohovory, protože poskytuje hladký zážitek z streamování a je kompatibilní s většinou zařízení.

Webrtc vs HLS: Podrobné srovnání

Vlastnosti HLS
Podpora prohlížeče Chrome, Firefox, Safari, Edge (s pluginem) Safari, Chrome, Edge, Firefox (s pluginem)
Podpora zařízení Windows, MacOS, Linux, iOS, Android iOS, Android, MacOS, Windows
Podpora kodeku VP8, VP9, ​​H.264, h.265 .264, h.265
Latence Vysoký
Bezpečnostní Vysoký Střední
Kvalita videa Vysoký Vysoký
způsob doručení Peer-to-peer Založené na serveru
Škálovatelnost Vysoký Vysoký
Kompatibilita Omezený Široký

Při rozhodování, jaký protokol použít, je důležité zvážit faktory, jako je latence, bezpečnost, kvalita videa, metoda doručení, škálovatelnost a kompatibilita.

Latence

Pokud jde o latence, má WebRTC jasnou výhodu oproti HLS. WebRTC používá komunikaci v reálném čase, což znamená, že video je okamžitě dodáno divákovi. Na druhou stranu HLS používá vyrovnávací mechanismus, který zpožďuje doručení videa. V závislosti na podmínkách sítě může být toto zpoždění kdekoli od několika sekund do několika minut. .

Bezpečnostní

WebRTC i HLS používají šifrování k zabezpečení video proudů. Úroveň zabezpečení poskytnutá každým protokolem je však jiná. WEBRTC používá k šifrování proudu videa (SRTP) Secure Real-Time Transport Protocol (SRTP), který je považován za jednu z nejbezpečnějších metod šifrování. Na druhé straně HLS používá protokol HTTP Secure (HTTPS) k šifrování proudu videa. Zatímco HTTPS je považován za bezpečný, SRTP je méně bezpečný. Z těchto důvodů je WebRTC vhodnější pro případy použití, které vyžadují vysokou úroveň bezpečnosti, jako jsou finanční transakce a vládní komunikace.

Kvalita videa

WEBRTC i HLS jsou schopny dodávat vysoce kvalitní video. Kvalita videa dodávaná každým protokolem se však může lišit v závislosti na podmínkách sítě. WebRTC používá adaptivní streamování bitrate, které upravuje kvalitu videa v reálném čase na základě síťových podmínek diváka. To znamená, že kvalita videa bude vysoká i na sítích s nízkou šířkou pásma. Na druhé straně HLS používá předběžný mechanismus doručování videa, který může vést k vyrovnávání a koktání v sítích s nízkou šířkou pásma. Výsledkem je, že WebRTC je vhodnější pro případy použití, které vyžadují vysoce kvalitní video v sítích s nízkou šířkou pásma.

způsob doručení

WebRTC a HLS používají k streamování videa různé metody doručení. WebRTC používá metodu doručení peer-to-peer (P2P), což znamená, že video je dodáno přímo z jednoho diváka do druhého. To snižuje zatížení serveru a zvyšuje škálovatelnost proudu videa. Na druhou stranu HLS používá metodu doručení klienta-serveru, což znamená, že video je dodáváno ze serveru divákovi. To může vést k problémům s škálovatelností, zejména v době špičky. Výsledkem je, že WebRTC je vhodnější pro případy použití, které vyžadují vysokou scability, jako jsou živé události a online hraní.

Škálovatelnost

Webrtc a HLS mají různé charakteristiky škálovatelnosti. WebRTC používá metodu doručení P2P, která snižuje zatížení serveru a zvyšuje škálovatelnost proudu videa. Na druhou stranu HLS používá metodu doručování klienta-serveru, což může vést k problémům s škálovatelností, zejména v době špičky provozu. Výsledkem je, že WebRTC je vhodnější pro případy použití, které vyžadují vysokou scability, jako jsou živé události a online hraní.

Kompatibilita

WebRTC a HLS mají různé charakteristiky kompatibility. WebRTC je kompatibilní s většinou moderních prohlížečů, včetně Chrome, Firefox a Safari. Není však kompatibilní s internetovým průzkumníkem a hranou. Na druhé straně je HLS kompatibilní s většinou moderních prohlížečů, včetně Chrome, Firefoxu, Safari, Internet Explorer a Edge. Z tohoto důvodu je HLS vhodnější pro případy použití, které vyžadují kompatibilitu s širokou škálou prohlížečů a zařízení.

Webrtc vs hls: Což je lepší?

Webrtc je skvělá volba pro aplikace s nízkou latencí, v reálném čase. . Na druhou stranu, HLS je vynikající volbou pro streamování živého videa pro velké publikum. Je zvláště vhodný pro případy použití, jako je streamování živých sportů, koncertů a dalších událostí vyžadujících vysokou škálovatelnost. Schopnost společnosti HLS přizpůsobit se různým podmínkám sítě je oblíbenou volbou pro streamování obsahu divákům na různých zařízeních a sítích.

. . HLS je široce podporován, což z něj činí všestrannější možnost streamování obsahu pro širší publikum. To však přichází za cenu mírně vyšší latence.

Pokud je vaším hlavním zaměřením v reálném čase, může být vaše lepší volba WEBRTC. Jinak, pokud je vaše hlavní zaměření na škálovatelnost a kompatibilitu, pak by HLS mohla být lepší volbou.

Závěr

Závěrem lze říci, že jak WebRTC, tak HLS mají své vlastní jedinečné rysy a případy použití, díky nimž jsou vhodné pro různé typy streamování. WebRTC je nejvhodnější pro nízkou latenci, komunikaci v reálném čase, jako jsou hlasové a videohovory, online konference a chat. Na druhé straně je HLS nejlépe vhodné pro vysoce kvalitní streamování předem nahraných videí na široké škále zařízení.

Časté časté

. Používá webrtc TCP nebo UDP?

WEBRTC používá jak TCP, tak UDP v závislosti na typu přenášených dat. Používá TCP pro ovládání zpráv a UDP pro streamování médií.

. Používá YouTube HLS?

Ano, YouTube používá HLS (HTTP Live Streaming) jako jeden ze svých streamovacích protokolů k doručování videí divákům.

. Je webrtc pouze pro prohlížeče?

.

4. Používá Netflix webrtc?

Ne, Netflix nepoužívá pro streamování WebRTC. Používají svou vlastní proprietární technologii zvanou adaptivní streamování přes HTTP (ASOH), která je založena na HTTP Live Streaming (HLS).