sip 消息 解惑

记录几个关键的地方,经常容易忘掉。

1。rport :VIA头域的一个字段,一种解决nat穿透方案,sip扩展。

2。虽然ack属于Invite的一个确认响应,但ACK与invite不属于一个 transaction。属于一个会话。

3。 sip 中的事务 branch IDs 都由固定字符串z9hG4bK开始

4。call-id ,实际上call-id唯一标识一路通话,但是在某些sip proxy 里同一个会话可能同时发出(proxy forking),所以又添加了

from-tag, 及to-tag ,用来唯一标识一路通话。

5. 100 trying 临时响应 不是 被叫返回给服务器,服务器转发给 主叫,而是 服务器 接到请求后还没有真正请求被叫时发给主叫的一个

临时响应。

6。

<--- Transmitting (no NAT) to 10.10.10.84:9060 --->
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 10.10.10.84:9060;branch=z9hG4bK-d87543-93246c4e512dc949-1--d87543-;received=10.10.10.84;rport=9060
From: "1501159973"<sip:[email protected]>;tag=7953ac38
To: <sip:[email protected]>
Call-ID: bb3d847cb55efd0a@cGRs
CSeq: 2 INVITE

这里,received=10.10.10.84;rport=9060 当服务器检测到客户端支持rport扩展后,服务器做响应时直接使用 received ip:rport端口向客户端做响应,此处为解决nat问题的一种方式。

7. 183 session progress 彩铃用progress做 183 响应,此时有sdp协商过程。。。

<--- Transmitting (no NAT) to 10.10.10.84:9060 --->
SIP/2.0 183 Session Progress
Via: SIP/2.0/UDP 10.10.10.84:9060;branch=z9hG4bK-d87543-93246c4e512dc949-1--d87543-;received=10.10.10.84;rport=9060
From: "1501159973"<sip:[email protected]>;tag=7953ac38
To: <sip:[email protected]>;tag=as406cb069
Call-ID: bb3d847cb55efd0a@cGRs
CSeq: 2 INVITE
Server: Asterisk PBX 1.8.2-rc1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact: <sip:[email protected]:5060>
Content-Type: application/sdp
Content-Length: 283

//sdp 消息体

v=0 //版本
o=root 638969202 638969202 IN IP4 10.10.10.182 //用命名, 标识,传输类型,地址类型,地址
s=Asterisk PBX 1.8.2-rc1 //服务器名
c=IN IP4 10.10.10.182 //ip地址。
t=0 0
m=audio 13956 RTP/AVP 3 0 8 101
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv

你可能感兴趣的:(IP)