博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SIP头域说明
阅读量:5072 次
发布时间:2019-06-12

本文共 3296 字,大约阅读时间需要 10 分钟。

INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE;Max-Forwards: 69Contact: 
Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route:
;tag=9B8AE5F9C759FB02F679AFD6CB71394CFrom:
;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0cTo:
;epid=203e516cd9Call-ID: d455d3faf197403482154b9a319f54e0CSeq: 1 INVITERequire: com.microsoft.rtc-multipartyContent-Type: application/sdpContent-Length: 134

SIP消息的第一部分:

起始行(StartLine) 本消息属于Request Line,它所包含的信息: RequestType: 方法名就是INVITE,表示邀请其他用户加入会话 Request-URI: sip:long@add.ultrapower.com.cn;transport=tcp, 这属于SIP URI中的“Address-of-Record(AOR)”种类。 SIP Version:2.0版本号。

SIP消息的第二部分:

Via:记录了请求在SIP网络中的路由路径。 最下面的Via是初始化这个请求的UA(User Agent)插入的; 上面的Via都是在这个路由路径上的Proxy们插入的。Via头域就是用来指示如何将响应沿原路返回到UA的。

Max-Forwards:最大转发数,用来限制一个SIP请求消息所能经过的实体的最大数目。 如果消息拷贝中包含一个Max-Forwards字段,代理服务器必须将其减一。 如果消息拷贝中不含Max-Forwards字段,代理服务器必须加入该字段,其值应该为70。 如果请求消息中包含Max-Forwards字段,且其值为零,则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: 如果代理服务器希望自己留在后续请求消息的传输路径上,而这些后续请求消息属于由当前请求创建的一个对话,那么即使请求中已经出现了Route字段,代理服务器也必须在请求消息的拷贝中已有的Record-Route字段值之前插入一个Record-Route字段。

Content-Type: 定义消息实体的类型,如text/plain,或application/sdp。如果消息体不为空,Content-Type字段必须存在。 Content-Length: 定义消息实体的长度,单位为字节。 SIP消息实体不能采用HTTP 1.1中所定义的“Chunked”传送编码机制。

Require: UAC通过Require字段列出的选项标签,告知UAS处理请求时需要支持的选项,本字段为可选,但不可以被忽略。

v=0o=-0 0 IN IP4 192.168.5.162s=sessionc=IN IP4 192.168.5.162t=0 0m=message 5060 sip sip:victor@add.ultrapower.com.cn

Version Number,协议版本

Origin,所有者/创建者和会话标识符
Subject,会话名称
Connection Data,连接信息
Time,会话活动时间
Media(type, port, RTP/AVP Profile),媒体名称和传输地址

 

附:

1、

Request-URI

呼叫请求发送地址。UA生成初始请求消息时,该域中的信息一般与TO中的地址相同,经过网络服务器后,由于实际路由问题,该值可能发生变化以,另外一个比较特殊的是REGISTER消息,在REGISTER消息中,在REQUEST-URI中将会填充注册服务器的地址(表示消息发往注册服务器),而此时TO域中的地址将会填充客户端实际的地址。

From

发起请求方的地址。一般采用USERINFO@HOSTPORT形式。该域同时带有一个TAG参数,是随机产生的整数。

To

接受方地址。同FROM域相同,也采用USERINFO@HOSTPORT的地址形式,当该域存在于最终响应消息中时,将会事有TAG参数。

Call-ID

用于识别呼叫参数,在同一个DIALOG中,该参数不发生变化。该参数与FROM中的TAG参数、TO域中的TAG参数相结合用以保证呼叫的惟一性。

Cseq

表征TRANSACEION的参数,由于同一个呼叫中会存在多个TRANSACTION,因此通过该能数来保证同一个USERAGENT发送的不同请求消息间的顺序。

Via

该参数表征呼叫经过的路径,UA生成SIP消息时,会在该域中填写自己的地址:PROXY在转发请求消息时,将会增加一个填有自己地址的VIA域,表示才叫经过本PROXY。VIA域的存在可以保证响应消息按照原路径返回到主叫方。代理服务器用它检查其内容,如果新端点已出现在via列表中,则表示有环路了。

Contact

告知对端自己的地址。当对端发送下一个请求消息时,可直接向该地址发送,不需要关心前一个路由信息(除非有特定原则,例如PROXY可以通过RECORD-ROUTE域来保证下一个请求消息必须经过本PROXY,即使CONTACT域中填写对端客户的地址。

Expires

limits search time,

给出消息内容超期的时间

Record-Route

由于CONTACT域的存在使得两个用户后续的请求消息可能不经过PROXY,为了运营需要,PROXY在初始INVITE消息中增加了RECORD-ROUTE域,这样可以保证后续请求(例如BYE消息)经过PROXY.通过RECORD-ROUTE与CONTACT的结合,既可避免后续请求旁路网络服务器的行为,又可减少后续请求路径上的环节。

CONTENT-TYPE

表征消息格式的参数,例如,呼叫采用了SDP进行会话描述,还是采用其他类型的会话描述协议。

2、

 

转载于:https://www.cnblogs.com/lynchyo/p/3520500.html

你可能感兴趣的文章