协议--SIP/SDP

article/2025/10/1 1:07:14

参考资料

  • 会话初始协议SIP与SDP简介
  • 完整SIP/SDP媒体协商概论-SIP/WebRTC概要

1. 什么是SIP

1.1 关于SIP通话的一个形象比喻

生活中,我们想要找一个人互相聊天,首先你到找到这个人、你的声音得传递到对方,对方能听到你的声音,
同时还得要去理解您的话语(同一个方言、同一个语种),帮你定位到对象的是sip,你们两个协商使用英语
沟通、还是汉语,使用电话设备、还是电脑web的是sdp, 最终说话的传递及传输介质是rtc。sip协议做的是,能够让你定位到你想聊天的对象, 帮你检测你聊天对象是否可达, 帮你管理你们通话的会话
状态,帮你结束你们的聊天进程等。

从上面的例子可以看出,SIP协议只是负责创建会话,但是会话中的实际业务数据的传输并不由SIP来完成,而是由RTP来完成的。整个会话的实现不仅是需要SIP协议,还需要其他的协议,比如SDP和RTC等

1.2 SIP协议的概念和特点

(1) SIP协议的概念
  SIP全称是session initiation Protocol (会话初始协议) ,他是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点

  • 应用层:在网络通信中最上层,实现业务的具体功能。
  • 信令:信息指令,表示协议的传输的内容是指令而非业务数据
  • 控制:执行什么样的操作。

(2) SIP协议的特点

  • 不定义要建立的会话类型,只定义如何管理会话。 SIP不是一个垂直集成的通讯系统,可能叫做是一个部件更合适。
  • SIP本身并不提供服务。但是,SIP提供了一个基础,可以用来实现不同的服务。

1.3 SIP协议的通信流程

SIP协议通信过程中并不包含业务数据

(1) SIP通信的3个基本组件

  • 用户代理(User Agent Client),即终端。比如SIP电话。
  • 代理服务器(User Agent Server),负责连接用户代理和查询终端定位。
  • 注册服务器。是一个保存了用户代理(终端)信息服务器。可以理解为一个通讯录。

应用示例,终端A拨打终端B电话(前提是A和B都已经注册到可响应的服务器上):

  • 终端A先联系代理服务器,把B给到proxy,告诉它我是联系B。
  • proxy它自己不知道,就去翻通讯录(即注册服务器),找到B对应的IP地址,并拨打B。
  • B接听电话后,proxy就把A和B联通。
    在这里插入图片描述

(2) SIP在发起会话时信令交互的流程
在这里插入图片描述
SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。常用的SIP请求消息如下:

  • INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。
  • ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。
  • PRACK:表示对1xx响应消息的确认请求消息。
  • BYE:表示终止一个已经建立的呼叫。
  • CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。
  • REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。
  • OPTIONS:表示查询被叫的相关信息和功能。

上述的过程中并没有trying信令,其实在实际的抓包过程中可以发现callee收到INVITE信令后会向caller发送一个t、Trying信令,之后再发送Ringing和OK信令

SIP协议中的响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。

1.4 在不同的网络中建立SIP会话

1.4.1 在同一域中建立 SIP 会话

下图说明了在预定同一个 ISP, 从而使用同一域的两个用户之间建立 SIP 会话的过程。用户 A 使用 SIP 电话。用户 B 有一台 PC,运行支持语音和视频的软客户程序。加电后,两个用户都在 ISP 网络中的 SIP 代理服务器上注册了他们的空闲情况和 IP 地址。用户 A 发起此呼叫,告诉 SIP 代理服务器要联系用户 B。然后,SIP 代理服务器向 SIP 注册服务器发出请求,要求提供用户 B 的 IP 地址,并收到用户 B 的 IP 地址。SIP 代理服务器转发用户 A 与用户 B 进行通信的邀请信息(使用 SDP),包括用户 A 要使用的媒体。用户 B 通知 SIP 代理服务器可以接受用户 A 的邀请,且已做好接收消息的准备。SIP 代理服务器将此消息传达给用户 A,从而建立 SIP 会话。然后,用户创建一个点到点 RTP 连接,实现用户间的交互通信。

在这里插入图片描述

