12.2 对话中的请求
当两个 UA 之间的对话建立以后,他们都可以在对话中初始化一个新的事务
(transaction)。如果 UA 发送请求,将遵循 UAC 的事务规则。UA 接收请求将遵循 UAS
的规则。在建立对话的事务过程中,UA 扮演的角色可能是不一样的。
在对话中的请求可以包含Record-Route和Contact头域。不过,虽然他们会修改 remote
target 的 URI,但是这些请求也不会导致对话的路由集被改变。明确说,如果请求不是
刷新 target 的请求,那么这个请求不会更改对话的 remote target URI,如果请求是刷新
target 的请求,那么这个请求才会更改对话的 remote target URI。对于用 INVITE 建立
的对话来说,唯一的能够刷新 target 的请求就是 re-INVITE(见 14 节说明)。可能会有其
他扩展定义通过其他方法来刷新 target 的请求。
注意 ACK 不是一个刷新 target 的请求。
刷新 target 请求只会更改对话的 remote target URI,并且更改由 Record-Route 指定的
路由集合。如果更新路由集合会带来严重的和 RFC2543 向后兼容问题。
12.2.1 UAC 行为
12.1.1.1 产生请求
在对话中的请求是通过用许多对话的状态部分来构造的。在 TO 头域中的 URI 部分必
须设置成为对话状态中的 remote URI。To 头域的 tag 参数必须设置成为 dialog ID 中的
remote tag 部分。请求的 From URI 必须设置成为对话状态中的 local URI。From 头域
的 tag 参数必须设置成为 dialog ID 的 local tag 部分。如果 remote 或者 local tag 是空
值,那么 tag 参数必须分别从 From 或者 To 头域中去除。
在请求序列中的原始请求的 To 和 From 头域的 URI 的使用方法是为了向下兼容
RFC2543 协议的,在 RFC2543 协议中,使用 URI 作为对话的标志。在这个规范中,
只有 tags 用于区分对话。有可能在本协议的后续版本中,在对话中的请求必须强制反
应原始请求的 To 和 From 头域的 URI 将会去除。
请求的 Call-ID 必须设置成为对话的 Call-ID。在对话中的请求必须严格遵循单个递增的
Cseq 序列号(每次增加 1)(当然要除了 ACK 和 CANCEL,这两个请求中的 Cseq 必
须和原始的请求或者确认请求一样)。因此,如果本地序列号(local sequence number)
2022-12-24 20:16:05
822KB
sip
中文版
1