SIP协议学习笔记

news2024/12/26 0:07:35

SIP 协议(Session initialization Protocol)会话发起协议

是IETF制定的多媒体通信协议,是一个基于文本的应用层控制协议,用于建立,修改和终止IP网上的双方多方多媒体会话,支持代理、重定向、登记定位用户等功能 支持用户的移动,与RTP/RTCP/SDP/DNS等协议配合,可支持和应用于语音、视频、数据等多媒体业务
在这里插入图片描述

SIP是一种基于文本的协议,它的语法和消息非常类似于HTTP协议,不同之处在于SIP不仅可以用TCP,也可以用UDP封装。
在这里插入图片描述

一、SIP提供的功能:
名字翻译和用户定位
无论被呼叫方在哪里都确保呼叫达到被叫方、执行任何描述信息到定位信息的映射,确保呼叫(会话)的本质细节被支持。
特征协商:
它允许与呼叫有关的组(这可以是多方呼叫)在支持的特征上达成一致(注意:不是所有各方都能够支持相同级别的特征)。例如,视频可以或不可以被支持。总之,存在很多需要协商的范围。
呼叫参与者管理:
呼叫中参与者能够引入其他用户,加入呼叫或取消到其他用户的连接。此外,用户可以被转移或置为呼叫保持。
呼叫特征改变:
用户应该能够改变呼叫过程中的呼叫特征。例如,一个呼叫可以被设置为“voice-only”,但是在呼叫过程中,用户可以开启视频功能。也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。


二、SIP系统基本组成
SIP协议虽然主要为IP网络设计的,但它并不关心承载网络,也可以在ATM、帧中继等承载网中工作,它是应用层协议,可以运行于TCP,UDP,SCTP等各种传输层协议之上。SIP用户是通过类似于e-mail地址的URL标识,例如:sip:myname@mycompany.com,通过这种方式可以用一个统一名字标识不同的终端和通信方式,为网络服务和用户使用提供充分的灵活性。按逻辑功能区分,SIP系统由4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器。
在这里插入图片描述

1.用户代理
用户代理(UserAgent)一个软终端或者一个支持SIP协议的电话UA对接收到的行为进行代理,发送到SIP网络中,是发起和终止会话的实体,包括两个功能实体。

客户端(UserAgentClient),负责发起呼叫,UAC是负责发起SIP事务请求的功能实体,将动作翻译成invite请求
在这里插入图片描述

用户代理服务器(UserAgentServer),负责接受呼叫并做出响应,接收SIP事务请求的功能实体,SIP向用户发送invite请求,UAS把这个请求翻译成相应的动作,例如:电话振铃、网页上显示新的呼叫
在这里插入图片描述

二者组成用户代理存在于用户终端中。用户代理按照是否保存状态可分为有状态代理、有部分状态用户代理和无状态用户代理。

2.代理服务器
代理服务器(ProxyServer),负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据收到的应答对用户做出响应。它可以根据需要对收到的消息改写后再发出。
转发
在这里插入图片描述

3.重定向服务器
重定向服务器(RedirectServer),用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。

PS:位置服务器,网络还需要提供位置目录服务,以便在呼叫接续过程中定位被叫方(服务器或用户端)的具体位置。在这里插入图片描述
在这里插入图片描述

4.注册服务器 注册服务器(Registrar),用于接收和处理用户端的注册请求,完成用户地址的注册。
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
SIP基本请求消息:
在这里插入图片描述
SIP响应消息:
在这里插入图片描述


SIP会话建立的基本流程:
在这里插入图片描述
用户首先发送invite消息,被叫用户收到后返回100表示试呼,180Ringing表示处理完了(例图打印错误),这两条消息是临时响应消息,然后发送200ok,200ok是成功的响应消息,包含了被叫的这次通信的媒体信息,主叫收到200后,会向被叫发送ACK,完成三次握手


有时候,主叫侧没有被叫侧的路由信息,这时需要代理服务器
在这里插入图片描述

代理服务器只起到转发功能,不是解析功能,UAS返回的200包含了联系地址,100、180临时未返回,因为本就是可选消息。


重定向服务器用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。
用户想要使用重定向服务,就要先向重定向服务器里登记自己的新地址
在这里插入图片描述


参考:
1、SIP协议工作原理
2、什么是SIP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/672012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Packet Tracer - 使用思科 IOS 配置 DHCP

Packet Tracer - 使用思科 IOS 配置 DHCP 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 R1 G0/0 192.168.10.1 255.255.255.0 不适用 S0/0/0 10.1.1.1 255.255.255.252 不适用 R2 G0/0 192.168.20.1 255.255.255.0 不适用 G0/1 已分配 DHCP 已分配 …

python安装/卸载模块方法步骤详解(附详细图解)

在日常工作中会需要安装或者卸载Python模块.于是我整理了一下,下面这篇文章主要给大家介绍了关于python安装/卸载模块的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下 以pygame模块举例 1,通过pycharm导入 (1)直接点击install …

Redis 2023面试5题(三)

一、Redis集群数据hash分片算法是怎么回事? Redis集群数据hash分片算法是一种将数据分散存储在不同的节点上来实现的机制。具体来说,Redis集群将数据分成16384个槽位,每个槽位对应一个节点。当需要访问某个key时,Redis会根据key的…

nginx主配置文件及实战案例

文章目录 一.nginx主配置文件nginx.conf1.认识nginx服务的主配置文件2.全局配置3.I/O事件配置4.HTTP配置5.检查配置文件是否正确6.浏览器测试7.总配置文件图示7.1 nginx总配置文件的三个模块7.2 HTTP文件配置的图示&am…

