SIP 协议

摘要:
SIP是会话层的信令控制协议。SIP是一种类似于HTTP的基于文本的协议。SIP可以缩短应用程序,特别是高级应用程序的开发时间。由于基于IP协议的SIP使用IP网络,固定网络运营商将逐渐意识到SIP技术对他们的深远意义。随着国际电信联盟SS7标准和ITUH 323视频协议组合标准的长期存在,SIP的工作独立于底层网络传输协议和媒体。SIP的四个基本功能是定位用户并将SIP地址解析为IP地址;协商会话的特征计算能力;在通话期间更改会话参数;负责会话的建立和中断。
SIP简介

sip出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授Henning Scheulzrinne 及其研究小组的研究。他处于人共同提出通过Internet传输实时数据的实时传输协议RTP之外,还与人合作编写了实时流传输协议RTSP标准提案,用于控制音频视频内容在Web上的流传输。
SIP(Session Initiation Protocol)是一个会话层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似Internet多媒体会议、ip电话或多媒体分发。会话的参与者可以通过组播、网状单播或两者的混合体进行通信。
SIP是类似于HTTP的基于文本的协议。SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义。
与存在已久的国际电信联盟 (ITU) SS7 标准(用于呼叫建立)和 ITU H.323 视频协议组合标准不同,SIP 独立工作于底层网络传输协议和媒体。它规定一个或多个参与方的终端设备如何能够建立、修改和中断连接,而不论是语音、视频、数据或基于 Web 的内容。

  • SIP默认使用UDP 5060端口,但也可以使用TCP 5060。
  • SIP使用Server-Client模型。
  • SIP的四项基本功能:定位用户,将SIP地址解析为IP地址;协商Session的feature 呾capability;在迚行呼叫时改变会话参数;负责会话的建立和中断。
  • SIP 地 址 形 式 :sip:1112223344@mycompany.com 或sip:1112223344@10.1.1.1
SIP组件

User Agent

UA是SIP的基本组件,可分为UAC(User Agent Client)和UAS(User Agent Server)。发起呼叫的为UAC,接收呼叫的为UAS。很多设备都可做UA,如IP电话、PC、路由器等。

Proxy Agent

proxy server起到call routing、authentication、authorization、address resolution、loop detection 的功能。
UAC发起呼叫时会先把call setup message 发给proxy server,如果proxy server知道UAS的位置,会把call setup message转发给UAS(或者是next hop),否则会找其他的server查询。UAS接收到call setup message后会给proxy server响应,proxy ser ver再把这个响应返回给UAC。当呼叫建立之后,proxy server有2种选择。第一、呼叫建立之后还处于UAC和UAS之间的signaling path之间(Record-Route),以监视call change message或call termination message。第二、退出UAC和UAS之间的signaling path,不再参与会话。

Redirect Server

UA、Proxy Server可与Redirect Server通讯,以查找另一个endpoint的位置。

sip方法

REGISTER  UAC 使用此message向server注册以表明自己的位置。
INVITE     UAC发送此消息用以邀请UAS加入会话,其实就是一个call setup message。
ACK     为INVITE回复一个确认信息
CANCEL   中止一个还没建立的呼叫。
OPTIONS   用来查询server的capability。
BYE     用于中断呼叫。

返回的状态码
  1. 1XX  临时响应、表示请求消息正在被处理
  2. 2XX  成功响应、表示请求已被成功接收完全理解并接收
  3. 3XX  重定向响应、表示需采取进一步完成请求
  4. 4XX  客户机错误、表示请求消息中包含语法错误信息或服务器无法完成客户机的请求
  5. 5xx  服务器错误、表示服务器无法合法完成请求
  6. 6XX 全局故障 、表示任何服务器都无法完成该请求
SIP注册过程

请求端发送Register消息

REGISTER sip:10.109.252.6:5060 SIP/2.0
Call-ID: 90b9fbdb1437ec4c3b57f2e72ad60c4a@10.108.164.218
CSeq: 1 REGISTER
From: <sip:libin@10.109.252.6>;tag=6256
To: <sip:libin@10.109.252.6>
Via: SIP/2.0/UDP 10.108.164.218:6060;branch=z9hG4bK2a6a2acc56bd8a994d4a8773f5cfdc99
Max-Forwards: 70
Contact: <sip:libin@10.108.164.218:6060;transport=udp>
Expires: 180
Content-Length: 0

