SIP INVITE
1. StartLine : INVITE
sip:victor@add.uuu.com;transport=tcp SIP/2.0
Request Line
① Request Type: INVITE
② Request-URI : 属于SIP URI 中的 Address-of-Record (AOR)
③ SIP Version: 2.0
2. Message Header
① via:记录了请求在SIP网络中的路由路径。
最下面的via是初始化这个请求的UA插入的
上面的via是在这个路由路径上的proxy们插入的。
via头域就是用来指示如何将响应沿原路返回到UA的。
② Max-Forwards :
最大转发数,用来限制一个SIP请求消息所能经过的实体的最大数目。
如果消息拷贝中包含一个Max-Forwards字段,代理服务器必须减一
如果消息拷贝中没有Max-Forwards,代理服务器必须加入该字段,其值为70.
如果请求消息中包含的Max-Forwards字段=0,则SIP实体不得转发,并返回483(Too Many Hops)响应。
③ From Tag, To Tag, Call-ID 构成dialog信息,可以标识一个dialog。
在本次呼叫CALL中所有请求和响应将使用同样的dialog信息。
Call-ID构成: 伪随机数字+“@”+主机名或IP地址
④ CSeq :Command Sequence Number
用于标识事务并对事务排序。由一个序列号和请求方法组成。
呼叫开始时初始化CSeq。非REGISTER请求的CSeq,序列号可以是一个任意的32位无符号整数。CSeq按照各自方向严格单向按1递增。
CSeq能够区分某个请求是新请求还是重发请求。
⑤ Contact:包含SIP/SIPS URI是UA希望用来接收请求的地址,后续请求可以用它来联系到当前UA。
如果代理服务器没有插入Record-Route字段来希望自己留在后续请求消息传输路径上,那么可以忽略这些代理服务器,后续请求直接用Contact字段的URI来通讯。
当Contact中包含一个显示名称时,带有所有的URI参数的URI应该放入尖括号<>中。
⑥ Record-Route:
<sip:Helen.add.ultrapower.com;transtort=tcp>;tag=9B8c7854455666
如果代理服务器希望自己留在后续请求消息的传输路径上,而这些后续请求消息属于当前请求创建的一个对话,那么即使请求中已经出现了Route字段,代理服务器也必须在请求消息的拷贝中已有的Record-Route字段值之前插入一个Record-Route字段。
⑦ Content-Type:
定义消息实体的类型,如text/plain或application/sdp。如果消息体不为空,Content-Type字段必须存在。
⑧ Content-Length:
定义消息实体的长度,单位为字节。
SIP消息实体不能采用HTTP1.1中所定义的“Chunked”传送编码机制。
⑨ Require
UAC通过Require字段列出的选项标签,告知UAS处理请求时需啊哟支持的选项,本字段为可选,但不可以被忽略。
3. SIP – INVITE Message Body
v=0
o=-0 0 IN IP4 192.168.5.162
s=session
c=IN IP4 192.168.5.162
t=0 0
m=message 5060 sip sip:victor@add.ultrapower.com.cn
*Version Number,协议版本
*Origin,所有者/创建者和会话标识符
*Subject,会话名称
*Connection Data, 连接信息
*Time, 会话活动时间
*Media(type, port, RTP/AVP Profile), 媒体名称和传输地址
|