メインコンテンツまでスキップ

5.8.1. Session-Level Parsing (セッションレベルの解析)

5.8.1. Session-Level Parsing (セッションレベルの解析)

まず, セッションレベル (Session-Level) の行が検査され解析される. これらの行は, [RFC4566] のセクション 5 で定義されるとおり, 特定の順序で, かつ特定の構文で現れなければならない. 具体的な行タイプ (例: v=, c=) は定義された順序で現れなければならないが, 同一タイプの行 (通常は a=) は任意の順序で現れてよいことに注意する.

次の非属性行は JSEP の文脈では意味を持たず, 検査後に破棄してもよい.

  • c= 行は構文について検査しなければならないが, その値は [RFC8445] のセクション 5.4 で定義される ICE ミスマッチ検出にのみ用いられる. JSEP 実装は WebRTC で ICE が必須であるため, 通常この状態には遭遇しないはずである.

  • i=, u=, e=, p=, t=, r=, z=, および k= 行は構文について検査しなければならないが, それ以外では値は用いられない.

残りの非属性行は次のとおり処理される.

  • v= 行のバージョンは 0 でなければならない. [RFC4566] のセクション 5.1.

  • o= 行は [RFC4566] のセクション 5.2 のとおり解析しなければならない.

  • 存在する場合, b= 行は [RFC4566] のセクション 5.8 のとおり解析し, bwtype および bandwidth の値を格納しなければならない.

最後に属性行を処理する. 次のセッションレベル属性 (a=) 行には, 特定の処理を適用しなければならない.

  • すべての a=group 行は [RFC5888] のセクション 5 のとおり解析し, グループの意味論と mids を格納する.

  • 存在する場合, 単一の a=ice-lite 行は [RFC8839] のセクション 5.3 のとおり解析し, ice-lite の存在を示す値を格納する.

  • 存在する場合, 単一の a=ice-ufrag 行は [RFC8839] のセクション 5.4 のとおり解析し, ufrag 値を格納する.

  • 存在する場合, 単一の a=ice-pwd 行は [RFC8839] のセクション 5.4 のとおり解析し, パスワード値を格納する.

  • 存在する場合, 単一の a=ice-options 行は [RFC8839] のセクション 5.6 のとおり解析し, 指定されたオプションの集合を格納する.

  • すべての a=fingerprint 行は [RFC8122] のセクション 5 のとおり解析し, フィンガープリントとアルゴリズム値の集合を格納する.

  • 存在する場合, 単一の a=setup 行は [RFC4145] のセクション 4 のとおり解析し, setup 値を格納する.

  • 存在する場合, 単一の a=tls-id 行は [RFC8842] のセクション 5 のとおり解析し, 属性値を格納する.

  • すべての a=identity 行を解析し, 身元値を後続の検証のために格納する. [RFC8827] のセクション 5.

  • すべての a=extmap 行は [RFC5285] のセクション 5 のとおり解析し, その値を格納する.

JSEP に関連しない他の属性も存在しうる. 実装は, 認識できる属性は処理すべきである. [RFC4566] のセクション 5.13 で要求されるとおり, 未知の属性行は無視しなければならない.

セッションレベルのすべての行の解析が完了すると, m= セクション内の行の処理が続く.