收藏 分享(赏)

sip协议原理分析及总结.doc

上传人:精品资料 文档编号:10190732 上传时间:2019-10-18 格式:DOC 页数:12 大小:204.50KB
下载 相关 举报
sip协议原理分析及总结.doc_第1页
第1页 / 共12页
sip协议原理分析及总结.doc_第2页
第2页 / 共12页
sip协议原理分析及总结.doc_第3页
第3页 / 共12页
sip协议原理分析及总结.doc_第4页
第4页 / 共12页
sip协议原理分析及总结.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、SIP 协议学习总结1、SIP 协议定义SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。多媒体会话可以是点到点的话音通信或视频通信,也可以是多点参与的话音或视频会议等。SIP协议透明地支持名字映射和重定向服务,便于实现ISDN,智能网以及个人移动业务。SIP协议可以用多点控制单元(MCU)或全互连的方式代替组播发起多方呼叫。与PSTN相连的IP电话网关也可以用SIP协议来建立普通电话用户之间的呼叫。SI

2、P协议在IETF多媒体数据及控制体系协议栈结构的位置H.323 SIP RTSPRSVP RTCPH.263 etc.RTPTCP UDPIPPPSonet AL3/4 AL5ATM Ethernet PPV.34SIP协议支持多媒体通信的五个方面: 用户定位:确定用于通信的终端系统; 用户能力:确定通信媒体和媒体的使用参数; 用户有效性:确定被叫加入通信的意愿; 会话建立:建立主叫和被叫的呼叫参数; 会话管理:包括呼叫转移和呼叫终止; SIP协议的结构SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,这些层次之间只有松散的关系。SIP最底层的是它的语法和编码层。编码方式

3、是采用扩展的Backus-NaurForm grammar (BNF范式)。第二层是传输层。它定义了一个客户端发送请求和 接收应答的方式,以及一个服务器接收请求和发送应答的方式。所有的SIP要素都包含一个通讯层。第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是由一组事务构成的。用户代理与有状态的代理服务器都包含一个事务层,无状态的代理服务器并不包含事务层。事务层包含一个客户元素(可以认为是一个客户事务)和一个服务器元素(可以

4、认为是一个服务器事务),他们都可以用一个有限状态机来处理特定的请求。在事务层之上是事务用户(Transaction User TU )。每一个SIP实体,除了无状态代理,都是一个事务用户。当一个TU发出一个请求,它首先创建一个客户事务实例并将目标IP地址、端口号、以及发送请求的设备信息一起发送。事务用户可以创建客户事务,也可以取消客户事务。当客户取消一个事务,它请求服务器终止正在处理的事务,并且回滚状态到该事务开始前的状态,并且产生指定的该事务的错误报告。这是由CANCEL请求完成的,这个请求有自己的事务,并且包含一个被取消的事务。2、SIP协议主要概念模型2.1实体模型概述SIP协议模型定义

5、了User Agent(用户代理)和Server(服务器)等两类主要实体。SIP协议把User Agent(即UA)分为两个部分: User Agent Client和User Agent Server。呼叫方(称User Agent Client)发出邀请(或呼叫),被叫方(称User Agent Server)接受或拒绝邀请(或呼叫)。分组终端设备、媒体网关/ 媒体设备通常是包括 User Agent Client和User Agent Server在内的User Agent。另外,下面所说的Proxy Server也要实现User Agent功能。SIP协议定义了Proxy Server

