Zum Hauptinhalt springen

5.8.1. Session-Level Parsing (Parsing auf Sitzungsebene)

5.8.1. Session-Level Parsing (Parsing auf Sitzungsebene)

Zuerst werden die Zeilen auf Sitzungsebene (Session-Level) geprüft und geparst. Diese Zeilen MÜSSEN in einer bestimmten Reihenfolge und mit einer bestimmten Syntax auftreten, wie in [RFC4566], Abschnitt 5 definiert. Obwohl die konkreten Zeilentypen (z. B. v=, c=) in der definierten Reihenfolge auftreten MÜSSEN, können Zeilen desselben Typs (typischerweise a=) in beliebiger Reihenfolge vorkommen.

Die folgenden Nicht-Attribut-Zeilen sind im JSEP-Kontext bedeutungslos und KÖNNEN nach der Prüfung verworfen werden.

  • Die Zeile c= MUSS syntaktisch geprüft werden, ihr Wert wird jedoch nur zur ICE-Mismatch-Erkennung verwendet, wie in [RFC8445], Abschnitt 5.4 definiert. JSEP-Implementierungen sollten diesen Zustand nicht antreffen, da ICE für WebRTC erforderlich ist.

  • Die Zeilen i=, u=, e=, p=, t=, r=, z= und k= MÜSSEN syntaktisch geprüft werden, ihre Werte werden aber sonst nicht verwendet.

Die übrigen Nicht-Attribut-Zeilen werden wie folgt verarbeitet:

  • Die Zeile v= MUSS die Version 0 haben, wie in [RFC4566], Abschnitt 5.1 angegeben.

  • Die Zeile o= MUSS wie in [RFC4566], Abschnitt 5.2 spezifiziert geparst werden.

  • Die Zeile b=, falls vorhanden, MUSS wie in [RFC4566], Abschnitt 5.8 spezifiziert geparst werden, und die Werte bwtype und bandwidth werden gespeichert.

Schließlich werden die Attributzeilen verarbeitet. Für die folgenden Attributzeilen (a=) auf Sitzungsebene MUSS eine spezifische Verarbeitung angewendet werden:

  • Alle a=group-Zeilen werden wie in [RFC5888], Abschnitt 5 spezifiziert geparst, und die Gruppensemantik sowie die mids werden gespeichert.

  • Falls vorhanden, wird eine einzelne a=ice-lite-Zeile wie in [RFC8839], Abschnitt 5.3 spezifiziert geparst, und ein Wert, der die Anwesenheit von ice-lite anzeigt, wird gespeichert.

  • Falls vorhanden, wird eine einzelne a=ice-ufrag-Zeile wie in [RFC8839], Abschnitt 5.4 spezifiziert geparst, und der ufrag-Wert wird gespeichert.

  • Falls vorhanden, wird eine einzelne a=ice-pwd-Zeile wie in [RFC8839], Abschnitt 5.4 spezifiziert geparst, und der Passwortwert wird gespeichert.

  • Falls vorhanden, wird eine einzelne a=ice-options-Zeile wie in [RFC8839], Abschnitt 5.6 spezifiziert geparst, und die Menge der angegebenen Optionen wird gespeichert.

  • Alle a=fingerprint-Zeilen werden wie in [RFC8122], Abschnitt 5 spezifiziert geparst, und die Menge der Fingerabdruck- und Algorithmuswerte wird gespeichert.

  • Falls vorhanden, wird eine einzelne a=setup-Zeile wie in [RFC4145], Abschnitt 4 spezifiziert geparst, und der setup-Wert wird gespeichert.

  • Falls vorhanden, wird eine einzelne a=tls-id-Zeile wie in [RFC8842], Abschnitt 5 spezifiziert geparst, und der Attributwert wird gespeichert.

  • Alle a=identity-Zeilen werden geparst und die Identitätswerte für eine spätere Verifikation gespeichert, wie in [RFC8827], Abschnitt 5 spezifiziert.

  • Alle a=extmap-Zeilen werden wie in [RFC5285], Abschnitt 5 spezifiziert geparst, und ihre Werte werden gespeichert.

Weitere Attribute, die für JSEP nicht relevant sind, können ebenfalls vorhanden sein, und Implementierungen SOLLEN alle verarbeiten, die sie erkennen. Wie von [RFC4566], Abschnitt 5.13 gefordert, MÜSSEN unbekannte Attributzeilen ignoriert werden.

Sobald alle Zeilen auf Sitzungsebene geparst wurden, wird die Verarbeitung mit den Zeilen in m=-Abschnitten fortgesetzt.