RFC3261 sip协议学习------sip消息结构描述
来源:互联网 发布:unity3d游戏特效师招聘 编辑:程序博客网 时间:2024/04/29 05:28
SIP消息分为两种,request与response,SIP消息无论是request还是response在格式上是相同的,格式为:
generic-message: start-line
*message-header
CRLF
[message-body]
start-line = request-line/response-line
request消息与response消息的关键区别在于start-line上。
request-line
request-line = method sp request-uri sp sip-version CRLF
method:
sip规范定义了六种method:registration用来向服务器注册的消息,invite、ack、cancel用来创建会话的消息,bye用来结束会话的消息,options用来查询服务器性能的消息。
sp:在这里指的是space空格的意思,request-line的参数与参数之间需要用空格隔开
request-uir:这个是一个sip uri,它用来标明这个request消息是由谁发起的。
sip-verison:与http-version格式相同。
request-line如图中红框:
response-line
response-line = sip-version sp status-code sp reason-phrase CRLF
sip-version:上面说request-line的时候已经说过了
status-code:是由三位数字组成的返回状态码,其中第一个数字表示状态的类型,如图解释:
reason-phrase:这个在程序中不解析,这个是给程序员来读的,而状态码才是给机器来处理的。
下图红框为一个response消息的start-line:
头域:header fields
header-name HCOLON header-value COMMA header-value
其中:HCOLON表示冒号的意思 :
COMMA表示逗号的意思
一个头域可以有多个域值,它们之间要用逗号隔开。头域与头域之间没有固定的顺序,但是为了代理服务器解析方便,建议把路由相关的头域放在前面。值得注意的是,多个同名头域之间是有顺序要求的,如果顺序不同代表着不是同一个消息。
每个头域值都是依赖于它的头域名,域值格式为:
field-name: field-value *(;parameter-name=parameter-value)
虽然在域值中可以有多个parameter-name=parameter-value对,但是parameter-name是不允许重复的。sip协议头域不区分大小写。
需要注意的是:有些头域是在request和response中通用的,而有些头域只能在request或者是response中使用的。
sip协议提供了一个缩写格式,防止数据过大,大于MTU值,对消息数据有所压缩。
包体:
- RFC3261 sip协议学习------sip消息结构描述
- RFC3261 SIP协议学习笔记----sip协议基本功能描述
- RFC3261 SIP协议---常用消息部件
- RFC3261(SIP协议)
- SIP协议浅析(RFC3261)
- RFC3261(SIP协议)
- RFC3261 SIP协议----register
- RFC3261 SIP协议---- invite
- RFC3261 sip协议------cancel请求
- rfc3261-SIP
- 提供SIP协议中文版(RFC3261)
- RFC3261 sip协议---UAC行为详解
- RFC3261 SIP协议---proxy的代理行为
- SIP协议结构——SIP学习笔记(三)
- RFC3261(SIP)读书笔记
- sip RFC3261 中文版
- sip RFC3261 中文版
- sip RFC3261 中文版
- 黑马程序员——OC的初步认识,类和对象
- [CF 316G3]Good Substrings解题报告
- 如何成为Python高手
- design pattern分類
- Python正则表达式指南
- RFC3261 sip协议学习------sip消息结构描述
- UML 图使用心得
- 关于进入后台的Activity
- 画矩形参考
- Scrum 流程应用反思 - 我们的团队
- NAT类型测试
- Jamendo源代码情景分析
- LeetCode(045) Jump Game II (Java)
- 详细页面 seo优化