6、、Redirect Server和Register Server等三类主要Server。Register Server:主要用于登记分组终端的当前位置和位置服务的原始数据。 Proxy Server:作为User Agent Client和User Agent Server间的中间媒体,它转发User Agent Client来的的邀请,在转发之前,根据被叫标识请求位置服务器获得被叫的可能位置,然后分别向它们发出邀请; Redirect Server:接受User Agent Client来的邀请,根据被叫标识请求位置服务器获得被叫的可能位置,把这些信息返回给邀请的发起者(User Agent

7、 Client),和Proxy Server的不同之处就在于它不转发邀请,邀请由主叫终端自己完成。Sip协议基本网络模型,如下图所示:2.2 SIP协议相关概念呼叫(Call):一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。一个SIP 呼叫用全局唯一呼叫标识符(CALL_ID )来识别。因此,如果一个用户被不同的人邀请参加同一个多点会议,每个邀请都有一个唯一的呼叫。一个点对点因特网电话交谈也被认为是一个SIP呼叫。在一个基于多点控制单元(MCU)的电话交谈节目中,每个参与者都用一个独立的呼叫与MCU相连。呼叫支路(Call leg):一个呼叫支路由Call-ID、To以及Fro

8、m 之中的addr-spec和tag共同标识。只有addr-spec中的user和hostport部分有意义。在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫支路。呼叫支路也可以说是一次呼叫里消息经过的路径。会议(Conference):一个多媒体会话,由公共的会话描述来标识。一个会议可由零个或多个成员组成,可以是多点会议,全互连会议,点对点会议,或者是它们的组合。可以用任意数目的呼叫来建立一个会议。发起者、主叫(Initiator,Caller):发起会议邀请的一方。注意,发起者不一定是会议的建立者。被邀请者、被叫(Invitee,Callee):被主叫方邀请参加会话

9、的一方。邀请(Invitation):要求用户加入会话的请求。一个成功的SIP邀请包括2个事务:一个INVITE请求,后面跟一个ACK请求。同构请求/响应(Isomorphic request or response):两个含有相同Call-ID、To、From和CSeq头域的请求/响应。此外,同构请求还必须含有相同的Rquest-URI。并行查询(Parallel search):在一个并行查询中,代理收到请求后向可能的被叫用户发出多个请求。并行查询在发出请求时并不等待以前所发请求的响应。最终响应(Final response):用于结束SIP事务的响应,与临时响应相对。所有的2XX,3XX

10、,4XX,5XX和6XX响应都是最终响应。临时响应(Provisional response):服务器用来表示工作进展,并不结束SIP事务的一种响应。编码为1XX的响应是临时响应,其他响应都是最终响应。会话(Session):根据SDP(会话描述协议)规范的定义:“多媒体会话是由多媒体发送者,接收者以及从发送者到接收者的数据流组成的集合。SIP Transaction(SIP事务):一个SIP事务是发生在客户和服务器之间的,包括从客户向服务器发出的第一个请求直到服务器发给客户一个最终响应这期间所有的消息。事务是由一个呼叫支路(Call leg)中的Cseq 顺序号来标识的。一个ACK请求与对应

11、的INVITE请求拥有相同的CSeq,构成自己的事务; B2BUA(背靠背用户代理):B2BUA是接收请求并作为用户代理服务器的一个逻辑实体。为了确定应该如何响应请求,它作为一个用户代理客户(UAC)发出请求。与代理服务器不同的是它维护对话状态并必须参与所有在已建立的对话上所发的请求。由于它是一个串联UAC和UAS,对于它的行为无须作显式定义。Address-of-Record(记录地址):一个address-of-record(AOR)是一个SIP或者SIPS URI它指向了一个具有定位服务的主机,这个主机可以把URI映射成为用户真正物理位置的URI。通常情况下,定位服务器是通过登记服务来建

12、立的。一个AOR经常被认为是一个用户的”公共地址”。Message(消息):SIP元素之间传送的协议数据就是消息。SIP消息既可以是请求也可以是应答。Method(方法):方法是在服务器请求处理的主要功能。方法是请求消息自身携带的。典型的方法就是INVITE和BYE。Request:(请求): 一个由客户端发到服务端的SIP信息,用于执行特定的功能。Response(应答):一个由服务端发到客户端的SIP信息。用来标志从客户端发往服务端的请求处理的情况。Ringback(回铃音):回铃音是一个信号音。是给呼叫方的一个信号表示被叫方正在振铃(Ringing)。Route Set(路由集):路由集

