参考资料

  • 会话初始协议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终端通过两个代理的呼叫流程如下所示:

协议--SIP/SDP相关推荐

  1. 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析

    0.前言 流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输:下面这几种协议就围绕着这两个需求而产生. 1.rtp协议 rtp的全称是实时传输协议RTP(Real-time Tran ...

  2. 智能终端会议系统(20)---网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系

    网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系 RTP/RTCP/RTSP/SIP/SDP 关系 1. RTP Real-time Transport Protocol,是用 ...

  3. SIP协议-05 SDP协议

    文章目录 1 SDP简介 2 SDP协议格式 2.1 字段描述 2.1.1 Version(必选) 2.1.2 origion(必选) 2.1.3 Session Name(必选) 2.1.4 Con ...

  4. 会话初始协议SIP与SDP简介

    SIP(Session Initiation Protocol,会话初始协议)是一个控制发起.修改和终结交互式多媒体(音视频.聊天.游戏等)会话的信令协议(RFC 3261).SIP是一个基于文本的协 ...

  5. sip gw功能包括_完整SIP/SDP媒体协商概论-SIP/WebRTC概要

    ​Session Description Protocol(简称是SDP)全称是会话描述协议,此协议用来创建一种协商机制,这种协商机制是由呼叫控制协议创建的介于两个呼叫用户之间的会话进行,协商机制支持 ...

  6. 海康sip服务器地址_完整SIP/SDP媒体协商概论SDP基础使用要求

    接完整SIP/SDP媒体协商概论-SDP基础-核心定义全解.上一个章节笔者介绍了关于SDP的一些核心概念(第一章节和第二章节),今天,我们继续在此之间讨论SDP的其余基础内容(从第三章节开始).在以下 ...

  7. RTP/RTCP/RTSP/SIP/SDP简介

    目录 RTP:Real-time Transport Protocol RTCP:Real-time Transport Control Protocol SRTP & SRTCP:Secur ...

  8. RTP/RTCP/RTSP/SIP/SDP 关系(直接看总结)

    RTP/RTCP/RTSP/SIP/SDP 关系   RTP(实时传输协议,传输层) Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议 ...

  9. GB28181协议--SIP协议介绍

    1.SIP协议简介   SIP(Session Initiation Protocol,会话初始协议)是一个用于建立.更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话.多媒体会话或多媒体 ...

  10. inviteflood -SIP/SDP 泛洪攻击

    0x00前言 会话发起协议(Session Initiation Protocol,缩写SIP) 会话描述协议(Session Description Protocol或简写SDP)描述的是流媒体的初 ...

最新文章

  1. 用ssh远程登录服务器时,怎么直接以root用户登录?(需要修改配置,如果不想修改,可以先用普通用户登录再su切换到root用户)
  2. moel vue 自定义v_vue如何在自定义组件中使用v-model
  3. kindle阅读_如何在Kindle上清除最远的阅读页面
  4. c语言实训作业总结,c语言程序设计上机实践心得报告
  5. Websocket服务器响应包,服务器websocket c++发送二进制类型包,客户端没有任何事件响应...
  6. 高速ETC劝大家不要抬杠:真文案鬼才!
  7. mysql5.7.22的配置说明_mysql 5.7.22 免安裝版Windows配置
  8. plc编程技术发展历程
  9. iOS 逻辑分辨率、物理分辨率
  10. DDD(领域驱动设计)系列主题:基础概念对象介绍(实体,值对象,仓储等)
  11. 昭阳k20-80拆机过程
  12. poj3580:SuperMemo(块状链表/Splay)
  13. 淘客必看的抖音引流方案,淘客小白如何在抖音上引流?
  14. 斯坦福大学的低码率音频编码博士论文
  15. 用Python调用Graphviz生成复杂股权关系图
  16. 贝塞尔曲线是什么?如何用 Canvas 绘制三阶贝塞尔曲线?
  17. 14. Thymeleaf
  18. `docker数据持久化volume和bind mounts两种方式
  19. 词性标注_CodingPark编程公园
  20. Swift 编码规范

热门文章

  1. PHP之 通过银行卡账号匹配银行名称
  2. iozone文件系统性能评测工具
  3. 电池检测步入新领域,武汉蓝博三款科研电池测试设备来助力
  4. 9种常见的反爬虫策略思路
  5. [Transformer]SPViT:Pruning Self-attentions into Convolutional Layers in Single Path
  6. 搭建ASP环境-win7安装IIS并运行ASP程序
  7. win10 计算机组策略,win10家庭版系统找不到组策略gpedit.msc的解决方法
  8. 免费下载 仿宋GB2312字体
  9. 31_管家婆家庭记账软件
  10. arcgis创建城市路网