Použití datových kanálů WebRTC
souhrn
V této příručce prozkoumáme, jak přidat datový kanál do připojení vrstevníků, který pak lze použít k bezpečnému výměně libovolných dat. Podíváme se na to, jak vytvořit datový kanál a diskutovat o možnostech automatického a manuálního vyjednávání.
Klíčové body
1. Transport SCTP se používá pro přenos a přijímání dat pro RTCDatachannels na připojení peer.
2. Rozhraní RTCpeerConnection má vlastnost pouze s názvem SCTP, která vrací objekt RTCSCTPTRANSPORT popisující používaný transport SCTP.
3. K vytvoření nového datového kanálu se používá metoda CreatedAtachannel () na rozhraní RTCPEerConnection.
. Automatické vyjednávání umožňuje, aby RTCPEerConnection zvládl vyjednávání a vytváření datového kanálu.
5. Manuální vyjednávání zahrnuje vytvoření objektu RTCDatachannel s vyjednaným majetkem nastaveným na True a poté vyjednávání připojení mimo pásmo.
6. Maximální velikost zprávy, kterou lze odeslat přes datový kanál.
7. Komponenty WebRTC používají šifrování k zabezpečení dat přenášených přes RTCDatachannel.
8. Specifikace datových kanálů WebRTC lze nalézt ve WEBRTC: Komunikace v reálném čase ve specifikaci prohlížečů.
. Kompatibilita datových kanálů WebRTC se v průběhu prohlížečů liší.
10. Další zdroje a možnosti problémů s úpravou nebo hlášením na stránce najdete v části „Viz také“.
Otázky a odpovědi
-
?
Bloky ACK se používají k informování odesílatele, že některé pakety nemusí být nesnášeny, i když v dodávaných paketech je mezera. Například, pokud jsou doručeny kousky dat s TSNS 100, 102, 103 a 104, ale kumulativní TSN ACK je 100, bloky ACK lze použít k označení, že TSNS 102, 103 a 104 nemusí být nesnášen. -
Co se vrací vlastnost SCTP rozhraní rozhraní RTCPeerConnection?
Vlastnost SCTP vrací objekt RTCSCTPTRANSPORT, který popisuje transport SCTP, který se používá pro přenos a přijímání dat pro RTCDatachannels na připojení peer. Pokud SCTP nebyla sjednána, je hodnota nulová. -
?
Datový kanál může být vytvořen metodou CreatedAtachannel () na rozhraní RTCPEerConnection. . -
Jaký je rozdíl mezi automatickým vyjednáváním a manuálním vyjednáváním?
Při automatickém vyjednávání zpracovává RTCPEerConnection vyjednávání a vytváření datového kanálu. Metoda CreatedAtachannel () se vyvolává, aniž by zadala hodnotu pro vyjednanou vlastnost nebo s hodnotou false. Při manuálním vyjednávání je datový kanál vytvořen s vyjednanou vlastností nastavenou na True a vyjednávání se provádí mimo banda pomocí webového serveru nebo jiných prostředků. -
Jak lze určit maximální velikost zprávy, kterou lze odeslat přes datový kanál?
Maximální velikost zprávy lze určit přístupem k vlastnosti MaxMessagesize objektu RTCSCTPTRANSPORT, který představuje transport SCTP používaný pomocí RTCpeerConnection. -
Jsou data přenášena na RTCDatachannel automaticky zabezpečené?
Ano, všechna data přenášená na RTCDatachannel jsou automaticky zajištěna pomocí zabezpečení přenosové vrstvy Datagram (DTL). Komponenty WebRTC jsou povinny používat šifrování k zajištění zabezpečení dat. -
Kde lze najít specifikace datových kanálů WebRTC?
Specifikace datových kanálů WebRTC lze nalézt ve WEBRTC: Komunikace v reálném čase ve specifikaci prohlížečů, konkrétně v sekci DOM-RTCPEerConnection-SCTP. -
Jaká je kompatibilita datových kanálů WebRTC napříč prohlížeči?
. Je důležité testovat a zajistit kompatibilitu pro cílové prohlížeče a verze. -
Jaké jsou některé další zdroje související s datovými kanály WebRTC?
Stránku můžete upravovat na GitHubu, hlásit problémy obsahu nebo zobrazit zdrojový kód na GitHubu. .ACK blokuje TSN, které byly přijaty po kumulativním TSN ACK . Používá se, pokud je mezera v dodávaných paketech. Nechat’s řekněme, že jsou doručeny kousky dat s TSNS 100, 102, 103 a 104. ’ .
RTCPEerConnection: SCTP vlastnost
Pouze pro čtení SCTP Vlastnost na rozhraní RTCPEerConnection Vrací RTCSCTPTRANSPORT popisující transport SCTP, nad kterým jsou data SCTP odesílána a přijímána. Pokud SCTP nebyla sjednána, je tato hodnota nulová .
Transport SCTP se používá k přenosu a přijímání dat pro všechny a všechny rtcdatachannel s na vzájemném připojení.
Hodnota
.
Příklad
const PeerConnection = RtcpeerConnection(;; const kanál = PeerConnection.stvořené("Mydata";; kanál.Onopen = (událost) => kanál.poslat„Odeslání zprávy“);; ;; kanál. (událost => .log(událost.data) ;; const SCTP PeerConnection.SCTP const maxMessagesize .maxMessagesize;;
Specifikace
Specifikace WEBRTC: Komunikace v reálném čase v prohlížečích BCD tabulky načítají pouze v prohlížeči
Viz také
Nalezeno problém s obsahem s touto stránkou?
- .
- .
- Zobrazit zdroj na GitHubu.
Tato stránka byla naposledy upravena 25. dubna 2023 přispěvateli MDN.
.
Použití datových kanálů WebRTC
.
Protože všechny komponenty WebRTC jsou vyžadovány pro používání šifrování, všechna data přenášená na RTCDatachannel jsou automaticky zabezpečena pomocí zabezpečení transportní vrstvy datagramu (DTLS). Další informace naleznete v zabezpečení níže.
Vytvoření datového kanálu
Základní transport dat používaný RTCDatachannelem lze vytvořit jedním ze dvou způsobů:
- . To je snadný způsob a funguje pro širokou škálu případů použití, ale nemusí být dostatečně flexibilní pro vaše potřeby.
- Napište svůj vlastní kód pro vyjednávání přenosu dat a napište vlastní kód, který signalizuje druhému vrstevníkovi, že se musí připojit k novému kanálu.
Pojďme se podívat na každý z těchto případů, počínaje prvním, což je nejběžnější.
.
. .
.
nechat Datachannel = PC."MyApp Channel");; Datachannel.AddEventListener("OTEVŘENO", () => Datachannel);; );;
Manuální vyjednávání
. .
Poté vyjednávejte připojení mimo pásmo, pomocí webového serveru nebo jiných prostředků. . To spojí dva objekty přes RTCPeerConnection .
nechat Datachannel = PC."MyApp Channel", vyjednáno: , >;; .AddEventListener("OTEVŘENO", (událost) => ();; >);; (Datachannel.id);;
V tomto úryvku kódu je kanál vytvořen s vyjednávaným nastaveným na true, pak se ke spuštění vyjednávání používá funkce zvaná requestremoTechannel (), k vytvoření vzdáleného kanálu se stejným ID jako místní kanál.
Tímto způsobem vám umožní vytvářet datové kanály s každým vrstevníkem pomocí různých vlastností a deklarativně vytvářet kanály pomocí stejné hodnoty pro ID .
Datové kanály WebRTC podporují vyrovnávání odchozích dat. To je zpracováno automaticky. I když neexistuje způsob, jak ovládat velikost vyrovnávací paměti, můžete se dozvědět, kolik dat je v současné době vyrovnáno a můžete si vybrat, zda budete informováni událostí, když vyrovnávací paměť začne nízko na frontálních datech. Díky tomu je snadné psát efektivní rutiny, které se ujistí, že jsou vždy připravena data k odeslání, aniž by to překonala paměť nebo úplné zaplavení kanálu.
Pro všechna data přenášená přes síť existují omezení velikosti. Na základní úrovni nemohou být jednotlivé síťové pakety větší než určitá hodnota (přesné číslo závisí na použité síti a použité transportní vrstvě). .
To může komplikovat věci, protože nemusíte nutně vědět, jaké jsou limity velikosti pro různé uživatelské agenty a jak reagují, když je odeslána nebo přijata větší zpráva. I když uživatelští agenti sdílejí stejná základní data knihovny pro manipulaci s ovládáním proudu přenosového protokolu (SCTP), stále mohou existovat variace kvůli použití knihovny. Například jak Firefox, tak Google Chrome používají k implementaci SCTP knihovnu USRSCTP, ale stále existují situace, kdy přenos dat na RTCDatachannel může selhat kvůli rozdílů v tom, jak volají knihovnu a reagovat na chyby, které se vrací, že se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací, které se vrací.
Když dva uživatelé provozující Firefox komunikují na datovém kanálu, limit velikosti zprávy je mnohem větší, než když Firefox a Chrome komunikují, protože Firefox implementuje nyní zastaralou techniku pro odesílání velkých zpráv ve zprávách s roztlouchami SCTP, což Chrome ne. Chrome místo toho uvidí řadu zpráv, o nichž se domnívá, že jsou kompletní, a doručí je do přijímacího rtcdatachannelu jako více zpráv.
Zprávy menší než 16 kib lze odeslat bez obav, protože všichni hlavní uživatelští agenti je zvládnou stejným způsobem. Kromě toho se věci komplikují.
Obavy s velkými zprávami
V současné době není praktické používat RTCDatachannel pro zprávy větší než 64 KIB (16 KIB, pokud chcete podporovat výměnu dat křížového prohlížeče). Problém vyplývá ze skutečnosti, že SCTP – protokol používaný pro odesílání a přijímání dat na RTCDatachannel – byl původně navržen pro použití jako signalizační protokol. Očekávalo se, že zprávy budou relativně malé. Podpora zpráv větších než MTU síťové vrstvy byla přidána téměř jako dodatečná myšlenka, pro případ, že signalizační zprávy musí být větší než MTU. Tato funkce vyžaduje, aby každý kus zprávy měl po sobě jdoucí sekvenční čísla, takže musí být přenášena jeden po druhém, bez jakýchkoli jiných údajů mezi nimi.
To se nakonec stalo problémem. V průběhu času začaly různé aplikace (včetně těch implementujících WebRTC) používat SCTP k přenosu větších a větších zpráv. Nakonec se uvědomilo, že když se zprávy stanou příliš velkými, je možné, aby přenos velké zprávy blokoval všechny ostatní převody dat na tomto datovém kanálu – včetně kritických signalizačních zpráv.
To se stane problémem, když prohlížeče správně podporují současný standard pro podporu větších zpráv-příznak End of Record (EOR), který ukazuje, kdy je zpráva poslední ze série, která by měla být považována za jediné užitečné zatížení. Toto je implementováno v Firefoxu 57, ale dosud není implementováno v Chrome (viz chyba Chromia 7774). S podporou EOR na místě může být užitečná zatížení RTCDatachannel mnohem větší (oficiálně až 256 KIB, ale implementace Firefoxu je omezuje na neuvěřitelných 1 Gib). Dokonce i při 256 kibu je to dostatečně velké, aby způsobilo znatelné zpoždění při zacházení s naléhavým provozem. Pokud jdete ještě větší, zpoždění se může stát neudržitelnými, pokud si nejste jisti svými provozními podmínkami.
Aby se tento problém vyřešil, nový systém plánovače streamu (obvykle označované jako „SCTP NDATA SPECIFIKACE“) byla navržena tak, aby umožnila prokládat zprávy zasílané v různých proudech, včetně proudů používaných k implementaci datových kanálů WebRTC. Tento návrh je stále ve formuláři IETF, ale jakmile bude implementován, umožní se odesílat zprávy s v podstatě žádnými omezeními velikosti, protože vrstva SCTP automaticky prokládá základní díl.
Podpora Firefoxu pro NDATA je v procesu provádění; Viz Bug Firefox Bug 1381145 a sledujte, že je k dispozici pro všeobecné použití. Tým Chrome sleduje jejich implementaci podpory NDATA v Chrome Bug 5696.
Poznámka: Většina informací v této části je částečně založena na blogu Demystifikující omezení velikosti zprávy o datovém kanálu WEBRTC, napsaná Lennart Grahl. Tam jde o trochu více podrobností, ale protože prohlížeče byly od té doby aktualizovány. Kromě toho, jak čas plyne, se to stane více, zejména jakmile budou podpora EOR a NDATA plně integrována do hlavních prohlížečů.
Bezpečnostní
. V případě RTCDatachannel je použitá šifrování je zabezpečení transportní vrstvy Datagram (DTL), která je založena na zabezpečení transportní vrstvy (TLS). Protože se TLS používá k zajištění každého připojení HTTPS, všechna data, která posíláte na datovém kanálu.
Zásadněji, protože WebRTC je spojení mezi dvěma uživatelskými agenty, data nikdy neprochází webem nebo aplikačním serverem. To snižuje příležitosti k zachycení dat.
Nalezeno problém s obsahem s touto stránkou?
- Upravte stránku na GitHubu.
- Nahlásit problém s obsahem.
- Zobrazit zdroj na GitHubu.
Tato stránka byla naposledy upravena 25. dubna 2023 přispěvateli MDN.
Používá webrtc SCTP?
Об эой странице
Мы зарегистрировали подvoje. С помощю этой страницы мы сможем определить, что запросы отправля и а не робот робот. ?
Эта страница отображается т случаях, ког část автоматичч с с с с з з с и и з з з с з с з з с с с с с с с с с с с с с с с с с з с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с которые нарушаюш условия. Страница перестанет отображаться gle того, как эти запросы прекрататсся. До этого момента для исползованиdělá.
Источником запросов может служить вредоносное по, подключаемые мо část и и и и и и и и и и и и и и с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с с. ыылку запросов. Если ы исполззуете общий доступ в интернет, проблема может ыыть с к к к как ж к как ж к каbit ж к как živa. Обратитесь к с с системному администратvo. Подробнее.
Проверка по слову может емами, или же водите запросы очень часто.
Datová komunikace #
Co mám od Webrtc’s datová komunikace? #
WebRTC poskytuje datové kanály pro datovou komunikaci. Mezi dvěma vrstevníky můžete otevřít 65 534 datových kanálů. Datový kanál je založen na datagramu a každý má své vlastní nastavení trvanlivosti. Ve výchozím nastavení má každý datový kanál zaručené doručení. Pokud se blížíte k WEBRTC z mediálních datových kanálů, se může zdát zbytečné. Proč potřebuji celý tento subsystém, když jsem mohl použít pouze HTTP nebo WebSockets? Skutečná síla s datovými kanály je, že je můžete nakonfigurovat tak, aby se chovaly jako UDP s neuspořádaným/ztrátovým doručením. To je nezbytné pro situace s nízkou latencí a vysoce výkonnou. Můžete měřit back -tlačítko a zajistit, že posíláte pouze tak, jak vaše síťová podpora.
Jak to funguje? #
WEBRTC používá protokol pro přenosové řízení toku (SCTP), definovaný v RFC 4960. SCTP je protokol transportní vrstvy, který byl určen jako alternativa k TCP nebo UDP. Pro WebRTC jej používáme jako protokol aplikační vrstvy, který běží přes naše připojení DTLS. SCTP vám dává proudy a každý proud lze nakonfigurovat nezávisle. Datové kanály WebRTC jsou kolem nich jen tenké abstrakce. Nastavení kolem trvanlivosti a uspořádání se právě předává přímo do agenta SCTP. Datové kanály mají některé funkce, které může SCTP’t Express, jako štítky kanálu. K vyřešení, že WebRTC používá protokol pro založení datových kanálů (DCEP), který je definován v RFC 8832. DCEP definuje zprávu pro sdělení označení a protokolu kanálu.
DCEP #
DCEP má pouze dvě zprávy data_channel_open a data_channel_ack . Pro každý otevřený datový kanál musí dálkový ovladač reagovat s ACK.
Data_channel_open #
Tuto zprávu odesílá agent WebRTC, který si přeje otevřít kanál.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ zprávy | Typ kanálu | Priorita | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Parametr spolehlivosti | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Délka štítku | Délka protokolu | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ \ / Label / \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \ \ / Protocol / \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Typ zprávy je statická hodnota 0x03 .
Typ kanálu #
- Data_channel_reliable (0x00) – Žádné zprávy nejsou ztraceny a dorazí do pořádku
- Data_channel_reliable_unordered (0x80) – Žádné zprávy nejsou ztraceny, ale mohou dorazit mimo objednávku.
- Data_channel_partial_reliable_rexmit (0x01) – Zprávy mohou být ztraceny po vyzkoušení požadovaných časů, ale dorazí do pořádku.
- .
- Data_channel_partial_reliable_timed (0x02) – Zprávy mohou být ztraceny, pokud se dopustí’T dorazí do požadované množství času, ale dorazí do pořádku.
- Data_channel_partial_reliable_timed_unordered (0x82) – Zprávy mohou být ztraceny, pokud done’T dorazí do požadované množství času a může dojít mimo objednávku.
Priorita #
Priorita datového kanálu. Nejprve budou naplánovány datové kanály s vyšší prioritou. Velké uživatelské zprávy s nižší prioritou nezmizí odesílání uživatelských zpráv s vyšší prioritou.
Parametr spolehlivosti #
Pokud je typ datového kanálu data_channel_partial_reliable, přípony konfigurují chování:
- Rexmit – definuje, kolikrát odesílatel zprávu znovu odešle před vzdání.
- Načasované – Definuje, jak dlouho (v MS) odesílatel zprávu znovu odešle před vzdání.
Štítek #
Řetězec kódovaný UTF-8 obsahující název datového kanálu. Tento řetězec může být prázdný.
Protokol #
Pokud se jedná o prázdný řetězec, protokol je nespecifikován. Pokud se jedná o nepravitou řetězec, měl by zadat protokol registrovaný v “Registr názvu subprotokolu WebSocket”, definováno v RFC 6455.
Data_channel_ack #
Tuto zprávu odesílá agent WebRTC, aby potvrdil, že tento datový kanál byl otevřen.
Formát paketů #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ zprávy | +-+-+-+-+-+-+-+-+
Protokol přenosu řídicího proudu #
SCTP je skutečná síla za datovými kanály WebRTC. Poskytuje všechny tyto funkce datového kanálu:
- Multiplexování
- Spolehlivé doručení pomocí mechanismu TCP-like Retransmission
- Možnosti částečné relibility
- Vyhýbání se přetížení
- Řízení toku
Abychom pochopili SCTP, prozkoumáme jej ve třech částech. Cílem je, že po této kapitole budete vědět dost, abyste ladili a naučili se hluboké podrobnosti o SCTP.
SCTP je protokol bohatý na funkce. Tato část bude pokrývat pouze části SCTP, které používají WebRTC. Funkce v SCTP, které Webrtc nepoužívají.
S více než dvaceti lety vývoje může být SCTP obtížné plně pochopit.
Asociace #
. Je to stát, který je sdílen mezi dvěma agenty SCTP během komunikace.
Streams #
. Když vytvoříte datový kanál, vlastně jen vytváříte stream SCTP. Každá asociace SCTP obsahuje seznam proudů. Každý proud lze nakonfigurovat s různými typy spolehlivosti.
WebRTC vám umožňuje konfigurovat pouze na tvorbě proudu, ale SCTP ve skutečnosti umožňuje změnit konfiguraci kdykoli.
#
. . Ty’.
Zprávy SCTP Don’T mají limity velikosti jako UDP. .
Protokol SCTP je tvořen kousky. . Tyto kousky se používají pro veškerou komunikaci. Uživatelská data, inicializace připojení, kontrola přetížení a další se provádějí prostřednictvím kousků.
Každý paket SCTP obsahuje seznam kousků. .
Číslo sekvence přenosu #
Číslo sekvence přenosu (TSN) je globálním jedinečným identifikátorem pro kusy dat. Kus dat je to, co nese všechny zprávy, které si uživatel přeje odeslat. TSN je důležitá, protože pomáhá přijímači určit, zda jsou pakety ztraceny nebo mimo objednávku.
Pokud si přijímač všimne chybějícího TSN, není’T poskytněte údaje uživateli, dokud není splněna.
. Když vytvoříte datový kanál s explicitním ID, ve skutečnosti je právě předán přímo do SCTP jako identifikátor proudu. Pokud ne’T projít ID Identifikátor proudu je pro vás vybrán.
. To se používá k jedinečné identifikaci, jaký typ dat se vyměňuje. SCTP má mnoho PPID, ale WebRTC používá pouze následujících pět:
- .
- .
- .
- .
- .
Protokol #
Níže jsou uvedeny některé z kousků používaných protokolem SCTP. Toto není vyčerpávající demonstrace. .
. Před seznamem kousků budete mít také záhlaví.
Bláška dat #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 0 | Vyhrazeno | u | b | e | Délka | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Tsn | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identifikátor proudu | Číslo sekvence proudu | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identifikátor protokolu užitečného zatížení | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ \ \ \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
. Pokud chcete poslat zprávu, která je příliš velká pro jeden kus dat, musí být roztříštěna do více dat kusů odeslaných v samostatných paketech. S B a E BIT a SEQUENCE Numbers je SCTP schopna to vyjádřit.
- B = 1, E = 0 – První kus fragmentované zprávy uživatele.
- B = 0, E = 0 – Střední kus roztříštěné zprávy uživatele.
- .
- B = 1, e = 1 – nefragmentovaná zpráva.
TSN je číslo sekvence přenosu. Je to globální jedinečný identifikátor pro tento kus dat. Po 4 294 967 295 kousků to zabalí na 0. TSN se zvyšuje pro každý kus ve fragmentované zprávě uživatele tak, aby přijímač věděl, jak nařídit přijaté kousky pro rekonstrukci původní zprávy.
Identifikátor proudu je jedinečný identifikátor pro proud, ke kterému patří.
Číslo sekvence proudu je 16bitové číslo zvýšené každé uživatelské zprávě a zahrnuto do záhlaví kusu datové zprávy. Po 65535 zprávách se to zabalí na 0. Toto číslo se používá k rozhodování o pořadí doručení zprávy do přijímače, pokud je u nastaveno na 0. Podobně jako TSN, kromě čísla sekvence proudu se zvyšuje pouze pro každou zprávu jako celek a ne každý kus jednotlivých dat.
. Pro WebRTC to bude DCEP, String nebo Binary.
. .
INIT CHUNK #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 1 | BUSK FLAGS | Délka kusu | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Iniciovat značku | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Inzerovaný kredit okna přijímače (A_RWND) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Počet odchozích toků | Počet příchozích toků +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Počáteční TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ \ / Volitelné / variabilní parametry / \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk zahajuje proces vytváření asociace.
. Soubory cookie se používají pro ochranu proti střednímu a odmítnutí služby. Jsou podrobněji popsány v sekci State Machine.
Inzerovaný kredit okna přijímače se používá pro SCTP’kontrola přetížení. .
Počet odchozích/příchozích toků upozorňuje na dálkové ovladače o tom, kolik potoků tento agent podporuje.
.
Volitelné parametry umožňují SCTP zavést nové funkce protokolu.
Chunk #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 3 | Blázkové příznaky | Délka kusu | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Kumulativní TSN ACK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Inzerovaný kredit okna přijímače (A_RWND) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Počet bloků ACK GAP = N | Počet duplicitních tsns = x | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Gap Ack Block #1 Start | GAP ACK Block #1 End | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- / / \ . \ / /+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Gap Ack Block #N Start | GAP ACK BLOCK #N END | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Duplikát TSN 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- / / \ . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Blázník pytle (Selektivní potvrzení) je to, jak přijímač upozorňuje odesílatele, který získal balíček. Dokud odesílatel nedostane pytel pro TSN, znovu posílí dotyčný kus dat. Pytel však dělá víc než jen aktualizovat TSN.
Kumulativní tsn ack nejvyšší TSN, který byl přijat.
Inzerovaná velikost vyrovnávací paměti přijímače přijímače přijímače. Přijímač to může změnit během relace, pokud bude k dispozici více paměti.
. Používá se, pokud je mezera v dodávaných paketech. Nechat’. Kumulativní TSN ACK by byl 100, ale bloky ACK by mohly být použity k řeč odesílateli, že to neudělá’T musí znovu odeslat 102, 103 nebo 104 .
.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 4 | BUSK FLAGS | Délka srdečního rytva | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ \ \ / / srdeční poznatek TLV (variabilní délka) / \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. Užitečné, pokud jste’T odesílání jakýchkoli dat a potřebu udržet otevřené mapování NAT.
Zrušit kus #
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Asociaci náhle zastaví asociaci. Používá se, když jedna strana vstoupí do chybového stavu. Elegantní ukončení připojení používá kus vypnutí.
Chunk #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 7 | BUSK FLAGS | Délka = 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Kumulativní TSN ACK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk odstavení začíná půvabné vypnutí asociace SCTP. Každý agent informuje dálkový ovladač o posledním TSN, který poslal. Tím je zajištěno, že se neztratí žádné pakety. Webrtc nedělá’T proveďte půvabné vypnutí asociace SCTP. Musíte si každý datový kanál odtrhnout, abyste to zvládli elegantně.
Kumulativní TSN ACK je poslední TSN, který byl odeslán. .
Chyba kusu #
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Typ = 9 | BUSK FLAGS | Délka | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\ / One nebo více chyb příčiny / \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. SCTP to dělá, takže můžete přeskočit některé pakety, které donese’už se o to stará. Nechat’s řekněme, že posíláte 10 11 12 13 13 14 15 a tyto pakety jsou platné, pouze pokud dorazí všechny. Tato data jsou také citlivá na v reálném čase, takže pokud přijde pozdě, není to’T užitečné.
Pokud ztratíte 12 a 13, není důvod odeslat 14 a 15 ! . Říká přijímači, že 14 a 15’už bude doručen.
Nový kumulativní TSN Toto je nový TSN spojení. Žádné pakety před tímto TSN nebudou zachovány.
. Význam tohoto pole najdete zpět na kus dat.
. Webrtc nedělá’T Použijte všechny funkce stroje SCTP State, takže jsme tyto části vyloučili. Zjednodušili jsme také některé komponenty, aby byly pochopitelné sami.
Tok zřízení připojení #
K dispozici jsou init a init ack kousky k výměně schopností a konfigurací každého vrstevníka. SCTP používá během handshake cookie k ověření vrstevníka, se kterým komunikuje. To má zajistit, aby handshake nebylo zachyceno a zabránilo útokům DOS.
Chunk init ack obsahuje cookie. Cookie se poté vrátí ke svému tvůrci pomocí echo cookie . Pokud je ověření souborů cookie úspěšné, je odeslán ack cookie a kusy dat jsou připraveny k výměně.
Slžkový tok připojení #
SCTP používá kus vypnutí. Když agent obdrží kus vypnutí . To umožňuje uživateli zajistit, aby byla všechna data doručena, i když je připojení ke ztrátě.
Keep-Alive Mechanismus #
SCTP používá žádost o srdeční rytmus a srdeční rytmy ACK, aby udržel spojení naživu. Ty jsou odesílány v konfigurovatelném intervalu. ’T dorazil.
Chunk srdečního rytmu také obsahuje časovou hodnotu. To umožňuje dvěma asociacím vypočítat dobu cesty mezi dvěma agenty.