13、合是一个顺序的SIP或者SIPS URI。这些URI描述了传递一个请求所必须经历的代理列表。一个路由集可以是自适应的,因为包头中包含了Record-Route(记录路由),也可以是依赖配置得到的。3、SIP 协议主要消息3.1 SIP 消息分类SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。SIP协议将Server和User Agent之间的通讯的消息分为两类:请求消息和响应消息。请求消息:客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。响应消息:服

14、务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应3.2 SIP 消息结构请求消息和响应消息都包括SIP消息头字段和SIP消息体字段。 SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP消息体主要用来描述本次会话具体实现方式。3.2.1 SIP消息头类型在 SIP 消息中,有四种类型的头字段:通用头字段 请求头字段响应头请求 实体头字段 SIP 消息头的通用结构:层次和在消息头中所有行的层次相同对于客户机/服务器都不能理解的头字段仅仅是被忽略,而不移除.常见的头字段如下表General Header Entit

15、y Header Request Header Response HeaderAccept Content-Encoding Authorization AllowAccept-Encoding Content-Length Contact Proxy-AuthenticateCall ID Conten-Type Hide Retry-AfterContact Max-Forwards ServerCommand Sequence Organization UnsupportedEncryption Proxy-Authorization WWW-AuthenticateExpires Pr

16、oxy-RequireFrom RouteRecord-Route RequireTimestamp Response-KeyTo SubjectVia User AgentsDate Priority Waming一些重要的通用头 Call-Id: 统一独特的呼叫标识 Cseq: 请求命令顺序号 Via: 用于记录一个请求传送的路径 From:存在于每个SIP 消息中,包含请求发起者的显示名和地址。SIP 响应的From域是请求中From 域的拷贝。 To: 存在于每个SIP 消息中,表示一个请求的预期目的地。SIP 响应中的To 域是请求中To 域的拷贝。 Max-Forwards:字段表

17、示request 到达UAS 的跳数的限制,是一个整数,经过每一跳时减去一。 Contact:为后续请求提供了访问特定UA 实例的联系方法,即SIP 或者SIPS URI。 Content-Type:描述消息体内容的媒体类型。如:Content-Type:application/sdp。 Content-Length :标识了消息体的大小,采用十进制数字表示。 呼叫和呼叫者的标识头Subject: 呼叫,短消息主题Organization: 主叫和被叫, 代理服务器可能重填 Date: 呼叫的日期Server: 处理请求消息的服务器消息User-Agent: 发起请求消息的用户代理服务器信息A

18、ccept-Language: 优选语言Priority: 呼叫优先级 (普通,紧急,)In-Reply-To: 与早期呼叫的关联 内容描述头Content-Disposition: 消息解析的方式 Content-Encoding: 压缩 (gzip)Content-language: 语言选择 Content-length: 消息体长度Content-Type:媒体类型 (application/sdp ) 能力头Allow: Request-URI支持的方法Accept: 响应消息接受的媒体类型 ,如 application/sdp, text/htmlAccept-Encoding:响

19、应消息接受的压缩方式 Accept-Language:响应消息接受的语言 Supported: 服务器或代理支持的特性 (如 100rel )Require:服务器要求支持的特性 (100rel ) Unsupported:代理不支持的特性 3.2.2 SIP 消息体SIP 消息体部分则是通过另外一种协议来描述的,就是SDP 协议。SDP 协议也是一种基于文本的协议,英文全称为Session Description Protocol,称为会话描述协议,它是在RFC2327 中定义的。SDP 描述的信息封装在传送协议中发送,典型的会话传送协议包括:会话公告协议(SAP)、SIP、RTSP、HTT

