概述
注册过程
- 注册过程图
Carol使用记录地址“sip:carol@chicago.com”在SIP注册服务器的chicago.com域注册。chicago.com域的代理服务器将使用Carol的注册,将Carol的记录地址拿到定位服务中查询,找到真实终端地址,然后路由到Carol的真实终端。 - 注册描述
- 如果用户要发起和另一个用户的会话,SIP必须发现可到达目的用户的当前主机。(代理服务器和重定向服务器——他们负责接收请求,决定要发送请求的用户位置,然后发送到相应位置。)
- 这就需要特定域的地址绑定,这些地址绑定将输入的SIP和SIPS URI(如sip:bob@biloxi.com)映射到想要的用户更近的一个或者多个URI(如sip:bob@engineeringbiloxi.com)。
- 然后代理查询定位服务,找到用户代理。
- 一个用户可能注册多个代理,Register请求可以进行添加、删除和查询绑定(200OK时候会返回绑定列表)。
注册过程头字段的含义
- Request-URI:注册服务器指明的定位服务域,不能出现SIPS URI的userinfo和@组件。
- To:记录地址(一个记录地址可以绑定多个SIP终端),该字段和Request-URI主要不同在于该字段包含用户名(要和用户绑定肯定要加用户名),该字段相当于Key,每次发请求时候的To其实就是这个key,通过这个key来查找绑定的终端。
- From:如果不是第三方注册,就和To字段保持一致。
- Call-ID:对于同一用户的同一终端,注册和解绑时候的该字段是一致的。
- CSeq:每个使用相同Call-ID的请求,每次逐一增加该字段值。
- Contact:要绑定的SIP终端(可以理解为真实地址),即value,一个To绑定多个Contact。该字段有一个参数expires
-expires:表示UA绑定有效时间。单位:秒。如果不提供该参数,则使用expires头字段的值代替。不规范的值视为3600(即一小时)。 - Record-Route:该字段必须忽略。
删除绑定
- 可以通过给Register请求的Contact设置绑定时间为0,则会立即删除绑定。
- Contact字段为“*”表示用于所有注册,此时Expires头字段只能用0表示,即“*”只能用于解绑
提取绑定
-Register请求成功的响应会包含所有现有绑定。
更新绑定
-根据Contact字段Expires参数进行比较更新过期时间
注册服务器处理Register请求大致过程
- 检查Request-URI,确定是否可以访问该字段指定域的绑定,如果不能,可以当做代理服务器进行转发。
- 认证UAC
- 判断当前用户是否有权修改记录地址的注册,如果不行,返回403
- 从To字段取出记录地址,如果记录地址不可用于R-U域,那么注册服务器发送404结束。
- 检查Contact
- 依次处理Contact头字段每个联系地址,每个地址按照如下方法更新过期时间
- 字段有expires参数,此值当做过期时间
- 没有该参数,但是有Expires字段,此值作为过期时间
- 都没有,本地配置默认时间当做请求到期时间
搜索当前绑定列表,如果绑定不存在,暂时添加。如果绑定存在,检查Call-ID值,如果现有绑定的Call-ID值与请求中的Call-ID不同,如果过期时间间隔为0或者有其他更新,必须删除绑定。如果相同,比较CSeq值,如果高于绑定的值,就要进行更新了。
SIP注册流程包分析
下面是两个客户端1和2,客户端都位于139,注册服务器位于168
用户2向注册服务器发起请求
-Request-URI:168域(注册服务器域) -Contact:表示要绑定的SIP客户端地址 -Expires:10分钟过期 -To:客户名@168域,From和To一致 -Call-ID:SIP客户端一致时保证该字段一致 -CSeq:1
注册成功响应返回
Contact:返回现有绑定列表
用户2向服务器注册另一个客户端地址
-Contact:新的客户端地址 -Call-ID:绑定新的客户端地址,所以产生新的该字段 -CSeq:1
用户2注册第二个地址成功的响应
Contact:返回现有列表,可以看出来新增了绑定
用户1注册第二个地址(第一个未截取图,所以CSeq是2)
用户1注册成功返回响应
用户2解绑5060端口的客户端
-Call-ID:跟之前的5060端口注册时候一样 -Expires:为0表示解绑 -CSeq:在之前的基础上加1
解绑成功响应
-Contact:比之前少了一个绑定地址
最终建立通话时候使用的目的地址To都是地址记录(即key),如sip:2@10.103.240.168
,sip:1@10.103.240.168
,定位服务进行解析查找绑定的实际客户端地址,使用实际地址去建立通话连接,如sip:2@10.210.24.139:5060
,sip:2@10.210.24.139:61509
,sip:1@10.210.24.139:5060
。
最后
以上就是完美砖头为你收集整理的SIP协议-注册过程概述的全部内容,希望文章能够帮你解决SIP协议-注册过程概述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复