Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 合同模板 > sip协议原理分析及总结

sip协议原理分析及总结

收藏

本作品内容为sip协议原理分析及总结,格式为 doc ,大小 209448 KB ,页数为 13页

sip协议原理分析及总结


('SIP协议学习总结1、SIP协议定义SIP(SessionInitiationProtocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。多媒体会话可以是点到点的话音通信或视频通信,也可以是多点参与的话音或视频会议等。SIP协议透明地支持名字映射和重定向服务,便于实现ISDN,智能网以及个人移动业务。SIP协议可以用多点控制单元(MCU)或全互连的方式代替组播发起多方呼叫。与PSTN相连的IP电话网关也可以用SIP协议来建立普通电话用户之间的呼叫。SIP协议在IETF多媒体数据及控制体系协议栈结构的位置H.323SIPRTSPRSVPRTCPH.263etc.RTPTCPUDPIPPPPSonetAAL3/4AAL5ATMEthernetPPPV.34SIP协议支持多媒体通信的五个方面:\uf075用户定位:确定用于通信的终端系统;\uf075用户能力:确定通信媒体和媒体的使用参数;\uf075用户有效性:确定被叫加入通信的意愿;\uf075会话建立:建立主叫和被叫的呼叫参数;\uf075会话管理:包括呼叫转移和呼叫终止;SIP协议的结构SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,这些层次之间只有松散的关系。SIP最底层的是它的语法和编码层。编码方式是采用扩展的Backus-NaurFormgrammar(BNF范式)。第二层是传输层。它定义了一个客户端发送请求和接收应答的方式,以及一个服务器接收请求和发送应答的方式。所有的SIP要素都包含一个通讯层。第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是由一组事务构成的。用户代理与有状态的代理服务器都包含一个事务层,无状态的代理服务器并不包含事务层。事务层包含一个客户元素(可以认为是一个客户事务)和一个服务器元素(可以认为是一个服务器事务),他们都可以用一个有限状态机来处理特定的请求。在事务层之上是事务用户(TransactionUserTU)。每一个SIP实体,除了无状态代理,都是一个事务用户。当一个TU发出一个请求,它首先创建一个客户事务实例并将目标IP地址、端口号、以及发送请求的设备信息一起发送。事务用户可以创建客户事务,也可以取消客户事务。当客户取消一个事务,它请求服务器终止正在处理的事务,并且回滚状态到该事务开始前的状态,并且产生指定的该事务的错误报告。这是由CANCEL请求完成的,这个请求有自己的事务,并且包含一个被取消的事务。2、SIP协议主要概念模型2.1实体模型概述SIP协议模型定义了UserAgent(用户代理)和Server(服务器)等两类主要实体。SIP协议把UserAgent(即UA)分为两个部分:UserAgentClient和UserAgentServer。呼叫方(称UserAgentClient)发出邀请(或呼叫),被叫方(称UserAgentServer)接受或拒绝邀请(或呼叫)。分组终端设备、媒体网关/媒体设备通常是包括UserAgentClient和UserAgentServer在内的UserAgent。另外,下面所说的ProxyServer也要实现UserAgent功能。SIP协议定义了ProxyServer、RedirectServer和RegisterServer等三类主要Server。RegisterServer:主要用于登记分组终端的当前位置和位置服务的原始数据。ProxyServer:作为UserAgentClient和UserAgentServer间的中间媒体,它转发UserAgentClient来的的邀请,在转发之前,根据被叫标识请求位置服务器获得被叫的可能位置,然后分别向它们发出邀请;RedirectServer:接受UserAgentClient来的邀请,根据被叫标识请求位置服务器获得被叫的可能位置,把这些信息返回给邀请的发起者(UserAgentClient),和ProxyServer的不同之处就在于它不转发邀请,邀请由主叫终端自己完成。Sip协议基本网络模型,如下图所示:2.2SIP协议相关概念呼叫(Call):一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。一个SIP呼叫用全局唯一呼叫标识符(CALL_ID)来识别。因此,如果一个用户被不同的人邀请参加同一个多点会议,每个邀请都有一个唯一的呼叫。一个点对点因特网电话交谈也被认为是一个SIP呼叫。在一个基于多点控制单元(MCU)的电话交谈节目中,每个参与者都用一个独立的呼叫与MCU相连。呼叫支路(Callleg):一个呼叫支路由Call-ID、To以及From之中的addr-spec和tag共同标识。只有addr-spec中的user和hostport部分有意义。在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫支路。呼叫支路也可以说是一次呼叫里消息经过的路径。会议(Conference):一个多媒体会话,由公共的会话描述来标识。一个会议可由零个或多个成员组成,可以是多点会议,全互连会议,点对点会议,或者是它们的组合。可以用任意数目的呼叫来建立一个会议。发起者、主叫(Initiator,Caller):发起会议邀请的一方。注意,发起者不一定是会议的建立者。被邀请者、被叫(Invitee,Callee):被主叫方邀请参加会话的一方。邀请(Invitation):要求用户加入会话的请求。一个成功的SIP邀请包括2个事务:一个INVITE请求,后面跟一个ACK请求。同构请求/响应(Isomorphicrequestorresponse):两个含有相同Call-ID、To、From和CSeq头域的请求/响应。此外,同构请求还必须含有相同的Rquest-URI。并行查询(Parallelsearch):在一个并行查询中,代理收到请求后向可能的被叫用户发出多个请求。并行查询在发出请求时并不等待以前所发请求的响应最终响应(Finalresponse):用于结束SIP事务的响应,与临时响应相对。所有的2XX,3XX,4XX,5XX和6XX响应都是最终响应。临时响应(Provisionalresponse):服务器用来表示工作进展,并不结束SIP事务的一种响应。编码为1XX的响应是临时响应,其他响应都是最终响应。会话(Session):根据SDP(会话描述协议)规范的定义:“多媒体会话是由多媒体发送者,接收者以及从发送者到接收者的数据流组成的集合。SIPTransaction(SIP事务):一个SIP事务是发生在客户和服务器之间的,包括从客户向服务器发出的第一个请求直到服务器发给客户一个最终响应这期间所有的消息。事务是由一个呼叫支路(Callleg)中的Cseq顺序号来标识的。一个ACK请求与对应的INVITE请求拥有相同的CSeq,构成自己的事务;B2BUA(背靠背用户代理):B2BUA是接收请求并作为用户代理服务器的一个逻辑实体。为了确定应该如何响应请求,它作为一个用户代理客户(UAC)发出请求。与代理服务器不同的是它维护对话状态并必须参与所有在已建立的对话上所发的请求。由于它是一个串联UAC和UAS,对于它的行为无须作显式定义。Address-of-Record(记录地址):一个address-of-record(AOR)是一个SIP或者SIPSURI它指向了一个具有定位服务的主机,这个主机可以把URI映射成为用户真正物理位置的URI。通常情况下,定位服务器是通过登记服务来建立的。一个AOR经常被认为是一个用户的”公共地址”。Message(消息):SIP元素之间传送的协议数据就是消息。SIP消息既可以是请求也可以是应答。Method(方法):方法是在服务器请求处理的主要功能。方法是请求消息自身携带的。典型的方法就是INVITE和BYE。Request:(请求):一个由客户端发到服务端的SIP信息,用于执行特定的功能。Response(应答):一个由服务端发到客户端的SIP信息。用来标志从客户端发往服务端的请求处理的情况。Ringback(回铃音):回铃音是一个信号音。是给呼叫方的一个信号表示被叫方正在振铃(Ringing)。RouteSet(路由集):路由集合是一个顺序的SIP或者SIPSURI。这些URI描述了传递一个请求所必须经历的代理列表。一个路由集可以是自适应的,因为包头中包含了Record-Route(记录路由),也可以是依赖配置得到的。3、SIP协议主要消息3.1SIP消息分类SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。SIP协议将Server和UserAgent之间的通讯的消息分为两类:请求消息和响应消息。请求消息:客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应3.2SIP消息结构请求消息和响应消息都包括SIP消息头字段和SIP消息体字段。SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP消息体主要用来描述本次会话具体实现方式。3.2.1SIP消息头类型在SIP消息中,有四种类型的头字段:通用头字段请求头字段响应头请求实体头字段SIP消息头的通用结构<头字段的名字>:<字段值>层次和在消息头中所有行的层次相同对于客户机/服务器都不能理解的头字段仅仅是被忽略,而不移除.常见的头字段如下表GeneralHeaderEntityHeaderRequestHeaderResponseHeaderAcceptContent-EncodingAuthorizationAllowAccept-EncodingContent-LengthContactProxy-AuthenticateCallIDConten-TypeHideRetry-AfterContactMax-ForwardsServerCommandSequenceOrganizationUnsupportedEncryptionProxy-AuthorizationWWW-AuthenticateExpiresProxy-RequireFromRouteRecord-RouteRequireTimestampResponse-KeyToSubjectViaUserAgentsDatePriorityWaming一些重要的通用头\uf075Call-Id:统一独特的呼叫标识\uf075Cseq:请求命令顺序号\uf075Via:用于记录一个请求传送的路径\uf075From:存在于每个SIP消息中,包含请求发起者的显示名和地址。SIP响应的From域是请求中From域的拷贝。\uf075To:存在于每个SIP消息中,表示一个请求的预期目的地。SIP响应中的To域是请求中To域的拷贝。\uf075Max-Forwards:字段表示request到达UAS的跳数的限制,是一个整数,经过每一跳时减去一。\uf075Contact:为后续请求提供了访问特定UA实例的联系方法,即SIP或者SIPSURI。\uf075Content-Type:描述消息体内容的媒体类型。如:Content-Type:application/sdp。\uf075Content-Length:标识了消息体的大小,采用十进制数字表示。呼叫和呼叫者的标识头Subject:呼叫,短消息主题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:Request-URI支持的方法Accept:响应消息接受的媒体类型,如application/sdp,text/htmlAccept-Encoding:响应消息接受的压缩方式Accept-Language:响应消息接受的语言Supported:服务器或代理支持的特性(如100rel)Require:服务器要求支持的特性(100rel)Unsupported:代理不支持的特性3.2.2SIP消息体SIP消息体部分则是通过另外一种协议来描述的,就是SDP协议。SDP协议也是一种基于文本的协议,英文全称为SessionDescriptionProtocol,称为会话描述协议,它是在RFC2327中定义的。SDP描述的信息封装在传送协议中发送,典型的会话传送协议包括:会话公告协议(SAP)、SIP、RTSP、HTTP和使用MIME(MultipurposeInternetMailExtensions)的E-mail。采用SIP传送时,SDP主要用来描述参与SIP会话通信交流各方的媒体资源信息,主要包括以下几类信息:会话名称和目的;\uf075会话激活的时间区段;\uf075构成会话的媒体;\uf075接收这些媒体所需的信息(地址、端口、编码格式等)\uf075会话所用的带宽信息(可选);\uf075会话负责人的联系信息(可选);媒体信息的具体内容包括:\uf075媒体类型(视频、音频等);\uf075传送协议(RTP/UDP等);\uf075媒体格式(H.261视频、MPEG视频等);\uf075媒体地址和端口;时间信息的具体内容包括:\uf075会话的开始和结束时间,可用多组时间段;\uf075对于每个时间段,可以指定重复时间;SDP协议描述SIP消息包体是采用文本形式的UTF-8编码的IS010646字符集。SDP会话描述由许多文本行组成,每个文本行的格式均为:=。其中,恒为单个字符,需区分大小写。为结构化文本串,其格式取决于,也需区分大小写。一般由多个字段组成,各字段由一个空格符分隔,也可以是一个自由格式的文本串。“=”符号两侧不允许有空格。会话描述包括两个部分:会话级描述和媒体级描述。会话级描述部分给出适用于整个会话和所有媒体流的描述信息,它以“v=”文本行开始。媒体级描述部分给出只适用于该媒体流的信息,它以“m=”文本行开始。一个会话描述可以包含零个或多个媒体级描述。如果在媒体级描述中没有重新定义,会话级描述给定的值就是所有媒体的缺省值。会话描述的一般格式为:v=协议版本o=会话拥有者/创建者和会话标识符s=会话名称i=(可选)会话信息u=(可选)URI描述e=(可选)Email地址p=(可选)电话号码c=(可选)连接信息b=(任选)带宽信息一个或多个时间描述z=(可选)时区调整k=(可选)密钥a=(可选)零个或者多个会话属性行零个或多个媒体描述注意:各类文本行必须严格按上述次序排列,以便简化语法分析和检错。其中,时间描述格式为:t=会话激活的时间区段r=(可选)零个或多个重复时间媒体描述的格式为:m=媒体名和传送地址i=(可选)媒体名称c=(可选)连接信息:如果已含于会话级描述则为任选项b=(可选)带宽信息k=(可选)加密密钥a=(可选)零个或多个媒体属性行SDP定义的类型(type)字母很少。如果SDP语法分析器不能识别描述中的某一类型字母,则应将整个描述丢弃。属性机制(“a=”行)供SDP扩展其应用或媒体范围,可根据应用、媒体或会话的需要增加属性值。如果按收方不理解某属性值,则予以丢弃。SDP参数实例说明\uf0a7V=0:指出SDP协议的版本\uf0a7O=wangyu28908445262890842807INIP4126.16.64.4用户名会话ID版本网络类型地址类型地址\uf0a7S=SDPSeminar会话名\uf0a7I=ASeminaronthesessiondescriptionprotocol会话描述\uf0a7U=http://www.alcatel-sbell.com.cn/staff/qingpu/wang.yu/sdp.03.ps关于本会议的附加信息指针\uf0a7e=wang.yu@alcatel-sbell.com.cn邮件地址\uf0a7c=INIP4224.2.17.12/127网络类型地址类型连接的地址\uf0a7t=28733974962873404696开始时间终止时间a=recvonly本会话仅仅是个receive会话过程\uf0a7m=audio49170RTP/AVP0\uf0a7a=rtpmap:0PCMU/8000\uf0a7描述其音频编码格式为PCMU采样频率为8000\uf0a7a=rtpmap:8PCMA/8000\uf0a7a=sendonly3.3消息格式3.3.1请求消息格式SIP请求消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令行和每一条参数行。注意:参数行的顺序不是固定的。SIP请求消息实例:INVITEsip:0109@127.0.0.1:5060;User=phoneSIP/2.0命令消息对端sip实体的URI端口用户名sip版本号Call-ID:01E04633512400000@127.0.0.1(统一呼叫标识)Via:SIP/2.0/UDP127.0.0.1:5061(响应路由)From:;tag=29005358336B534F610A000(请求源地址,带有tag标志)To:(目的地址)Contact:sip:010203@127.0.0.1:5061(后续联系的地址和端口号,INVITE消息必须)CSeq:1INVITE(请求命令顺序号)Max-Forwards:70(最大经过sip服务器跳跃数)Content-Type:application/SDP(媒体类型)Content-Length:168(消息体大小)v=0o=UserA28908445262890844526INIP4here.coms=SessionSDPc=INIP4192.0.0.1t=00m=audio49172RTP/AVP08a=rtpmap:0PCMU/8000a=rtpmap:8PCMA/8000a=sendonly3.3.2响应消息格式SIP响应消息的格式,由SIP消息头和一组参数行组成,通过换行符区分命令行和每一条参数行。SIP响应消息实例:SIP/2.0200OK(200OK消息SIP响应消息的一种)Content-Type:application/SDPVia:SIP/2.0/UDP127.0.0.1:5061Call-ID:01EF351F8140000000000@127.0.0.1CSeq:1INVITEFrom:;tag=29005358336B534F610A000To:;tag=5358336B534F2900CD1B0000Contact:Content-Length:156v=0o=HuaweiSoftX300010737418241073741824INIP4127.0.0.1s=SipCallc=INIP4110.111.112.113t=00m=audio5060RTP/AVP0a=rtpmap:0PCMU/80003.4SIP协议主要响应码3.4.1响应码分类SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如下表所示。1XX进展响应临时响应2XX成功最终响应3XX重定向响应最终响应4XX客户端响应最终响应5XX服务端响应最终响应6XX全局错误最终响应上述消息中,临时响应用于指示呼叫正在进行,最终响应用于结束请求消息。3.4.2主要响应码举例100待处理180回铃181呼叫被转发182排队200OK301永久转移302临时转移400非法请求404未找到405方法不允许INVITEINVITEEEINVITE100TRYING100TRYING200OK200OK200OK100RINGING100RINGING100RINGINGACKACKACKBYEBYEBYE200OK200OK200OKMEDIAOKUA1UA2P-S1P-S2500服务器内部错误504服务器超时600忙603拒绝SIP协议中定义了40多种状态码,已经考虑到了通信过程中可能会碰到的所有的状态。在一般的正常SIP呼叫中只会用到其中很少的一部分。SIP响应码是可扩展的。不要求SIP应用程序理解所有已注册状态码的含义,但是它必须理解所有状态码的类别。不能识别的状态码则作为X00处理,此时,用户代理应向用户显示该响应的消息体,该消息体一般含有能理解该异常状态的可读信息。4、SIP呼叫过程实例主叫UA1通过代理服务器P-S1和P-S2呼叫UA2流程图主叫UA1发起INVITE请求,该请求中提供了足够的信息以便被叫能够参加该会话,包括媒体流的类型和格式以及地址和端口的信息,INVITE请求被送到本地的SIP代理服务器P-S1。本地的SIP代理服务器查询,得到处理该SIP请求的代理服务器的传输层地址(IP地址和端口号),并将接收到的请求转发到该服务器。该服务器通过查询,得到被叫UA2的传输层地址(IP地址和端口号),并将接收到的INVITE请求转发到被叫UA2。被叫UA2接受该呼叫,并发回200OK响应。该响应沿着原来的路径到达主叫方,完后主叫返回一个ACK(直接发到被叫),呼叫建立,可以开始在他们之间直接传送媒体流信息了。当有一方想结束会话时,直接发送一个BYE请求给对方,对方会回送一个200OK响应,双方会话结束。需要注意的是在实际的系统中,ACK及BYE消息还是沿着INVITE请求的路径来发送(代理会在请求消息中加入Route字段,使得ACK及BYE还是沿着INVITE请求的路径来发送),这样SIP服务器就能够更好的管理呼叫,同时记录一些统计信息。通过代理服务器的呼叫过程如上图所示。图表1SIP通过代理服务器的呼叫过程',)


  • 编号:1700673308
  • 分类:合同模板
  • 软件: wps,office word
  • 大小:13页
  • 格式:docx
  • 风格:商务
  • PPT页数:209448 KB
  • 标签:

广告位推荐

相关合同模板更多>