20、P 和使用MIME(Multipurpose Internet MailExtensions)的E-mail。采用SIP 传送时, SDP 主要用来描述参与SIP 会话通信交流各方的媒体资源信息,主要包括以下几类信息:会话名称和目的; 会话激活的时间区段; 构成会话的媒体; 接收这些媒体所需的信息(地址、端口、编码格式等) 会话所用的带宽信息(可选); 会话负责人的联系信息(可选);媒体信息的具体内容包括: 媒体类型(视频、音频等); 传送协议(RTP/UDP 等); 媒体格式(H.261 视频、MPEG 视频等); 媒体地址和端口;时间信息的具体内容包括: 会话的开始和结束时间,可用多组时间

21、段; 对于每个时间段,可以指定重复时间;SDP 协议描述SIP 消息包体是采用文本形式的UTF-8 编码的IS010646 字符集。SDP会话描述由许多文本行组成,每个文本行的格式均为:=。其中,恒为单个字符,需区分大小写。为结构化文本串,其格式取决于,也需区分大小写。一般由多个字段组成,各字段由一个空格符分隔,也可以是一个自由格式的文本串。“=”符号两侧不允许有空格。会话描述包括两个部分:会话级描述和媒体级描述。会话级描述部分给出适用于整个会话和所有媒体流的描述信息,它以“v=”文本行开始。媒体级描述部分给出只适用于该媒体流的信息,它以“m=”文本行开始。一个会话描述可以包含零个或多个媒体级

22、描述。如果在媒体级描述中没有重新定义,会话级描述给定的值就是所有媒体的缺省值。会话描述的一般格式为:v=协议版本o=会话拥有者/创建者和会话标识符s=会话名称i=(可选)会话信息u=(可选)URI 描述e=(可选)Email 地址p=(可选)电话号码c=(可选)连接信息b=(任选)带宽信息一个或多个时间描述z=(可选)时区调整k=(可选)密钥a=(可选)零个或者多个会话属性行零个或多个媒体描述注意:各类文本行必须严格按上述次序排列,以便简化语法分析和检错。其中,时间描述格式为:t=会话激活的时间区段r=(可选)零个或多个重复时间媒体描述的格式为:m=媒体名和传送地址i=(可选)媒体名称c=(可

23、选)连接信息:如果已含于会话级描述则为任选项b=(可选)带宽信息k=(可选)加密密钥a=(可选)零个或多个媒体属性行SDP 定义的类型(type)字母很少。如果SDP 语法分析器不能识别描述中的某一类型字母,则应将整个描述丢弃。属性机制(“a=”行)供SDP 扩展其应用或媒体范围,可根据应用、媒体或会话的需要增加属性值。如果按收方不理解某属性值,则予以丢弃。SDP参数实例说明 V=0:指出 SDP 协议的版本 O wangyu 2890844526 2890842807 IN IP4 126.16.64.4用户名 会话 ID 版本 网络类型 地址类型 地址 S = SDP Seminar会话名

24、 I= A Seminar on the session description protocol会话描述 U =http:/www.alcatel- 关于本会议的附加信息指针 e= wang.yualcatel- 邮件地址 c = IN IP4 224.2.17.12/127网络类型 地址类型 连接的地址 t = 2873397496 2873404696 开始时间 终止时间a = recvonly 本会话仅仅是个 receive 会话过程 m = audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 描述其音频编码格式为 PCMU 采样频率为 8000 a=

25、rtpmap:8 PCMA/8000 a=sendonly3.3 消息格式3.3.1请求消息格式 SIP请求消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令行和每一条参数行。注意:参数行的顺序不是固定的。SIP请求消息实例: INVITE sip:0109127.0.0.1:5060;User=phone SIP/2.0命令消息 对端sip实体的URI 端口 用户名 sip版本号 Call-ID:01E04633512400000127.0.0.1 (统一呼叫标识)Via:SIP/2.0/UDP 127.0.0.1:5061 (响应路由)From:;tag=29005358336

