sip协议主要消息_第1页
sip协议主要消息_第2页
sip协议主要消息_第3页
sip协议主要消息_第4页
sip协议主要消息_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 SIP协议主要消息1.1 SIP消息分类SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。SIP协议将Server和User Agent之间的通讯的消息分为两类:请求消息和响应消息。请求消息:客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。SIP请求的6种方法:1、 邀请(INVITE)邀请用户加入呼叫2、 确认(ACK)确认客户机已经接收到对INVITE的最终响应3、 可选项(OPTIONS)请求关于服务器能力的信息4、 再见(BYE)终止呼叫上的两个用户之间的呼叫5、 取消(CANCEL)6、 注册(REGISTER)提供地址解析的映射,让服务器知道其它用户的位置响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应1.2 SIP消息结构请求消息和响应消息都包括SIP消息头字段和SIP消息体字段;SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP消息体主要用来描述本次会话具体实现方式;1.3 消息格式1.3.1 请求消息格式SIP请求消息的格式,由SIP消息头和一组参数行组成,如Error! Reference source not found.所示。通过换行符区分命令行和每一条参数行。命令名称对端URICall-id: 值via: 值协议版本消息头参数行To: 值Contact: 值From: 值Content-Length: 值Max-Forward: 值White SpaceSDPContent-Type: 值Cseq: 值图1-1 SIP请求消息结构注意:参数行的顺序不是固定的。对应的参数解释见Error! Reference source not found.。消息体定义:Call-ID:头字段是用来将消息分组的唯一性标识From:头字段是指示请求发起方的逻辑标识,它可能是用户的注册地址。From头字段包含一个URI和一个可选的显示名称CSeq:头字段用于标识事务并对事务进行排序。它由一个请求方法和一个序列号组成,请求方法必须与对应的请求消息类型一致Max-Fowords:头字段限定一个请求消息在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳,这个值就被减一。如果在请求消息到达目的地之前该值变为零,那么请求将被拒绝并返回一个483(跳数过多)错误响应消息。Via:头字段定义SIP事务的下层(传输层)传输协议,并标识响应消息将要被发送的位置。只有当到达下一跳所用的传输协议被选定后,才能在请求消息中加入Via头字段值。expires:参数指出了该值中包含的URI地址的有效期。这个参数的值是以秒为单位计算的。如果没有提供该参数,那么URI地址的有效期由Expires头字段值来确定。SIP请求消息实例:INVITE sip:0109:5060;User=phone SIP/2.0Call-ID:01E000Via:SIP/2.0/UDP :5061From:;tag=B534F610A000To:Contact: sip::5061CSeq:1 INVITEMax-Forwards:70Content-Type: application/SDPContent-Length:168v=0o=UserA IN IP4 s=Session SDPc=IN IP4 t=0 0m=audio 49172 RTP/AVP 0 8a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000a=sendonlyINVITE消息是其中一种SIP请求消息。第一行由消息头和对端SIP实体的URI(通用资源标识)以及SIP版本号码组成。SIP URI是电话URI,附在IP地址上,表示对端和端点收发SIP消息的端口的域。“From”、“To”和“Contact”这三个SIP消息头属于电话URI。当背靠背用户代理发出呼叫时,“From”消息头中的URI填写在“Via”消息头里。请求消息类型填写在CSeq消息头里,并且当该SIP端点发送一个请求,号码就相应递增。SIP协议版本为SIP/2.0。其中SDP被加入到INVITE消息内容里,在消息头里的Content-Length说明了SDP内容的长度。INVITE请求消息详解:INVITE sip: SIP/2.0 请求方法、请求地址(RequestURI)、SIP版本号(目前都是SIP/2.0)请求地址一般就是被叫方地址,跟MSN中好友eMail地址类似Via: SIP/2.0/UDP :5060;branch=z9hG4bKfw19bSIP版本号(2.0)、传输类型(UDP)、呼叫地址、branch是一随机码,它被看作传输标识Via字段中地址是消息发送方或代理转发方设备地址,一般由主机地址和端口号组成传输类型可以为UDP、TCP、TLS、SCTPMax-Forwards: 70最大跳跃数,就是经过SIP服务器的跳跃次数,主要是防止循环跳跃每经过代理服务器,该整数减一To: G. Marconi From: Nikola Tesla ;tag=76341表示请求消息的发送方和目标方如果里面有用户名标签,地址要求用尖括号包起来对于INVITE消息,可以在From字段中包含tag,它也是个随机码Call-ID:呼叫ID是由本地设备生成的,全局唯一值。每次呼叫该值唯一不变对于用户代理发送INVITE消息,本地将生成From tag和Call-ID全局唯一码,被叫方代理则生成To tag全局唯一码。这三个随机码做为整个对话中对话标识(dialog indentifier)在通话双方使用。CSeq: 1 INVITECSeq,又叫命令队列(Command Seqence),每发送一个新的请求,该数自动加1* 以上几个字段是所有SIP消息体所必须的,其它头字段有些是可选的,有些在特定请求也是必须Subject: About That Power Outage.Contact: Contact是INVITE消息所必须的,它用来路由到被叫设备地址,也称为用户代理(UA)Content-Type: application/sdpContent-Length: 158最后两位附属字段说明消息体类型以及字段长度v=0 SDP版本号,目前都是0o=Tesla INIP4 主叫源地址,类型等s=Phone Call1.3.2 响应消息格式SIP响应消息的格式,由SIP响应消息头和一组参数行组成,如Error! Reference source not found.所示。通过换行符区分命令行和每一行参数。SIP/协议版本响应消息头Call-id: 值via: 值消息头参数行To: 值Contact: 值From: 值Content-Length: 值Max-Forward: 值White SpaceSDPContent-Type: 值Cseq: 值SIP响应消息结构注意:参数行的顺序不是固定的。对应的参数解释见Error! Reference source not found.。 SIP响应消息实例:SIP/2.0 200 OKContent-Type:application/SDPVia:SIP/2.0/UDP :5061Call-ID:01EF351F00CSeq:1 INVITEFrom:;tag=B534F610A000To:;tag=B534F2900CD1B0000Contact:Content-Length:156v=0o=HuaweiSoftX3000 IN IP4 s=Sip Callc=IN IP4 13t=0 0m=audio 5060 RTP/AVP 0a=rtpmap:0 PCMU/8000200 OK消息是SIP响应消息的一种。第一行由SIP版本号和200响应消息组成。SIP URI是电话URI,附在IP地址上,表示对端和端点收发SIP消息的端口的域。“From”、“To”和“Contact”这三个SIP消息头属于电话URI。当背靠背用户代理发出呼叫时,“From”消息头中的URI填写在“Via”消息头里。请求消息类型填写在CSeq消息头里,并且当该SIP端点发送一个请求,号码就相应递增。SIP协议版本为SIP/2.0。把SDP加入到INVITE消息内容里,在消息头里说明内容的长度。第二章 SIP协议主要响应码2.1 响应码分类SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。响应消息的分类如下所示。1)1XX:临时响应,表示请求消息正在被处理。2)2XX:成功响应,表示请求已被成功接收,完全理解并被接受。3)3XX:重定向响应,表示需采取进一步以完成该请求。4)4XX:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求。5)5XX:服务器错误,表示服务器无法完成合法请求。6)6XX:全局故障,表示任何服务器无法完成该请求。上述消息中,临时响应用于指示呼叫正在进行,其余最终响应用于结束请求消息。2.2 1xx类消息(临时响应)1xx消息表示服务器或代理正在进行处理,还未得到确定的响应。客户应该继续等待服务器的响应。当服务器预测在200毫秒之内不能得到最终响应时,它应该发送一个1xx响应。服务器可以发送多个1xx响应。下面是常见的1xx类消息列表。表1-1 常见的1xx类消息列表100试呼(Trying)正在进行与呼叫有关的操作(例如:访问数据库),但被叫用户还没有定位。180被叫振铃(Ringing)被叫用户代理已经得到被叫的位置,正在提醒被叫用户。该响应也可以再发起一个本地回铃181呼叫前转(Call Is Being Forwarded)代理服务器可以用该状态码表示当前呼叫正被转移到其它目的地。(呼叫正在转发)182呼叫排队(Queued)被叫暂时不可访问,当前呼叫被排队而不是被拒绝。当服务器有效时,可以继续响应该呼叫。 该响应的reason phrase可以进一步给出排队呼叫的信息,例如:“队列中有5个呼叫,期望等待时间为15分钟”。服务器可以发出多个182 响应来更新当前排队呼叫的信息。183会话进度(session progress)应答用于提示建立对话的进度信息。Reason-Phrase(表达原因的句子)、头域或者消息体可以用于提示呼叫进度的更新消息的信息。 2.3 2xx类消息(成功响应)2xx消息表示请求已经被接收、处理并被成功接受;200 :OK请求成功。2.4 3xx类消息(重定向响应)3xx消息表示响应给出有关用户新位置或其它可选服务的信息。下面Error! Reference source not found.是常见的3xx类消息列表。表1-2 常见的3xx类消息列表300多个选择(Multiple Choice)请求中的地址被解析为多个位置,用户可以将请求重定向到一个合适的地址。该响应应该包含可供用户或用户代理选择的位置和资源列表,并且在Contact头域中,列出可供选择的地址。(网络协议不兼容:会话描述中的一个或多个网络协议不可用。)301永久离开(Moved Permanently)在请求中Request-URI所指的地址找不到用户,客户应该尝试Contact头域给出的新地址。主叫收到该响应后应该更新所有的本地目录,地址簿,用户位置缓存并将以后的请求重定向到新的地址。(网络地址格式不兼容:会话描述中的一个或多个地址格式不可用。)302暂时离开(Moved Temporarily)客户应该用Contact头域给出的新地址尝试呼叫。响应中Expire头域指出该次重定向的有效期,如果没有给出有效期,那么重定向只对当前呼叫有效。(传送协议不兼容:会话描述中的一个或多个传送协议不可用。)303带宽单位不兼容:会话描述中的一个或多个带宽度量单位不被理解。304媒体类型不可用:对话描述中的一个或多个媒体类型不可用。305使用代理(Use Proxy)客户所请求的资源必须通过Contact头域中给出的代理来访问。Contact头域给出代理的URI。该响应只能由用户代理服务器发出。(媒体格式不兼容:对话描述中的一个或多个媒体格式不可用。)306媒体特征不被理解:对话描述中的一个或多个媒体特征不被支持。307对话描述参数不被理解:除上述几种参数之外的参数不被理解。330组播不可用:用户站点不支持组播。331单播不可用:用户站点不支持单播通信(通常是由于防火墙的存在)370带宽不足:对话描述中定义的或者媒体定义的带宽超出可用带宽。380使用其它服务(Alternate Service)呼叫不成功,但是可选其它的服务(如:电子邮件,语音信箱)。该响应的消息体给出可选服务的描述。399混合告警:该告警表示用户存在的任意一种错误,收到该告警的系统不可以采取任何自动的动作2.5 4xx类消息(客户机错误)4xx消息表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理。下面Error! Reference source not found.是常见的4xx类消息列表。表1-3 常见的4xx类消息列表400无效请求(Bad Request)请求语法有误,不能被服务器理解。401未授权(Unauthorized)请求需要用户认证。402要求付费(Payment Required)该响应为将来使用保留。403禁止(Forbidden)服务器理解请求,但拒绝完成。客户不应该再次发请求。404未找到用户(Not Found)请求中Request-RUL给出的地址上没有要呼叫的用户。当Request-RUL给出的地址与服务器管理的域不匹配时,服务器也发送该响应。405方法不允许(Method Not Allowed)请求行中指定的方法不被允许。该响应必须包含Allow头域,列出服务器支持的方法。406不可接受(Not Acceptable)根据请求中的Accpe头域,由请求给出的资源产生的响应实体里面的内容字符不可接受。407需要代理认证(Proxy Authentication Required)该响应与401(未授权)类似,但它指示用户必须首先向代理认证自己。408请求超时(Request Timeout)服务器不能在请求的Expire头域指定的时间内产生响应。客户可以过一段时间重发请求。409冲突(Conflict)客户的请求与资源的当前状态冲突,不能完成请求。当REGISTER请求的action参数与现存的注册冲突时返回该响应。410无可用资源(Gone)服务器上没有所请求的资源,也不知道进一步联系的地址。这种情况被认为是永久的。如果服务器不能确定该情况是否是永久的,它应该发送404(被叫未找到)响应。411需要消息体长度(Length Required)服务器拒绝接受没有包含Content-Length头域的请求。客户何以在加入一个表示消息体长度的Cotent-Length头域后重发请求。413请求实体过长(Request Entity Too Large)服务器拒绝处理过长的消息实体。如果这种情况是暂时的,服务器应该在响应中包含Retry-After头域指示客户何时重发请求。414Request-URI过长(Request-URI Too Long)服务器不能解析过长的Request-URI。415媒体类型不支持(Unsupported Media Type)服务器不支持请求消息体的格式。服务器应该在响应中用Accept,Accept-Encoding 和Accept-Language头域列出它支持的格式。416不支持的URI方案(unsupported url scheme)服务器由于不支持Request-URI中的URI方案而终止处理这个请求。420错误的扩展(Bad Extension)服务器不理解请求中Require头域指定的协议扩展。421需要扩展支持(extension required)UAS需要特定的扩展来处理这个请求,但是这个扩展并没有在请求的Supported头域中列出。具有这个应答码的应答必须包含一个Require头域列出所需要的扩展。 UAS不应当使用这个应答除非它真的不能给客户端提供有效的服务。相反,如果在Support头域中没有列出需要的扩展,服务器应当根据基准的SIP兼容的方法和客户端支持的扩展来进行处理。 423间隔太短(interval too brief)服务器因为在请求中设置的资源刷新时间(或者有效时间)过短而拒绝请求。这个应答可以用于注册服务器来拒绝那些Contact头域有效期过短的注册请求。480暂时不可访问(Temporarily Unavailable)被叫的终端系统已经成功连接,但用户暂时不可访问(例如:用户未登录,或登录为免打扰)。服务器可以在Retry-After头域中另外指定一个访问时间。481呼叫支路/事务不存在(Call leg/Transaction Does Not Exist)在两种情况下服务器返回该响应:服务器收到一个BYE请求但找不到匹配的呼叫支路;或是收到一个CANCEL请求但找不到匹配的事务;或是收到与原来TAG标志不一样的INVITE请求。(对于无匹配的ACK请求,服务器直接将它丢弃,不响应)。482检测到循环呼叫(Loop Detected)请求消息的Via头域中包含接收服务器自身的地址。483跳数过多(Too Many Hop)请求的Via头域包含的条目数(跳数)超过Max-Forwards头域指定的值。484地址不全(Address Incomplete)请求的To或Request-RUL所指的地址不全。485地址不明确(Ambiguous)请求中提供的被叫地址不明确。该响应可以在Contact头域中列出不明确的地址。486被叫忙(Busy Here)被叫的终端系统已经成功连接,但用户暂时不愿意或不能够接收更多的呼叫。服务器可以在响应的Retry-After头域中另外指定一个访问时间。客户也可能通过其它方式访问,如:语音邮箱,因此该响应并不终止一个查询。如果我们知道没有其他终端系统能够接听这个呼叫,那么应当返回一个状态码600(Busy Everywhere)。487请求被拒绝(Request Cancelled)原来的请求消息被一个CANCEL请求所取消。488此处请求不接受(not acceptable here)这个应答和606(Not Acceptable)有相同的含义,但是只是应用于Request-URI所指出的特定资源不能接受,在其他地方请求可能可以接受。 包含了媒体兼容性描述的消息体可以出现在应答中,并且根据INVITE请求中的Accept头域进行规格化(如果没有Accept头域,那么就是application/sdp)。这个应答就像给OPTIONS请求的200(OK)应答的消息体一样。491未决请求(request pending)在同一个对话中,UAS接收到的请求有一个依赖的请求正在处理。493无法解密(undecipherable)不可辨识,UAS接收到了一个请求,包含了一个加密的MIME,并且不知道或者没有提供合适的解密密钥。这个应答可以包含单个包体,这个包体包含了合适的公钥,这个公钥用于给这个UAS通讯中加密包体使用的。2.6 5xx类消息(服务器错误)5xx消息表示S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论