RFC3581-关于rport字段 的阅读笔记(二)

RFC3581-关于rport字段 的阅读笔记(二)

5.      举例

    一个客户端要发送一个INVITE消息到一个代理服务器,部分消息如下:

      INVITE sip:user@example.com SIP/2.0

Via: SIP/2.0/UDP 10.1.1.1:4540;rport;branch=z9hG4bKkjshdyff

这个INVITE消息发送的源端口号是4050,IP是10.1.1.1。这个代理服务器正在IP为192.0.2.2端口为5060和5070的

 

地址上监听请求。由于此请求穿过NAT到代理服务器,因此源IP显示的是192.0.2.1,端口号是9988。此代理

 

服务器转发此请求,但必须先追加给”rport”参数一个值,代理要转发的请求如下:

 

INVITE sip:user@example.com SIP/2.0

Via: SIP/2.0/UDP proxy.example.com;branch=z9hG4bKkjsh77

Via: SIP/2.0/UDP 10.1.1.1:4540;received=192.0.2.1;rport=9988;branch=z9hG4bKkjshdyff

 

     上面请求产生的到达代理的响应如下:

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP proxy.example.com;branch=z9hG4bKkjsh77

    Via: SIP/2.0/UDP 10.1.1.1:4540;received=192.0.2.1;rport=9988;branch=z9hG4bKkjshdyff

     此代理提取它的via头字段的值,一个一个地检查。它包括了”reveived”参数和”rport”参数。这个服务器按照规

 

     则发送响应到ip为192.0.2.1,port为9988的地址上,并且是必须是从proxy上的192.0.2.2:5060发送的。

 

Via: SIP/2.0/UDP 10.1.1.1:4540;received=192.0.2.1;rport=9988可看作是NAT两侧的ip和port的一个绑定,即

 

10.1.1.1:4540(内网地址)与192.0.2.1:9988(外网地址)的一个绑定。这样当响应到达NAT的外网地址

 

192.0.2.1:9988时,NAT可以改写目的地址为与之对应的内网地址10.1.1.1:4540,客户端正在用此地址监听响

 

应信息,从而客户端最终可收到此响应。

 

6. 抓包实例:

[15:21:41] ===SIPTransaction Received SIP message (428 bytes) from 222.210.226.30:1068

REGISTER sip:sip1.tv.qualvideo.net SIP/2.0

Via: SIP/2.0/UDP 192.168.1.102:15060;rport;branch=z9hG4bK1041051991

注:客户端发送请求时,rport的值必为空。

   [15:21:41] ===SIPTransaction Send SIP message (610 bytes) to 222.210.226.30:1068

   SIP/2.0 401 Unauthorized

   Via:SIP/2.0/UDP 192.168.1.102:15060;rport=1068;branch=z9hG4bK1041051991;received=222.210.226.30

注:服务器回应时给”rport”,” received”赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值