消息体结构,由三部分组成:
- Request-Line / Status-Line (请求行 / 状态行)
- Header (消息头)
- Body (正文)
示例:
Request-Line / Status-Line 介绍
Request-Line 格式:
Method | Request-URI | SIP-Version | CRLF |
INVITE | sip:1001@1.1.1.1:5060 | SIP/2.0 | /r/n |
Method:方法(消息名称)
REGISTER | 注册联系信息 |
INVITE | 发起会话请求 |
ACK | INVITE 请求的响应的确认 |
CANCEL | 取消请求 |
BYE | 终结会话 |
OPTIONS | 查询服务器能力 |
MESSAGE | IM消息,与以上消息机制不同。详见https://tools.ietf.org/html/rfc3428 |
Request-URI: 主叫方位置信息
SIP-Version: sip消息版本信息
Status-Line 格式:
SIP-Version | Status-Code | Reason-Phrase | CRLF |
---|---|---|---|
SIP/2.0 | 200 | OK | /r/n |
Status-Code 取值
1xx: | 临时响应、表示请求消息正在被处理 |
2xx | 成功响应、表示请求已被成功接收完全理解并接收 |
3xx | 重定向响应、表示需采取进一步完成请求 |
4xx | 客户机错误、表示请求消息中包含语法错误信息或服务器无法完成客户机的请求 |
5xx | 服务器错误、表示服务器无法合法完成请求 |
6xx | 全局故障 、表示任何服务器都无法完成该请求 |
示例:
100 | Trying | 试呼叫 |
180 | Ringing | 振铃 |
181 | Call is Being Forwarded | 呼叫正在前转 |
200 | OK | 成功响应 |
302 | Moved Temporarily | 临时迁移 |
400 | Bad Request | 错误请求 |
401 | Unauthorized | 未授权 |
403 | Forbidden | 禁止 |
404 | Not Found | 用户不存在 |
408 | Request Timeout | 请求超时 |
480 | Temporarily Unavailable | 暂时无人接听 |
486 | Busy Here | 线路忙 |
504 | Server Time-out | 服务器超时 |
600 | Busy Everywhere | 全忙 |
Header (消息头)介绍
示例
Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse
From: sip:user1@domain.com;tag=49583
To: sip:user2@domain.com
Call-ID: asd88asd77a@1.2.3.4
Max-Forwards: 70
Contact: sip:192.168.100.1:1111
Content-Type: text/plain;(application/sdp; application/cpim;)
Content-Length: 18
字段说明
Via | 被服务器插入request中。作用:1、检查路由环 2、response根据via找到返回的路 |
From | 表示主叫信息 |
To | 表示被叫信息 |
Call-ID | 由主叫生成,全局唯一,当前呼叫这个值唯一不变 |
Max-Forwards | 用于表示这个包最多可以传送多少跳,每经过一跳都会减一当Max-Forwards==0系统会返回483。默认为70 |
Contact | 包含源的URI信息,用来给响应方直接和源建立连接用 |
Content-Type | 指明消息体的类型 (SDP会话描述协议) |
Content-Length | 指明消息体的字节大小 |
Body (正文) 介绍
正文是一个SDP,SDP是一种会话描述格式,而非传输协议。
示例:
SDP格式:
参考链接:
https://www.cnblogs.com/xiaxveliang/p/12434170.html
https://xiaxl.blog.csdn.net/article/details/104723834
https://www.cnblogs.com/idignew/p/7249056.h