SIP - 请求与响应报头字段



接受

Accept 报头字段用于指示消息正文中可接受的消息 Internet 媒体类型。

  • 该报头字段使用 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、maddrttl

  • 如果 UA 或代理从与顶部 Via 报头字段中指定的地址不同的地址接收请求,则会在 Via 报头字段中添加received标签。

  • UA 和代理会在 Via 报头字段中添加分支参数,该参数计算为 Request-URI、To、From、Call-ID 和 CSeq 编号的哈希函数。

CSeq

CSeq 报头字段是每个请求中都需要的报头字段。它包含一个十进制数字,该数字对于每个请求都会增加。

  • 通常,它在每个新请求中增加 1,但CANCELACK请求除外,它们使用其引用的 INVITE 请求的 CSeq 编号。

  • UAS 使用 CSeq 计数来确定顺序错误的请求或区分新请求(不同的 CSeq)或重传(相同的 CSeq)。

  • UAC 使用 CSeq 报头字段将响应与其引用的请求匹配。

  • 例如,发送 INVITE 请求然后发送 CANCEL 请求的 UAC 可以通过 CSeq 中的方法判断 200 OK 响应是对邀请请求还是取消请求的响应。

Contact

Contact 报头字段用于向其他用户传达请求发起者的地址。收到 Contact 报头字段后,可以缓存 URI 并将其用于对话中未来请求的路由。

例如,INVITE 的 200 OK 响应中的 Contact 报头字段可以允许确认 ACK 消息和此呼叫期间的所有未来请求绕过代理并直接发送到被叫方。

Record-Route

Record-Route 报头字段用于强制通过代理路由两个 UA 之间会话(对话)中的所有后续请求。

通常,Contact 报头字段的存在允许 UA 直接发送消息,绕过初始请求中使用的代理链。

  • 代理将其地址插入 Record-Route 报头字段会覆盖此操作,并强制将来的请求包含一个 Route 报头字段,其中包含该代理的地址,从而强制包含此代理。

  • 希望实现此功能的代理会插入包含其自身 URI 的报头字段,或将其 URI 添加到已存在的 Record-Route 报头字段中。

  • URI 的构造方式使得 URI 解析回代理服务器。UAS 将 Record-Route 报头字段复制到对请求的 200 OK 响应中。

  • 代理会将报头字段不变地转发回 UAC。然后,UAC 会存储 Record-Route 代理列表以及 200 OK 中存在的 Contact 报头字段,以在所有后续请求中用于 Route 报头字段。

Organization

Organization 报头字段用于指示消息发起者所属的组织。

  • 代理也可以在消息从一个组织传递到另一个组织时插入它。

  • 与所有 SIP 报头字段一样,它可以被代理用于做出路由决策,并被 UA 用于做出呼叫筛选决策。

Retry-After

它用于指示资源或服务何时可能再次可用。

  • 在 503 Service Unavailable 响应中,它指示服务器何时可用。

  • 在 404 Not Found、600 Busy Everywhere 和 603 Decline 响应中,它指示被叫 UA 何时可能再次可用。

  • 它包含以“秒”为单位的时间段。

Subject

可选的 Subject 报头字段用于指示媒体会话的主题。

报头字段的内容也可以在提醒期间显示,以帮助用户决定是否接受呼叫。

Example:
Subject: How are you?

Supported

Supported 报头字段用于列出 UA 或服务器实现的一个或多个选项。

  • 它通常包含在对 OPTIONS 请求的响应中。

  • 如果未实现任何选项,则不包含报头字段。

  • 如果 UAC 在 Supported 报头字段中列出选项,则代理或 UAS 可以在呼叫期间使用该选项。

  • 如果必须使用或支持该选项,则改为使用 Require 报头字段。

Example:
Supported: rel100

Expires

Expires 报头字段用于指示请求或消息内容有效的时段。

  • 当出现在 INVITE 请求中时,报头字段会为完成 INVITE 请求设置时间限制。

  • 也就是说,UAC 必须在此时间段内收到最终响应(非 1xx),否则 INVITE 请求将自动取消,并返回 408 Request Timeout 响应。

  • 会话建立后,原始 INVITE 中 Expires 报头字段的值无效——必须为此目的使用 Session-Expires 报头字段。

  • 如果出现在 REGISTER 请求中,则报头字段会为 Contact 报头字段中不包含expires参数的 URI 设置时间限制。

  • Expires 也用于 SUBSCRIBE 请求以指示订阅持续时间。

Example:
Expires: 30

User-Agent

此报头字段用于传达有关发起请求的 UA 的信息。

session_initiation_protocol_headers.htm
广告

© . All rights reserved.