SIP注册过程

2024-05-28 03:18
文章标签 sip 过程 注册

本文主要是介绍SIP注册过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 中所说,与注册一个用户代理的过程相关的有五个基本的流程,如下所述:

  1. 一个新的成功的注册( A successful new registration) ——用户代理在发送 Register 请求后,将收到认证过程的挑战。我们将在阐述验证过程的章节中看到这个过程的细节。
    这里写图片描述

  2. 联系列表的更新( An update of the contact list) ——由于不再是新的注册,消息中已经包含了摘要( digest),那么不会返回 401 消息。为了改变联系列表,用户代理仅仅需要发送一条在CONTACT 头中带有新的联系信息的注册信息即可。
    这里写图片描述

  3. 请求获得当前的联系列表——在这种情况下,用户代理将把发送消息中的 CONTACT 头置空,表明用户希望向服务器询问当前的联系列表。在回复的 200OK 消息中, SIP 服务器将把当前的联系列表放在其 CONTACT 的头中。
    这里写图片描述

  4. 取消注册( Cancellation of a registration) ——用户代理在发送的消息中将 EXPIRES 头置成 0,并且将 CONTACT 头设置为*表示将此过程应用到所有存在的联系信息。
    这里写图片描述

  5. 不成功的注册( Unsuccessful Registration) ——用户代理客户端( UAC)发送一条 Register请求消息,收到一条―401 Unauthorized‖消息,事实上,这个过程同成功注册过程相同。但是接下来,它进行哈希运算尝试进行认证。而服务器检测到的是一个无效的密码,继续发送401Unauthorized消息。这个过程一直重复直到重复次数超过在 UAC 设置的最大值。
    这里写图片描述


应用示例:待续(后面在写)

这篇关于SIP注册过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009391

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us