SIP协议对话(dialog)

对话表示两个用户代理间持续一段时间的端到端的SIP关系。
对话在每个UA通过dialog ID鉴别,dialog ID由callid,本地tag和远端tag组成。
消息的dialog ID取决于SIP要素是UAC还是UAS。对UAC,dialog的id是callid,remote tag是to tag,local tag是from tag。UAS的remote tag和to tag正好相反。
对话包含一些后续消息传送需要的状态(state)。状态由dialog ID、local sequence number (用来指挥UA到对端的请求)、remote sequence number (用来指挥对端到UA的请求)、local URI、remote URI、remote target、一个叫 "secure"的布尔值还有一个路由集(请求要到对端,经过服务器的列表)。

创建对话

对话在特定方法请求的非失败响应生成后创建。按此说明,只有请求是INVITE,响应是2**或101-199的响应且带to tag会建立会话。在没收到最终响应的对话在“早期”状态。

对话内请求

当两个用户代理间建立对话后,任意一方需要的话可以初始化一个新事务。UAS收到请求后,如果to的消息头中有tag,计算dialogID,如果与现有对话一致,就属于mid-dialog请求。就和对话外请求一样,按section 8.2中处理。如果dialogID匹配不一致,UAS可能崩溃并重启,如果认为是错误的路由,那么UAS也可以选择接受并转发路由或拒绝请求。

关闭会话

对于“早期”状态的对话,如果最终响应非2**,请求就被终结了。在本说明中,BYE方法终结一个会话及关联的对话。详见section 15。

Reference

[1].RFC 3261 SIP: Session Initiation Protocol

上一篇:浏览器dns 缓存处理


下一篇:10辆已经跑了100万公里以上的汽车欣赏