本文主要是介绍SIP注册过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SIP注册过程如下图所示:
SIP 协议中使用了一个构件叫做注册服务器。它不仅能够接收 REGISTER消息请求,还能够将收到的消息包中的信息保存到管理对应域名的定位服务器上面。 SIP 协议具有发现能力;换句话说,就是如果一个用户要与另外一个用户开始会话,那么 SIP 协议必须要发现这个用户能够到达的主机存在。由于定位服务器可以收到请求消息并找到向什么地方发送,所以这个发现过程由定位服务器来完成。而这则是基于管理每个域的定位服务器维护着一个定位数据库的事实来实现的。注册服务器不仅可以接收客户端的 IP 地址,还能够接收其他类型的消息。比如,能够收到服务器上面的 CPL( Call Processing Language)脚本。
在一台话机能够接收一通通话之前,它需要在定位数据库中有注册信息。在这个数据库中我们要拥有所有电话的各自的相关的 IP 地址。在我们的例子中,你将看到 SIP 用户 8590@voffice.com.br 注册到 200.180.1.1 上面的过程(即SIP用户的UAC所在的IP地址为200.180.1.1)。
RFC3665 定义实现了一个最小的功能集合,这是使得 SIP 进行 IP 网络交互时的最好实践。按照 rfc3665 中所说,与注册一个用户代理的过程相关的有五个基本的流程,如下所述:
一个新的成功的注册( A successful new registration) ——用户代理在发送 Register 请求后,将收到认证过程的挑战。我们将在阐述验证过程的章节中看到这个过程的细节。
联系列表的更新( An update of the contact list) ——由于不再是新的注册,消息中已经包含了摘要( digest),那么不会返回 401 消息。为了改变联系列表,用户代理仅仅需要发送一条在CONTACT 头中带有新的联系信息的注册信息即可。
请求获得当前的联系列表——在这种情况下,用户代理将把发送消息中的 CONTACT 头置空,表明用户希望向服务器询问当前的联系列表。在回复的 200OK 消息中, SIP 服务器将把当前的联系列表放在其 CONTACT 的头中。
取消注册( Cancellation of a registration) ——用户代理在发送的消息中将 EXPIRES 头置成 0,并且将 CONTACT 头设置为*表示将此过程应用到所有存在的联系信息。
不成功的注册( Unsuccessful Registration) ——用户代理客户端( UAC)发送一条 Register请求消息,收到一条―401 Unauthorized‖消息,事实上,这个过程同成功注册过程相同。但是接下来,它进行哈希运算尝试进行认证。而服务器检测到的是一个无效的密码,继续发送401Unauthorized消息。这个过程一直重复直到重复次数超过在 UAC 设置的最大值。
应用示例:待续(后面在写)
这篇关于SIP注册过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!