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

上传人:牧羊曲112 文档编号:4924879 上传时间:2023-05-23 格式:DOCX 页数:12 大小:128.46KB
返回 下载 相关 举报
sip协议原理分析及总结.docx_第1页
第1页 / 共12页
sip协议原理分析及总结.docx_第2页
第2页 / 共12页
sip协议原理分析及总结.docx_第3页
第3页 / 共12页
sip协议原理分析及总结.docx_第4页
第4页 / 共12页
sip协议原理分析及总结.docx_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《sip协议原理分析及总结.docx》由会员分享,可在线阅读,更多相关《sip协议原理分析及总结.docx(12页珍藏版)》请在三一办公上搜索。

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

2、的呼叫。SIP协议在IETF多媒体数据及控制体系协议栈结构的位置SIP协议支持多媒体通信的五个方面:用户定位:确定用于通信的终端系统;用户能力:确定通信媒体和媒体的使用参数;用户有效性:确定被叫加入通信的意愿;会话建立:建立主叫和被叫的呼叫参数;会话管理:包括呼叫转移和呼叫终止;SIP协议的结构SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成, 这些层次之间只有松散的关系。SIP最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar (BNF范式)。第二层是传输层。它定义了一个客户端发送请求和接收应答的方式,以及一个服务器接收请求

3、和发送应答的方式。所有的SIP要素都包含一个通讯层。第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的 一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配 请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是 由一组事务构成的。用户代理与有状态的代理服务器都包含一个事务层,无状态 的代理服务器并不包含事务层。事务层包含一个客户元素(可以认为是一个客户 事务)和一个服务器元素(可以认为是一个服务器事务),他们都可以用一个有限 状态机来处理特定的请求。在事务层之上是事务用户(Transaction User TU )。每一个SIP

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

5、: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协议定义了?roxy Server、Redirect Server和Register Server等三类主 要Server。Register Server:主要用于

6、登记分组终端的当前位置和位置服务的原始数 据。Proxy Server:作为User Agent Client和User Agent Server间的中间媒体, 它转发User Agent Client来的的邀请,在转发之前,根据被叫标识请求位置服 务器获得被叫的可能位置,然后分别向它们发出邀请;Redirect Server:接受User Agent Client来的邀请,根据被叫标识请求位 置服务器获得被叫的可能位置,把这些信息返回给邀请的发起者(User Agent Client),和Proxy Server的不同之处就在于它不转发邀请,邀请由主叫终端自 己完成。Sip协议基本网络模型,

7、如下图所示:Redirect ServerLocation/Register ServerSIP Client: 字段值层次和在消息头中所有行的层次相同对于客户机/服务器都不能理解的头字段仅仅是被忽略,而不移除.常见的头字段如下表General HeaderEntity HeaderRequest HeaderResponse HeaderAcceptContent-EncodingAuthorizationAllowAccept-EncodingContent-LengthContactProxy-AuthenticateCall IDConten-TypeHideRetry-AfterCo

8、ntactMax-ForwardsServerCommand SequenceOrganizationUnsupportedEncryptionProxy-AuthorizationWWW-AuthenticateExpiresProxy-RequireFromRouteRecord-RouteRequireTimestampResponse-KeyToSubjectViaUser AgentsDatePriorityWaming一些重要的通用头 Call-Id:统一独特的呼叫标识 Cseq:请求命令顺序号 Via:用于记录一个请求传送的路径 From:存在于每个SIP消息中,包含请求发起者的

9、显示名和地址。SIP响 应的From域是请求中From域的拷贝。 To:存在于每个SIP消息中,表示一个请求的预期目的地。SIP响应中 的To域是请求中To域的拷贝。 Max-Forwards:字段表示request到达UAS的跳数的限制,是一个整数, 经过每一跳时减去一。 Contact:为后续请求提供了访问特定UA实例的联系方法,即SIP或者 SIPS URI。 Content-Type:描述消息体内容的媒体类型。如:Content-Type: application/sdp。 Content-Length :标识了消息体的大小,采用十进制数字表示。呼叫和呼叫者的标识头Subject :呼

10、叫,短消息主题Organization:主叫和被叫,代理服务器可能重填Date :呼叫的日期Server:处理请求消息的服务器消息User-Agent:发起请求消息的用户代理服务器信息Accept-Language:优选语言Priority:呼叫优先级(普通,紧急,)In-Reply-To:与早期呼叫的关联内容描述头Content-Disposition:消息解析的方式Content-Encoding:压缩(gzip)Content-language:语言选择Content-length:消息体长度Content-Type:媒体类型(application/sdp )能力头Allow: Req

