5.8.1. Session-Level Parsing (会话级解析)
5.8.1. Session-Level Parsing (会话级解析)
首先检查并解析会话级 (Session-Level) 行. 这些行必须按 [RFC4566] 第 5 节所定义的特定顺序并以特定语法出现. 注意, 虽然具体行类型 (例如 v=, c=) 必须按定义的顺序出现, 但同类型行 (通常为 a=) 可以任意顺序出现.
下列非属性行在 JSEP 语境中没有意义, 在通过检查后可以丢弃.
-
c=行必须检查语法, 但其值仅用于 ICE 不匹配检测, 如 [RFC8445] 第 5.4 节所定义. 注意, 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= 段中的行.