服务器端检查到需要鉴权,给请求端发送401结果码,并带上“WWW-Authenticate”头信息

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.108.164.218:6060;branch=z9hG4bK13b359679ffdc900772e249069e492f5;rport=6060
To: <sip:libin@10.109.252.6>;tag=942cdaa5
From: <sip:libin@10.109.252.6>;tag=8377
Call-ID: 41b7660d5020c244787544a9c3aa63cd@10.108.164.218
CSeq: 1 REGISTER
WWW-Authenticate: Digest nonce="1356268016:5eaed72a7b94a6b1b235611391117886",algorithm=MD5,realm="10.109.252.6",qop="auth"
Content-Length: 0

SIP 协议第1张

请求端通过“Authorization”头字段带上鉴权头信息,发送一个新的REGISTER消息

REGISTER sip:10.109.252.6:5060 SIP/2.0
Call-ID: 8b1db000ad7a99821a25fdadaa7c1d28@10.108.164.218
CSeq: 2 REGISTER
From: <sip:libin@10.109.252.6>;tag=2550
To: <sip:libin@10.109.252.6>
Via: SIP/2.0/UDP 10.108.164.218:6060;branch=z9hG4bK658495c291f118da5e63443ca60dc668
Max-Forwards: 70
Contact: <sip:libin@10.108.164.218:6060;transport=udp>
Expires: 180
Authorization: Digest username="libin",realm="10.109.252.6",uri="sip:10.109.252.6:5060",algorithm=MD5,opaque="",nonce="1356268196:9425e0b73fcdb8d50f7b87cbd4db2fef",nc=1,cnonce="xyz",response="d829aff6987b2596cefe625dcff689d8",qop=auth
Content-Length: 0

SIP 协议第2张

服务器端验证鉴权信息的合法性,若验证成功,发送200 OK消息

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.108.164.218:6060;branch=z9hG4bK7cd89ec16ccd95349cc7ee4f461c4353;rport=6060
To: <sip:libin@10.109.252.6>;tag=adc2c168
From: <sip:libin@10.109.252.6>;tag=9291
Call-ID: 90bbca26efb20dc82029f443c416579f@10.108.164.218
CSeq: 2 REGISTER
Content-Length: 0

SIP 协议第3张

SIP 协议第4张

免责声明:文章转载自《SIP 协议》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇myEclipse使用代理软件之后其他软件不能联网的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

freeswitch 使用info显示的通道变量

2019-01-20 11:57:30.167311 [INFO] mod_dptools.c:1743 CHANNEL_DATA:Channel-State: [CS_EXECUTE]Channel-Call-State: [RINGING]Channel-State-Number: [4]Channel-Name: [sofia/internal/10...

淘宝网Open API 入门教程

淘宝网Open API 入门教程 淘宝网的Open API开放将近一年了,越来越多的人(包括已工作的和在校的大学生)都在使用淘宝的Open API,有不少ISV应用已上架盈利了。我也使用淘宝的Open Api也大半年了。不过了,由于阿里软件的文档比较的乱,让很多初学者分不清头绪(注:淘宝网的Open API是开放在阿里软件的一个平台上,是什么服务集群平台吧...

FreeSwitch下配置DID的方法

首先介绍下什么是DID? 翻译为中文为“直接向内拨号”,该服务是由电话公司提供的,它使用户能够直接拨打PBX或VOIP系统中的分机号码,而无需求助于总机或自动话务系统。 现在要实现这样一个功能 - 通过手机或座机拨打一个号码(例如:01088888888),可以直接联系到VOIP系统(FreeSwitch系统)的1008这个用户。如下图所示: 手机/座机...

SIP 认证

理解SIP的认证 1. 认证和加密    认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁。而相关的概念是MD5,用于认证安全。注意MD5仅仅是个hash函数而已,并不是用于加密。因为hash函数处理后的数据没法进行反向恢复,这样子的话别人没法盗取你认证身份的口令。    加密(Encryption)的作用在于对想传输的数据进...

同时安装PyQt4和PyQt5之sip版本区分

如果同时安装了PyQt4和PyQt5(自己编译或者安装预编译版本),在运行某个PyQt4或者PyQt5的Python脚本时,很有可能出现以下的错误提示: RuntimeError: the sip module implements API vX.X but the PyQt5.QtCore module requires API vY.Y 本文帮助大家解...

[SC] OpenSCManager 失败 5:拒绝访问

问题:[SC] OpenSCManager 失败 5: 网查这个错误信息指拒绝访问 权限不足 1.解决: 以管理员身份运行cmd,即可 查询这个提示是指什么错误时,看网上有很多文章写用下面这种方法,很好奇的亲测了一下,也可以解决: 运行-->输入regedit-->依次找到HKEY_LOCAL_MACHINE\Software\Microso...