11、uest-URI 支持的方法Accept:响应消息接受的媒体类型,如application/sdp, text/htmlAccept-Encoding:响应消息接受的压缩方式Accept-Language:响应消息接受的语言Supported:服务器或代理支持的特性(如100rel )Require:服务器要求支持的特性(100rel )Unsupported:代理不支持的特性3.2.2 SIP消息体SIP消息体部分则是通过另外一种协议来描述的,就是SDP协议。SDP协议 也是一种基于文本的协议,英文全称为Session Description Protocol,称为会 话描述协议,它是在RF

12、C2327中定义的OSDP描述的信息封装在传送协议中发送, 典型的会话传送协议包括:会话公告协议 (SAP)、SIPRTSP、HTTP和使用 MIME(Multipurpose Internet MailExtensions)的E-mail。采用SIP 传送时,SDP 主要用来描述参与SIP会话通信交流各方的媒体资源信息,主要包括以下几类信 息:会话名称和目的;会话激活的时间区段;构成会话的媒体;接收这些媒体所需的信息(地址、端口、编码格式等)会话所用的带宽信息(可选);会话负责人的联系信息(可选);媒体信息的具体内容包括:媒体类型(视频、音频等);传送协议(RTP/UDP等); 媒体格式(H

13、.261视频、MPEG视频等); 媒体地址和端口;时间信息的具体内容包括:会话的开始和结束时间,可用多组时间段;对于每个时间段,可以指定重复时间;SDP协议描述SIP消息包体是采用文本形式的UTF-8编码的IS010646字符 集。SDP会话描述由许多文本行组成,每个文本行的格式均为:type=value。 其中,type恒为单个字符,需区分大小写。value为结构化文本串,其格式 取决于type,也需区分大小写。value一般由多个字段组成,各字段由一个 空格符分隔,也可以是一个自由格式的文本串。“二”符号两侧不允许有空格。 会话描述包括两个部分:会话级描述和媒体级描述。会话级描述部分给出适

14、用于 整个会话和所有媒体流的描述信息,它以“v二”文本行开始。媒体级描述部分给 出只适用于该媒体流的信息,它以“m二”文本行开始。一个会话描述可以包含零 个或多个媒体级描述。如果在媒体级描述中没有重新定义,会话级描述给定的值 就是所有媒体的缺省值。会话描述的一般格式为:v二协议版本。二会话拥有者/创建者和会话标识符s二会话名称i=(可选)会话信息u=(可选)URI描述e=(可选)Email地址p=(可选)电话号码c=(可选)连接信息b=(任选)带宽信息一个或多个时间描述z=(可选)时区调整k=(可选)密钥a=(可选)零个或者多个会话属性行零个或多个媒体描述注意:各类文本行必须严格按上述次序排列

15、,以便简化语法分析和检错。其中,时间描述格式为:t=会话激活的时间区段r=(可选)零个或多个重复时间媒体描述的格式为:m二媒体名和传送地址i=(可选)媒体名称c=(可选)连接信息:如果已含于会话级描述则为任选项b=(可选)带宽信息k=(可选)加密密钥a=(可选)零个或多个媒体属性行SDP定义的类型(type)字母很少。如果SDP语法分析器不能识别描述中的某 一类型字母,则应将整个描述丢弃。属性机制(“a二”行)供SDP扩展其应用或媒 体范围,可根据应用、媒体或会话的需要增加属性值。如果按收方不理解某属性值,则 予以丢弃。SDP参数实例说明-V=0:指出SDP协议的版本. O=wangyu 28

16、90844526 2890842807 IN IP4 126.16.64.4用户名会话ID 版本网络类型地址类型地址 S = SDP Seminar会话名 I= A Seminar on the session description protocol会话描述 U =http:/www.alcatel-关于本会议的附加信息指针 e= .cn邮件地址 c = IN 1P4 224.2.17.12/127网络类型地址类型连接的地址 t=28733974962873404696开始时间终止时间a = recvonly本会话仅仅是个receive会话过程 m = audio 49170 RTP/AVP

17、 0 a=rtpmap:0 PCMU/8000描述其音频编码格式为PCMU采样频率为8000 a=rtpmap:8 PCMA/8000a=sendonly3.3消息格式3.3.1请求消息格式SIP请求消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令 行和每一条参数行。命令名乾对端URI协议版本via:值rotri-此io: taContact 情京即值Contenl-LengthMax-Forward 值Conienl-TvDorflWhite SpaceSDP消息头注意:参数行的顺序不是固定的。SIP请求消息实例:INVITEsip:.0.1:5060;User=phoneSI

