SIP讲解
- 格式:ppt
- 大小:57.51 KB
- 文档页数:9


1 20 竭诚为您提供优质文档/双击可除
sip,协议讲解
篇一:sip协议格式详解
1.sip
1.1.1.sip格式
每条sip消息由以下三部分组成:(1)起始行(startline):每个sip消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。
(2)sip头:用来传递消息属性和修改消息意义。它们在语法和语义上与http头域相同(实际上有些头就是借自http),并且总是保持格式::。
(3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。sip清晰区别了在sip起始行和头中传递的信令信息与在sip范围之外的会话描述信息。可能的体类型就包括本文将要描述的sdp会话描述协议。
2 20 1.1.2.消息头
“where”列描述了在头域中能够使用的请求和应答的类型。这列的值是:
R:头域只能在请求中出现;r:头域只能在应答中出现;
2xx,4xx,等等:一个数字的值区间表示头域能够使用的应答代码。c:头域是从请求拷贝到应答的。
如果”where”栏目是空白,表示头域可以在所有的请求和应答中出现。
“proxy”列描述了proxy在头域上的操作
a:如果头域不存在,proxy可以增加或者连接头域m:proxy可以修改现存的头域值d:proxy可以删除头域值
r:proxy必须能读取这个头域,因此这个头域不能加密。
接下来6个栏目与在某一个方法中出现的头域有关:
c:条件;对头域的要求依赖于消息的内容m:头域是强制要有的。
m*:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。o:头域是可选的。
t:头域应当被发送,但是客户端/服务端都需要准备接收没有这个头域的消息。客户端/服务端都需要准备接收没有这个头域的消息。如果通讯的协议是基于面向流的协议(比如tcp),那么头域值必须被发送。
SIP协议解析与实现
本文将按照RFC3261逐步的介绍SIP协议,介绍了c和c++语言的实现,分析了osip库的使用和实现。
第一章 概述
一 概述
SIP协议是一个基于应用层的会话控制协议。它可以创建、修改、终止多媒体会话(会议),也可以邀请参与者加入到一个现有的会话。
因为SIP是一个基于应用层的协议,所以它不是一套完整的通讯系统方案,它需要和其它的方案或者协议结合起来实现整套系统。例如,实时传输协议(RTP)(RFC1889)用来传输音视频等实时的流媒体数据。实时流协议(RTSP)(RFC2326)用来控制媒体流的传递。媒体网关控制协议(MEGACO)(RFC3015)用来控制PSTN网关。
由此可见,SIP协议应该用来组合其它协议,从而实现完整的服务。但是,SIP基础的功能和操作不依赖于其它协议。
二 第一个例子
图1
下面引用RFC3261的例子来说明sip的基本功能,包括:定位终端,发送通讯请求,协商会话参数,建立会话和撤销建立的会话。图1显示了用户Alice和Bob使用SIP交换信息的一个典型的例子(每一个消息用字母F和一个数字来标号,标号的前面有一个简短的消息类型说明)。在这个例子中,Alice使用一个在她的PC机中的SIP应用程序呼叫Bob,Bob使用他的SIP电话,这个SIP电话登录了互联网。同时,请注意两个SIP代理服务器在Alice和Bob的会话的建立中起到的作用。
Alice呼叫Bob是使用他的SIP标识符。SIP标识符是一种URI(Uniform Resource
Identifier),称之为SIP URI。SIP URI格式很象email地址,包含一个用户名和一个主机名,如:sip:bob@。这里是Bob的SIP服务提供者的域名。Alice的SIP URI是:sip:alice@。SIP也支持安全URI,叫做SIPS URI,例如,sips:bob@。一个向SIPS URI的呼叫使用加密传输(也就是TLS)来携带从呼叫者到被呼叫者所有的SIP消息。
SIP 协议学习
1 初识SIP
1.1 SIP定义
Session Initiation Protocol会话初始协议是基于文本的信令协议。是一个在IP网络上进行多媒体通信的应用层控制协议。用来创建、修改和终结一个或多个参与者参加的会话进程。
SIP协议可用于发起会话,也可用于邀请成员加入已经用其他方式建立的会话。
SIP基于文本编解码。采用事务机制,每一个请求出发Server的操作方法,请求和响应构成一个事务。事务间彼此独立。
SIP独立于底层传输协议。SIP协议承载在IP网,传输层协议可用TCP或UDP,推荐首选UDP。
SIP支持5方面功能:
1. 用户定位:确定通信所用的端系统位置
2. 用户能力交换:确定所用的媒体类型和媒体参数
3. 用户可用性判定:确定被叫方是否空闲和是否愿意加入通信
4. 呼叫建立:邀请和提示被叫,在主被叫之间传递呼叫参数
5. 呼叫处理:包括呼叫终结和呼叫转移等
1.2 SIP特点
1. 一个正在发展和不断研究中的协议。
2. 简练、开放、兼容和可扩展等原则。
3. 充分注意到因特网开放而复杂的网络环境下的安全问题。
4. 充分考虑了对PSTN的各种业务,包括IN(Intelligent Network智能网)业务和ISDN业务(Integrated Services Digital Network综合业务数字网)的支持。 2 SIP协议
2.1 SIP协议结构
事务用户TU语法和编码层传输层事务层
1. 最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar(BNF范式)。
2. 第二层是传输层。定义了一个客户端如何发送请求和接收应答,以及一个服务器如何接收请求和发送应答。所有的SIP要素都包含一个通讯层。
3. 第三层是事务层。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端(user agent client UAC)完成的事情都是由一组事务构成的。有状态的代理服务器包含一个事务层;无状态的代理服务器不包含事务层。
SIP穿越NAT的几种方式
多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,媒体流与信令流截然不同,它们所采用的网络通道也不一致。由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/Firewall)。因为它们生存期的目标只是为了建立一个在信息中携带IP地址的分组流,这在遇到NAT/Firewall 时会带来许多问题。而且这些协议的目标是通过建立P2P(Peer
to Peer)媒体流以减小时延,而协议本身很多方面却与NAT存在兼容性问题,这也是穿透 NAT/Firewall的困难所在。而NAT仍是解决当前公用IP地址紧缺和网络安全问题的最有力手段,所以解决NAT穿越成为首要问题。
以SIP通信为例,呼叫建立和媒体通信的建立是依赖SIP消息首部和SDP消息所描述的地址和端口信息进行的,呼叫双方分别在内网和外网上,内网是通过NAT设备连接到外网,由于NAT设备工作在IP和TCP/UDP层,所以它不对SDP等应用层数据进行NAT变换,因此会造成寻址失败,从而导致呼叫无法正常建立。另外,VOIP设备的主要通信协议(如SIP和H.323)要求终端之间使用IP地址和端口号来建立端到端的数据侦听外来的呼叫,而防火墙却通常被配置阻止任何不请自到的数据分组通过。需要网络管理者打开防火墙上的一个端口来接收呼叫建立数据分组,例如5060端口(SIP的通信端口),但IP语音和视频通信协议还要求打开许多别的端口接收呼叫控制信息来建立语音和视频通信,这些端口号事先并不知道,是动态分配的,也就是说网络管理者为了允许语音和视频通信将不得不打开防火墙上所有的端口,防火墙就失去了存在的意义。所以当前的问题还有需要解决监听端口的问题。如下图SIP呼叫不成功示意图
分析:
1 d:211.83.100.100:23766 s:192.168.1.166:1010
2 d:211.83.100.100:23766 s:211.83.100.166:9993