1.4.2 在不同的域中建立 SIP 会话

1.5 SIP URL账号

  通话双方都要有一个SIP帐号(也称为URI, 是网络上的电话号码),不同于全数字的传统电话号码, SIP帐号采用 URI 表示方法, 例如:sip:peter@company.com:5060
其中:

  • sip: 表示采用sip协议
  • peter是用户名, 也称为帐号. 用字母和数字均可。
  • company.com 是帐号所属的服务器域名( 也可以用IP地址,例如: sip:peter@192.168.1.100)
  • 最后的5060是端口号。

SIP协议默认端口为5060, 默认采用UDP传输 。5060的意思是,客户端在名为company.com的服务器的5060端口号上等待对方连接如果端口号是 5060,也可以省略不写。则上述SIP帐号写为: sip:peter@company.com。除了sip:这几个字母, SIP帐号就像一个邮件帐号。 没错,SIP协议设计者的意图就是让SIP帐号与邮件帐号一致,方便与邮箱服务整合。对用户来说方便,你要打电话给我,我的电话号就是邮箱。

2. 什么是SDP

SDP的作用就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成。典型的会话传送协议包括:SAP(Session Announcement Protocol会话公告协议),SIP(Session Initiation Protocol,会话初始协议),RTSP,HTTP,和使用MIME的E-Mail。

3. SIP和SDP的关系

在这里插入图片描述
SDP和RTP/RTCP是创建SIP媒体会话的最基本的要求。

3.1 基于freeswitch进行通话的抓包结果

在freeSwitch中使用originate命令对1000注册用户发起呼叫,sip:1000@xxx.xxx.xxx.xx相当于一个server,freeswitch中的相当于一个client(sip的)。其抓包结果如下:

这仅仅是a-leg,并没有实现真正的通话数据流的传输,也就没有RTP数据包,只用信令 (SIP和SDP) 相关的包。后续在两个电脑上实现双向通话进行抓包测试。

SIP/SDP与其他协议的拓扑关系

SIP是一种应用层的协议规范,和其他的前面所提到的协议同属应用层的协议。它的目的是用来实现网络媒体的创建服务,电话呼叫,电话会议,视频会议,媒体共享等应用。在这些应用服务中,终端需要支持不同的数据形式,语音编码,数据文件,视频编码等。在这些数据交换的过程中,用户之间的通信可能通过UDP传输/TCP传输方式来传输RTP,也需要RTCP来对媒体流传输控制进行处理。因此,SIP协议协议配合其他的协议完成整个通信服务的处理,其相关协议如下示例图所示:
在这里插入图片描述
SIP的基本网络构成包含以下几个核心模块:各种UA(终端设备),注册服务器,转发服务器,定位服务器、代理服务器和应用服务器。如果实现完整的SIP媒体通信的话,SIP需要支持至少五种功能:

  • 定位服务:决定通信使用的最终终端系统。
  • 用户有效性:决定被呼叫方是否有意愿加入到通信环境中。
  • 用户媒体支持能力:决定双方通信所需要的媒体和媒体参数
  • 会话创建:创建会话,启动ring振铃等。
  • 会话管理:转接,修改会话参数,发起其他服务,结束会话等。

通过以上五种功能的支持,SIP网络中的核心构件才能成功工作。
在这里插入图片描述
一个应用场景中,两个SIP终端通过两个代理的呼叫流程如下所示:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/wMCs4HOx.shtml

相关文章

SSDP 简单服务发现协议 .

http://blog.csdn.net/lilypp/article/details/6631951 cache network 网络 algorithm ext service SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client…

SSDP Protocol

SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采…

SDP协议详细介绍

SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html 一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP…

SSDP 简单服务发现协议

SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。 SSDP多播地址:239.255.255.250:1900(IPv4),FF0x::C(…

设备发现协议SSDP实现

原理: 1.将socket加入239.255.255.250,端口 1900 2.客户端:通过设置setsockopt IPPROTO_IP,IP_ADD_MEMBERSHIP属性,可向ssdp组进行组播。 3.服务端:通过设置绑定239.255.255.250:1900进行数据接收,通过s…

wireshark-协议分析【初见】(NBNS协议,SSDP协议、IGMPv2)

写在前面 win7:192.168.2.150(00-0c-29-CF-D3-0F) kali:192.168.2.120(00:0c:29:e7:1c:e5) (均使用的vmware虚拟机平台) 该系列并不会太关注wireshark的用法,重点关注协议交换时数据包的情况。…

ssdp协议搜索GB28181设备

1、http协议和ssdp协议 ssdp协议近似于http协议,事实上,和http协议相似得地方就是他得协议内容,当然,我们要去除他得端口和d类地址。 为什么我在给其他员工或者面试得时候要他人深入一些,理解一下http协议&#xff0…

二叉树、红黑树

二叉树 遍历概念  所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。  遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 遍历方案 1&#x…

图解红黑树及Java进行红黑二叉树遍历的方法

红黑树 红黑树是一种数据结构与算法课堂上常常提到但又不会细讲的树,也是技术面试中经常被问到的树,然而无论是书上还是网上的资料,通常都比较刻板难以理解,能不能一种比较直观的方式来理解红黑树呢?本文将以图形的方式…

算法 红黑树

红黑树 红黑树概述红黑树性质 红黑树的插入代码实现 红黑树概述 红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学的中用到的一种数据结构,典型的用途是实现关联数组,红黑树和AVL树类似,都是…

【数据结构】--二叉树,红黑树

【数据结构】--二叉树,红黑树 🏆概念🍍定义🍋 术语📝可视化网站 ☀️二叉树✨ 二叉搜索树🍍定义🍑查找节点🍋插入节点🍅遍历节点🍕 前序排序🧀 后…

红黑树的详细实现(C++)

红黑树概念(concept) 树型结构主要用于搜索,一直是科学领域的重要演算法,当中探讨了树可能遇到的问题:树的成长可能偏向于一边,也就是不平衡现象。 二叉树是常见且广泛使用的一种树,面临其可能退化成链表的潜藏缺点&…

二叉树——二叉查找树和红黑树

二叉树 二叉树,是一个非常重要的数据结构,在日常的开发中起着很重要的作用,它也衍生出来的各种高效的复杂的数据结构,为我们解决问题提供了高效的解决方案。 二叉树,它是由各个数据节点和左右链接构成的一种类似树的数…

Java——红黑树

概念 红黑树也是一种二叉搜索树,但是和avl树不同,它并不是依靠平衡因子来保证树的平衡的,而是通过颜色 红黑树每个节点中会存储颜色,分为红色和黑色,通过红黑树的限制条件,可以保证从根节点出发到叶子节点…

二叉树--红黑树

红黑树 定义 红黑树,顾名思义,就是树的节点只有红色和黑色两种状态,通过这两种状态的标识和规定颜色的使用,来使树达到相对平衡。为什么说相对平衡?因为在红黑树中,所有的条件限制只能保证,所…

二叉树之红黑树

红黑树 概述 为什么要有红黑树??? 特点 红黑规则 如何在红黑树上添加节点? (1)我们不妨假设加入的节点都是黑色 (2)如果我们加入的节点都是红色 红黑树添加节点后如何保持红…

红黑二叉树

红黑树 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 节点是红色或黑色。 根节点是黑色。 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有…

红黑树-Java实现

目录 一、定义 二、插入 三、删除 四、全部代码 五、颜色效果 一、定义 红黑树是特殊的平衡二叉树,具有以下特性: 1、根节点的颜色是黑色 2、节点颜色要么是黑色、要么是红色 3、如果一个节点的颜色是红色,则它的子节点必须是黑色&…

红黑二叉树原理分析

1.引言 HashMap的基本结构是数组,链表和红黑树。以数组为基本形态,数组中的元素先以链表形式储存,当链表的长 度超过8时(包含数组上的那个链表头)就会将链表转换为红黑树,以加快修改和查询效率。当然除了H…

理解红黑树及代码实现

1.红黑树定义 红黑树是一颗 红-黑的平衡二叉树,它具有二叉树的所有特性,是一颗自平衡的排序二叉树.(树中任何节点值都大于左子节点的值,而且都小于右子节点的值),其检索效率高,它是一颗空树或它的左右两个子树高度差的绝对值不超过1,并且左右…