SIP协议测试总结
一:响应码定义
1、响应(Response)
1)1XX:临时响应,表示请求消息正在被处理。
2)2XX:成功响应,表示请求已被成功接收,完全理解并被接受。
3)3XX:重定向响应,表示需采取进一步以完成该请求。
4)4XX:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求。
5)5XX:服务器错误,表示服务器无法完成合法请求。
6)6XX:全局故障,表示任何服务器无法完成该请求。
100:临时响应,正在尝试
180:振铃,UA收到INVITE请求之后用该响应通知用户,该响应也可以再发起一个本地回铃
181:呼叫正在转发
182:排队
183:会话进行
200:OK
300网络协议不兼容:会话描述中的一个或多个网络协议不可用。
301网络地址格式不兼容:会话描述中的一个或多个地址格式不可用。
302传送协议不兼容:会话描述中的一个或多个传送协议不可用。
303带宽单位不兼容:会话描述中的一个或多个带宽度量单位不被理解。
304媒体类型不可用:对话描述中的一个或多个媒体类型不可用。
305媒体格式不兼容:对话描述中的一个或多个媒体格式不可用。
306媒体特征不被理解:对话描述中的一个或多个媒体特征不被支持。
307对话描述参数不被理解:除上述几种参数之外的参数不被理解。
330组播不可用:用户站点不支持组播。
331单播不可用:用户站点不支持单播通信(通常是由于防火墙的存在)。
370带宽不足:对话描述中定义的或者媒体定义的带宽超出可用带宽。
399混合告警:该告警表示用户存在的任意一种错误,收到该告警的系统不可以采取任何自动的动作
401:未授权
403:禁止
404:未找到
405:不允许的请求方法
406:不接受
407:代理服务器需要鉴权
408:请求超时
413:请求消息过大
415:不支持的媒体类型
414:Request-URI过长
415:不支持媒体类型
416:不支持的URI方案
420:错误的扩展
421:需要扩展支持
423:间隔太短
480:临时不可用
481:呼叫/事务不存在
482:检测到路由循环
483:跳数太多
484:地址不完整
485:不明确
486:正忙
487:请求终止
488:此处不接受
493:无法解密
501:不可实现
502:错误网关
503:业务不可使用
504:服务器超时
505:不支持版本
513:消息过大
600:忙
603:拒绝
604:用户不存在
606:无法接受
二:消息体定义
Call-ID:头字段是用来将消息分组的唯一性标识
From:头字段是指示请求发起方的逻辑标识,它可能是用户的注册地址。From 头字段包含一个URI和一个可选的显示名称
CSeq:头字段用于标识事务并对事务进行排序。它由一个请求方法和一个序列号组成,请求方法必须与对应的请求消息类型一致
Max-Fowords:头字段限定一个请求消息在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳,这个值就被减一。如果在请求消息到达
目的地之前该值变为零,那么请求将被拒绝并返回一个483(跳数过多)错误响应消息。
Via:头字段定义SIP事务的下层(传输层)传输协议,并标识响应消息将要被发送的位置。只有当到达下一跳所用的传输协议被选定后,才能在请求消息中加入Via头字段值。
expires:参数指出了该值中包含的URI地址的有效期。这个参数的值是以秒为单位计算的。如果没有提供该参数,那么URI地址的有效期由Expires头字段值来确定。
三:SIP请求的6种方法:
1、邀请(INVITE)——邀请用户加入呼叫
2、确认(ACK)——确认客户机已经接收到对INVITE的最终响应
3、可选项(OPTIONS)——请求关于服务器能力的信息
4、再见(BYE)——终止呼叫上的两个用户之间的呼叫
5、取消(CANCEL)
6、注册(REGISTER)——提供地址解析的映射,让服务器知道其它用户的位置
四:INVITE请求详解:
INVITE sip:marconi@ SIP/2.0
<=请求方法、请求地址(Request-URI)、SIP版本号(目前都是SIP/2.0)
<=请求地址一般就是被叫方地址,跟MSN中好友eMail地址类似
Via: SIP/2.0/UDP :5060;branch=z9hG4bKfw19b
<=SIP版本号(2.0)、传输类型(UDP)、呼叫地址、
<=branch是一随机码,它被看作传输标识
<=Via字段中地址是消息发送方或代理转发方设备地址,一般由主机地址和端口号组成
<=传输类型可以为UDP、TCP、TLS、SCTP
Max-Forwards: 70
<=最大跳跃数,就是经过SIP服务器的跳跃次数,主要是防止循环跳跃
<=每经过代理服务器,该整数减一
To: G. Marconi
From: Nikola Tesla
<=表示请求消息的发送方和目标方
<=如果里面有用户名标签,地址要求用尖括号包起来
<=对于INVITE消息,可以在From字段中包含tag,它也是个随机码
Call-ID:123456789@
<=呼叫ID是由本地设备生成的,全局唯一值。每次呼叫该值唯一不变
<=对于用户代理发送INVITE消息,本地将生成From tag和Call-ID全局唯一码,被叫方代理则生成To tag全局唯一码。这三个随机码做为整个对话中对话标识(dialog indentifier)在通话双方使用。
CSeq: 1 INVITE
<=CSeq,又叫命令队列(Command Seqence),每发送一个新的请求,该数自动加1
* 以上几个字段是所有SIP消息体所必须的,其它头字段有些是可选的,有些在特定请求也是必须
Subject: About That Power Outage...
Contact:
<=Contact是INVITE消息所必须的,它用来路由到被叫设备地址,也称为用户代理(UA)
Content-Type: application/sdp
Content-Length: 158
<=最后两位附属字段说明消息体类型以及字段长度
v=0 <=SDP版本号,目前都是0