26、B534F610A000 (请求源地址,带有tag标志)To: (目的地址)Contact: sip:010203127.0.0.1:5061(后续联系的地址和端口号,INVITE 消息必须)CSeq:1 INVITE (请求命令顺序号)Max-Forwards:70 (最大经过sip服务器跳跃数)Content-Type: application/SDP (媒体类型)Content-Length:168 (消息体大小)v=0 o=UserA 2890844526 2890844526 IN IP4 s=Session SDP c=IN IP4 192.0.0.1 t=0 0 m=audio

27、 49172 RTP/AVP 0 8 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=sendonly 3.3.2响应消息格式 SIP响应消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令行和每一条参数行。SIP响应消息实例: SIP/2.0 200 OK (200 OK消息SIP响应消息的一种)Content-Type:application/SDP Via:SIP/2.0/UDP 127.0.0.1:5061 Call-ID:01EF351F8140000000000127.0.0.1 CSeq:1 INVITE From:;tag=29

28、005358336B534F610A000 To:;tag=5358336B534F2900CD1B0000 Contact: Content-Length:156 v=0 o=HuaweiSoftX3000 1073741824 1073741824 IN IP4 127.0.0.1 s=Sip Call c=IN IP4 110.111.112.113 t=0 0 m=audio 5060 RTP/AVP 0 a=rtpmap:0 PCMU/8000 3.4 SIP协议主要响应码3.4.1 响应码分类SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来

29、区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如下表所示。1XX 进展响应 临时响应2XX 成功 最终响应3XX 重定向响应 最终响应4XX 客户端响应 最终响应5XX 服务端响应 最终响应6XX 全局错误 最终响应上述消息中,临时响应用于指示呼叫正在进行,最终响应用于结束请求消息。 3.4.2 主要响应码举例100 待处理180 回铃181 呼叫被转发182 排队200 OK301 永久转移302 临时转移400 非法请求404 未找到405 方法不允许500 服务器内部错误504 服务器超时600 忙603 拒绝SIP

30、协议中定义了40 多种状态码,已经考虑到了通信过程中可能会碰到的所有的状态。在一般的正常SIP 呼叫中只会用到其中很少的一部分。SIP 响应INVITE INVITEEE INVITE100 TRYING100 TRYING200 OK200 OK 200 OK100 RINGING100RINGING100RINGINGACKACKACKBYE BYE BYE200 OK200 OK200 OKMEDIAOKUA1 UA2P-S1 P-S2码是可扩展的。不要求SIP 应用程序理解所有已注册状态码的含义,但是它必须理解所有状态码的类别。不能识别的状态码则作为X00 处理,此时,用户代理应向用户

31、显示该响应的消息体,该消息体一般含有能理解该异常状态的可读信息。4、SIP呼叫过程实例主叫UA1通过代理服务器P-S1和P-S2呼叫UA2流程图主叫UA1发起INVITE请求,该请求中提供了足够的信息以便被叫能够参加该会话,包括媒体流的类型和格式以及地址和端口的信息,INVITE请求被送到本地的SIP代理服务器P-S1。本地的SIP代理服务器查询,得到处理该SIP请求的代理服务器的传输层地址(IP地址和端口号),并将接收到的请求转发到该服务器。该服务器通过查询,得到被叫UA2的传输层地址(IP地址和端口号),并将接收到的INVITE请求转发到被叫UA2。被叫UA2接受该呼叫,并发回200 OK响应。该响应沿着原来的路径到达主叫方,完后主叫返回一个ACK(直接发到被叫),呼叫建立,可以开始在他们之间直接传送媒体流信息了。当有一方想结束会话时,直接发送一个BYE请求给对方,对方会回送一个200 OK响应,双方会话结束。需要注意的是在实际的系统中,ACK及BYE消息还是沿着INVITE请求的路径来发送(代理会在请求消息中加入Route字段,使得ACK及BYE还是沿着INVITE请求的路径来发送),这样SIP服务器就能够更好的管理呼叫,同时记录一些统计信息。通过代理服务器的呼叫过程如上图所示。图表 1 SIP 通过代理服务器的呼叫过程

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报