rport机制:
- 客户端需要在top most via上带上rport参数
- 服务端发现via中有rport参数时,将此via中加入received参数和rport参数,参数带的值分别是服务端看到的消息来源地址和端口(如果有NAT等地址转换设备,则即为转换后的IP和port)。
- 当有需要发送的响应时,按照rport中的端口发送SIP 响应。也就是说IP和端口均完全遵照从哪里来的,发回哪里去的原则。(如果没有rport字段时,服务端的策略是IP使用UDP包中的地址,即从哪里来回哪里去,但是端口使用的via中的端口)
sip服务器191收到请求
INVITE sip:13751812778@183.232.75.191 SIP/2.0
Via: SIP/2.0/UDP192.168.0.201:54598;branch=z9hG4bK-499885171;rport
From: <sip:15800000000@183.232.75.191>;tag=292624729
To: <sip:13751812778@183.232.75.191>
Contact: <sip:15800000000@192.168.0.201:54598;transport=udp>;+g.oma.sip-im;language="en,fr";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
Call-ID: 0655a2bd-abad-6600-f1ab-665a3809e443
CSeq: 1649225925 INVITE
Content-Type: application/sdp
Content-Length: 507
Max-Forwards: 70
Accept-Contact: *;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
P-Preferred-Service: urn:urn-7:3gpp-service.ims.icsi.mmtel
Allow: INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER
Privacy: none
P-Access-Network-Info: ADSL;utran-cell-id-3gpp=00000000
User-Agent: IM-client/OMA1.0 android-ngn-stack/v2.561.1055 (dd r1055 - R7Plust)
P-Preferred-Identity: <sip:10000000000@183.232.172.196>
Supported: 100rel
v=0
o=doubango 1983678901 IN IP4 192.168.0.201
s=-
c=IN IP4 192.168.0.201
t=00
a=tcap:1 RTP/AVPF
m=audio 24624 RTP/AVP8 0101
a=ptime:20
a=minptime:1
a=maxptime:255
a=silenceSupp:off - - - -
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:101 telephone-event/8000/1
a=fmtp:1010-16
a=pcfg:1 t=1
a=sendrecv
a=rtcp-mux
a=ssrc:2885059351 cname:b15d74b5d53eddb0a77095f022915325
a=ssrc:2885059351 mslabel:6994f7d1-6ce9-4fbd-acfd-84e5131ca2e2
a=ssrc:2885059351 label:dd@audio
转发下一跳 183.232.75.193:5060
INVITE sip:13751812778@183.232.75.193:5060;transport=udp SIP/2.0
Record-Route: <sip:183.232.75.191:5060;lr>
Via: SIP/2.0/UDP183.232.75.191:5060;branch=z9hG4bK-499885171
Via: SIP/2.0/UDP192.168.0.201:54598;received=120.197.60.160;branch=z9hG4bK-499885171;rport=54598
From: <sip:15800000000@183.232.75.191>;tag=292624729
To: <sip:13751812778@183.232.75.191>
Contact: <sip:15800000000@120.197.60.160:54598;transport=udp>;+g.oma.sip-im;language="en,fr";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
Call-ID: 0655a2bd-abad-6600-f1ab-665a3809e443
CSeq: 1649225925 INVITE
Content-Type: application/sdp
Content-Length: 507
Max-Forwards: 69
Accept-Contact: *;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
P-Preferred-Service: urn:urn-7:3gpp-service.ims.icsi.mmtel
Allow: INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER
Privacy: none
P-Access-Network-Info: ADSL;utran-cell-id-3gpp=00000000
User-Agent: IM-client/OMA1.0 android-ngn-stack/v2.561.1055 (dd r1055 - R7Plust)
P-Preferred-Identity: <sip:10000000000@183.232.172.196>
Supported: 100rel
v=0
o=dd 1983678901 IN IP4 192.168.0.201
s=-
c=IN IP4 192.168.0.201
t=00
a=tcap:1 RTP/AVPF
m=audio 24624 RTP/AVP8 0101
a=ptime:20
a=minptime:1
a=maxptime:255
a=silenceSupp:off - - - -
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:101 telephone-event/8000/1
a=fmtp:1010-16
a=pcfg:1 t=1
a=sendrecv
a=rtcp-mux
a=ssrc:2885059351 cname:b15d74b5d53eddb0a77095f022915325
a=ssrc:2885059351 mslabel:6994f7d1-6ce9-4fbd-acfd-84e5131ca2e2
a=ssrc:2885059351 label:dd@audio
191服务器收到193发来的响应
404 Not Found
Via: SIP/2.0/UDP183.232.75.191:5060;branch=z9hG4bK-499885171
Via: SIP/2.0/UDP192.168.0.201:54598;received=120.197.60.160;branch=z9hG4bK-499885171;rport=54598
From: <sip:15800000000@183.232.75.191>;tag=292624729
To: <sip:13751812778@183.232.75.191>;tag=56b118b1eac08573fd7a3e1febc2e0c7-a773
Call-ID: 0655a2bd-abad-6600-f1ab-665a3809e443
CSeq: 1649225925 INVITE
Server: duduSIPS (1.9.1-notls (x86_64/linux))
Content-Length: 0
191根据via决定下一跳 120.197.60.160:54598
SIP/2.0404 Not Found
Via: SIP/2.0/UDP192.168.0.201:54598;received=120.197.60.160;branch=z9hG4bK-499885171;rport=54598
From: <sip:15800000000@183.232.75.191>;tag=292624729
To: <sip:13751812778@183.232.75.191>;tag=56b118b1eac08573fd7a3e1febc2e0c7-a773
Call-ID: 0655a2bd-abad-6600-f1ab-665a3809e443
CSeq: 1649225925 INVITE
Server: duduSIPS (1.9.1-notls (x86_64/linux))
Content-Length: 0