SIP - 请求和响应标头字段
Accept
Accept 头字段用于指示消息正文中可接受的消息 Internet 媒体类型。
标头字段使用互联网中常用的格式类型/子类型来描述媒体类型。
如果不存在,则假定可接受的消息正文格式为 application/sdp。
媒体类型列表可以使用 q 值参数设置首选项。
Accept-Encoding
Accept-Encoding 头字段用于指定可接受的消息体编码方案。
编码可用于确保具有较大消息正文的 SIP 消息适合单个 UDP 数据报。
使用q值参数可以设置首选项。 如果列出的方案均不为 UAC 所接受,则返回 406 Not Acceptable 响应。 如果不包含,则假定的编码将为 text/plain。
To
To 表示请求的最终收件人。 UA 生成的任何响应都将包含此标头字段并添加一个标签。 这是一个强制性的标头。
代理生成的任何响应都必须在 To 标头字段中添加一个标记。
To 标头字段 URI 永远不会用于路由。
From
From 标头字段指示请求的发起者。 它是用于标识对话的两个地址之一。
From 标头字段可能包含用于标识特定调用的标记。
它可能包含显示名称,在这种情况下,URI 包含在 <> 中。
这是一个强制标头。
Call-ID
Call-ID 标头字段在所有 SIP 请求和响应中都是必需的。 它用于唯一标识两个用户代理之间的呼叫。
Call-ID 在各个调用中必须是唯一的。
用户代理的所有注册都应使用相同的 Call-ID。
Call-ID 始终由用户代理创建,并且永远不会被服务器修改。
它是一个加密随机标识符。
Via
Via 用于记录请求所采用的 SIP 路由,这有助于将响应路由回发起者。
产生请求的UA将自己的地址记录在Via头字段中。
转发请求的代理将包含其自身地址的 Via 标头字段添加到 Via 标头字段列表的顶部。
生成请求响应的代理或 UA 将请求中的所有 Via 标头字段按顺序复制到响应中,然后将响应发送到顶部 Via 标头字段中指定的地址。
接收响应的代理检查顶部的 Via 标头字段并匹配其自己的地址。
如果不匹配,则响应被丢弃。
然后删除顶部的 Via 标头字段,并将响应转发到下一个 Via 标头字段中指定的地址。
Via 标头字段包含协议名称、版本号和传输(SIP/2.0/UDP、SIP/2.0/TCP 等),并且可能包含端口号和参数,例如received、rport、branch、maddr 和 ttl。
如果 UA 或代理从与顶部 Via 标头字段中指定的地址不同的地址接收到请求,则 received 标记将添加到 Via 标头字段中。
< /里>分支参数由 UA 和代理添加到 Via 标头字段中,该参数被计算为 Request-URI、To、From、Call-ID 和 CSeq 编号的哈希函数。
CSeq
CSeq 头字段是每个请求中必需的头字段。 它包含一个十进制数字,该数字随着每个请求而增加。
通常,每个新请求都会增加 1,CANCEL 和 ACK 请求除外,它使用它引用的 INVITE 请求的 CSeq 编号。
UAS 使用 CSeq 计数来确定失序请求或区分新请求(不同的 CSeq)或重传(相同的 CSeq)。
UAC 使用 CSeq 标头字段来将响应与其引用的请求相匹配。
例如,发送 INVITE 请求然后发送 CANCEL 请求的 UAC 可以通过 200 OK 响应的 CSeq 中的方法判断它是对邀请还是取消请求的响应。
Contact
Contact 头字段用于向其他用户传达请求发起者的地址。 一旦收到 Contact 标头字段,URI 就可以被缓存并用于在对话框中路由未来的请求。
例如,对 INVITE 的 200 OK 响应中的 Contact 标头字段可以允许确认 ACK 消息以及此呼叫期间的所有未来请求绕过代理并直接发送至被叫方。
Record-Route
Record-Route 标头字段用于强制通过代理为两个 UA 之间的会话(对话)中的所有后续请求进行路由。
通常,Contact头字段的存在允许UA绕过初始请求中使用的代理链直接发送消息。
将其地址插入 Record-Route 标头字段的代理会覆盖这一点,并强制将来的请求包含一个 Route 标头字段,该 Route 标头字段包含强制包含此代理的代理地址。
希望实现此功能的代理会插入包含其自己 URI 的标头字段,或将其 URI 添加到已存在的 Record-Route 标头字段中。
构造 URI 以便 URI 解析回代理服务器。 UAS 将 Record-Route 头字段复制到对请求的 200 OK 响应中。
标头字段由代理原封不动地转发回 UAC。 然后,UAC 存储 Record-Route 代理列表以及 Contact 标头字段(如果存在于 200 OK 中),以便在所有后续请求的 Route 标头字段中使用。
Organization
Organization头字段用于指示消息的发起者所属的组织。
当消息从一个组织传递到另一个组织时,它也可以由代理插入。
与所有 SIP 标头字段一样,代理可以使用它来做出路由决策,UA 也可以使用它来做出呼叫筛选决策。
Retry-After
它用于指示资源或服务何时可以再次可用。
在 503 Service Unavailable 响应中,它指示服务器何时可用。
在 404 Not Found、600 Busy Everywhere 和 603 Decline 响应中,指示被叫 UA 何时可能再次可用。
它包含以"秒"为单位的时间段。
Subject
可选的Subject头字段用于指示媒体会话的主题。
标题字段的内容也可以在提醒期间显示,以帮助用户决定是否接受呼叫。
示例: Subject: How are you?
Supported
Supported 头字段用于列出 A 或服务器实现的一个或多个选项。
它通常包含在对 OPTIONS 请求的响应中。
如果未实现任何选项,则不包含标头字段。
如果 UAC 在"Supported"标头字段中列出了一个选项,代理或 UAS 可以在调用期间使用该选项。
如果必须使用或支持该选项,则使用 Require 标头字段。
示例: Supported: rel100
Expires
Expires头字段用于指示请求或消息内容有效的时间间隔。
当出现在 INVITE 请求中时,标头字段会设置完成 INVITE 请求的时间限制。
也就是说,UAC 必须在该时间段内收到最终响应(非 1xx),否则 INVITE 请求将自动取消并返回 408 请求超时响应。
一旦建立会话,原始 INVITE 中的 Expires 标头字段的值就不起作用 — Session-Expires 标头字段必须用于此目的。
如果出现在 REGISTER 请求中,则标头字段会设置联系人标头字段中不包含 expires 参数的 URI 的时间限制。
Expires 也用于 SUBSCRIBE 请求中以指示订阅持续时间。
示例: Expires: 30
User-Agent
此标头字段用于传达有关发起请求的 UA 的信息。
session_initiation_protocol_headers.html