SIP消息之 逐项讲解
Agenda SIP INVITE SIP INVITE Message Body
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-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 – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Via:记录了请求在SIP网络中的路由路径。 最下面的Via是初始化这个请求的UA(User Agent)插入的; 上面的Via都是在这个路由路径上的Proxy们插入的。 Via头域就是用来指示如何将响应沿原路返回到UA的。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Max-Forwards:最大转发数,用来限制一个SIP请求消息所能经过的实体的最大数目。 如果消息拷贝中包含一个Max-Forwards字段,代理服务器必须将其减一。 如果消息拷贝中不含Max-Forwards字段,代理服务器必须加入该字段,其值应该为70。 如果请求消息中包含Max-Forwards字段,且其值为零,则SIP实体不得转发,并且返回483(Too Many Hops)响应。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) From Tag,To Tag,和Call-ID构成了dialog信息,可以唯一标识一个dialog。 在本次呼叫(Call)中的所有请求和响应将使用同样dialog信息。 Call-ID的构成: 伪随机数字+”@”+主机名或者IP地址
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) CSeq: Command Sequence Number 用于标识事务并对事务排序。由一个序列号和请求方法组成。 呼叫开始时初始化CSeq。非REGISTER请求的CSeq,序列号值可以是一个任意的32位无符号整数。CSeq按照各自方向严格单向按1递增。 CSeq能够区分某个请求是新请求还是重发的请求。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Contact: 包含的SIP/SIPS URI是UA希望用来接收请求的地址,后续请求可以用它来联系到当前UA。 如果代理服务器没有插入Record-Route字段来希望自己留在后续请求消息的传输路径上,那么可以忽略这些代理服务器,后续请求直接用Contact字段的URI来通讯。 当Contact中包含一个显示名称时,带有所有的URI参数的URI应该放入尖括号<>中。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Record-Route: 如果代理服务器希望自己留在后续请求消息的传输路径上,而这些后续请求消息属于由当前请求创建的一个对话,那么即使请求中已经出现了Route字段,代理服务器也必须在请求消息的拷贝中已有的Record-Route字段值之前插入一个Record-Route字段。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB7 From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Content-Type: 定义消息实体的类型,如text/plain,或application/sdp。如果消息体不为空,Content-Type字段必须存在。 Content-Length: 定义消息实体的长度,单位为字节。 SIP消息实体不能采用HTTP 1.1中所定义的“Chunked”传送编码机制。
SIP – INVITE INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0 Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE; Max-Forwards: 69 Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;> Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100 Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB7 From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134 SIP消息的第二部分:消息头(Message Header) Require: UAC通过Require字段列出的选项标签,告知UAS处理请求时需要支持的选项,本字段为可选,但不可以被忽略。
SIP – INVITE Message Body 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),媒体名称和传输地址
谢谢!