18、P/2.0命令消息对端sip实体的URI端口用户名sip版本号Call-ID:.0.1(统一呼叫标识)Via:SIP/2.0/UDP 127.0.0.1:5061 (响应路由)From:;tag=29005358336B534F610A000 (请求源地址,带有tag标志)To:(目的地址)Contact:sip:.0.1:5061(后续联系的地址和端口号,INVITE消息必须)CSeq:1 INVITE (请求命令顺序号)Max-Forwards:70 (最大经过sip服务器跳跃数)Content-Type: application/SDP (媒体类型)Content-Length:168

19、(消息体大小)v=0o=UserA 2890844526 2890844526 IN IP4 s=Session SDPc=IN IP4 192.0.0.1t=0 0m=audio 49172 RTP/AVP 0 8a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=sendonly3.3.2响应消息格式SIP响应消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令 行和每一条参数行。SIP,协议.粗本响鹿消息头Call-id-恒IRFromrIs萌Contact.CseqiSCd nlent-LengthJft!lax-ForwardContent-

20、mub 冷一White SpaceSDPSIP响应消息实例:SIP/2.0 200 OK (200 OK消息SIP响应消息的一种)Content-Type:application/SDPVia:SIP/2.0/UDP 127.0.0.1:5061Call-ID:.0.1CSeq:1 INVITEFrom:;tag=29005358336B534F610A0 00To:;tag=5358336B534F2900CD1B0000Contact:Content-Length:156v=0o=HuaweiSoftX3000 1073741824 1073741824 IN IP4 127.0.0.1s

21、=Sip Callc=IN IP4 110.111.112.113t=0 0m=audio 5060 RTP/AVP 0a=rtpmap:0 PCMU/80003.4 SIP协议主要响应码3.4.1响应码分类SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。不同 类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义 响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如 下表所示。1XX进展响应临时响应2XX成功最终响应3XX重定向响应最终响应4XX客户端响应最终响应5XX服务端响应最终响应6XX全局错误最终响应上述消息中,临时响应用于指示呼叫正

22、在进行,最终响应用于结束请求消息。3.4.2主要响应码举例100待处理180回铃181呼叫被转发182排队200 OK301永久转移302临时转移400非法请求404未找到405方法不允许500服务器内部错误504服务器超时600忙603拒绝SIP协议中定义了40多种状态码,已经考虑到了通信过程中可能会碰到的所 有的状态。在一般的正常SIP呼叫中只会用到其中很少的一部分SIP响应码是 可扩展的。不要求SIP应用程序理解所有已注册状态码的含义,但是它必须理解 所有状态码的类别。不能识别的状态码则作为X00处理,此时,用户代理应向用 户显示该响应的消息体,该消息体一般含有能理解该异常状态的可读信息

23、。4、SIP呼叫过程实例主叫UA1通过代理服务器P-S1和P-S2呼叫UA2流程图UA1INVITE100 RINGING200 OK图表1SIP通过代理服务器的呼叫过程100 TRYING100 TRYING100RINGING100RINGIN200 OKACK200 OKMEDIABYE主叫UA1发起INVITE请求,该请求中提供了足够的信息以便被叫能够参加该会 话,包括媒体流的类型和格式以及地址和端口的信息,INVITE请求被送到本地的 SIP代理服务器P-S1。本地的SIP代理服务器查询,得到处理该SIP请求的代理服 务器的传输层地址(IP地址和端口号),并将接收到的请求转发到该服务

24、器。该服 务器通过查询,得到被叫UA2的传输层地址(IP地址和端口号),并将接收到的 INVITE请求转发到被叫UA2。被叫UA2接受该呼叫,并发回200 OK响应。该响应沿 着原来的路径到达主叫方,完后主叫返回一个ACK(直接发到被叫),呼叫建立, 可以开始在他们之间直接传送媒体流信息了。当有一方想结束会话时,直接发送一个BYE请求给对方,对方会回送一个200 OK响应,双方会话结束。需要注意的是在实际的系统中,ACK及BYE消息还是沿着 INVITE请求的路径来发送(代理会在请求消息中加入Route字段,使得ACK及BYE 还是沿着INVITE请求的路径来发送),这样SIP服务器就能够更好的管理呼叫,同 时记录一些统计信息。通过代理服务器的呼叫过程如上图所示。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号