【Matlab】语音信号分析与处理实验报告

一、目的 使用Matlab分析与设计实验,理解与掌握以下知识点: 1、信号的采样、频谱混叠 2、信号的频谱分析 3、信号的幅度调制与解调方法 4、理想滤波器的时域和频域特性 5、数字滤波器的设计与实现 二、内容 1、录制一段个人的语音信号 2、采用合适的频…

Unity3D制作一个会移动的方块(还不会移动照相机)

学习Unity3D这么久了,如果你还不会制作一个按下WASD就可以移动的方块的话,那么你的学习将没有一点成就感,我学习的时候,我决定先学习移动,这样我就会对Unity更加感兴趣,学习起来的动力会更为充足 先创建一…

Nseeus安装及使用教程

Nessus是一款目前使用较多的系统漏洞扫描与分析软件 文章目录 Nessus下载安装使用启动:https://localhost:8834/ Nessus Nessus是一款目前使用较多的系统漏洞扫描与分析软件 下载 下载链接:https://www.tenable.com/downloads/nessus 安装 傻瓜式安装 使用 最…

Baumer工业相机堡盟工业相机如何使用新版本NEOAPI SDK控制相机数据流的开启和关闭(C++)

Baumer工业相机堡盟工业相机如何使用新版本NEOAPI SDK控制相机数据流的开启和关闭(C) Baumer工业相机Baumer工业相机NEOAPI SDK的技术背景Baumer工业相机使用NEOAPISDK控制相机数据流的方式1.引用合适的类文件2.使用NEOAPISDK控制相机数据流的方式2.使用…

Xshell 连接虚拟机Ubuntu系统失败解决方案

背景知识: Xshell 是一个强大的安全终端模拟软件,可以进行远程登录,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。 xshell通过ip连接,所以需要知道虚拟机的IP地址 使用XShell的主要目的是在Windows环境下登…

leetcode111. 二叉树的最小深度(java)

二叉树的最小深度 leetcode111. 二叉树的最小深度题目描述 DFS 深度优先遍历解题思路代码演示 BFS 广度优先遍历解题思路代码演示 往期经典 leetcode111. 二叉树的最小深度 来源:力扣(LeetCode) 链接:https://leetcode.cn/problem…

基于立创EDA的原理图设计

目录 学习目标 一、开发中原理图的作用 1.1 原理图 1.2 产品开发原理图设计阶段 1.3 原理图中的具体工作内容 二、 立创EDA软件使用基础 2.1 立创EDA电路设计软件 2.2 新建工程 2.3 设计元件原理图封装 三、项目实战(单片机最小系统) 学习目标…

Kaggle 比赛总结:BirdCLEF 2023

赛题名称:BirdCLEF 2023赛题任务:识别音景中的鸟叫声赛题类型:语音识别 https://www.kaggle.com/competitions/birdclef-2023文章目录 一、比赛背景二、比赛任务三、评价方法四、优胜方案4.1 第一名4.2 第二名4.3 第三名4.4 第四名4.5 第五名…

SpringCloud Alibaba入门2之用户子模块开发

在上一章的基础上进行子模块的开发SpringCloud Alibaba入门之创建多模块工程_qinxun2008081的博客-CSDN博客 一、引入SpringBoot 我们在父项目统一管理引入的jar包的版本。我们采用父项目中以depencyMangement方式引入spring-boot,子项目依赖parent父配置即可。 &…

CTFshow-pwn入门-前置基础pwn29-pwn31

什么是PIE 由于ASLR是一种操作系统层面的技术,而二进制程序本身是不支持随机化加载的,便出现了一些绕过方法,例如ret2plt、GOT劫持、地址爆破等。于是,人们于2003年引入了位置无关可执行文件(Position-Independent Ex…

24. Vue防抖,禁止double click

Vue 防抖 如果按钮不做防抖限制,用户手滑或者其他场景大概率会出现重复调用接口的情况,比如编辑角色时,多次点击submit,会出现非预期请求。 为避免重复点击问题,可以加一个自定义组件将按钮禁用一段时间。 监听click时…

详解Java锁对象

1、Synchronized 1.1、synchronized特性 1、互斥 synchronized会起到互斥效果,某个线程执行到某个对象的synchronized中时,其他线程如果也执行到同一个对象synchronized就会阻塞等待。 *进入synchronized修饰的代码块,就相当于加锁。 *退…

10.安装dashboard

有了之前我们部署的 keystone 、 glance 、 nova 、 neutron 服务之后,我们就可以启动云主机了,但是如果只是使用命令来操作OpenStack 的话非常不方便,我们使用OpenStack 搭建云平台就是为了把底层所有资源整合在一起,然后以一种方…

html5前端学习2

一篇思维题题解: 第五周任务 [Cloned] - Virtual Judge (vjudge.net) http://t.csdn.cn/SIHdM 快捷键: CtrlAltDown 向下选取 CtrlAltUp 向上选取(会出现多个光标,可以同时输入) CtrlEnter …

linux 内核资源配置--cgroups详解以及在docker中的应用

一、Cgroup 概述 1.1、cgroups 是什么 Linux cgroup (Control Groups)是 Linux 内核提供的一种机制,用于限制进程组使用的资源(如 CPU、内存、磁盘 I/O 等)。通过将进程组划分为层次结构,并将资源限制应用…

【操作系统】2、进程与线程

【重要考点】 1. 进程与线程 进程与线程的基本概念 进程与线程的状态 转换 ——五态图,七态图 线程的实现: 内核级 用户级 进程与线程的组织和控制 进程间通信IPC: 共享内存、消息传递、管道 2.CPU调度与上下文切换 调度的基本概念 调度的实…