穿越NAT的UDP通讯

如果ClientA和ClientB都在不同的NAT设备后面,如果不通过配置NAT设备,TCPIP是不能直接建立连接的。而通过UDP端口反弹,可以轻松建立连接。

先讨论ClientA和ClientB都在不同的NAT设备后面的情况。

假设:A的外部地址【A的NAT设备的外部合法地址】Anat,B的外部地址Bnat。

原理:一般的NAT设备,对于接收到的UDP数据包,只有当内部已经有发送到这个数据包的源地址和源端口的数据包时,才会转发给内部主机。否则会丢弃。这个原理只适应UDP协议而不适应TCPIP协议。

步骤:

1)A直接向B的NAT设备地址Bnat发送UDP包,该包一般情况下【取决于B的NAT设备类型】会被B的NAT抛弃,但是通过发送该包,A的NAT设备打开了一个可以接收来自B的NAT设备的UDP数据包的"通道";

2)A通过server向B的NAT设备地址Bnat转发UDP包,请求B向A的NAT设备地址Anat发送UDP包。因为B已经向server发送过UDP包,B的NAT设备会将该请求包转发给B。

3)此时,B向A的NAT设备地址Anat发送UDP包,因为在第1)步中,A的NAT设备已经打开了通道,该包会由A的NAT设备正确转发给A。同时,B的NAT设备也打开了一个可以接收来自A的NAT设备的UDP包的"通道"。

4)此后,A可以和B直接通过Anat和Bnat进行UDP通讯,不需要通过server了。

5)还有一点值得提到,以后,A或者B中的任何一个,都可以作为另外一个和第3方如C之间建立UDP连接的中转Server(即上文中的Server)

6)另外,对于多级NAT情况,上面提到的UDP端口反弹技术,都可以自动适应。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值