nat内网穿透-相关研究

本文探讨了NAT穿透技术,包括端口库复用、TCP与UDP穿透的尝试以及对称型NAT的挑战。重点介绍了STUN、TURN协议的工作原理,以及它们在对称型NAT中的局限性。最后提到了正在研究中的ICE协议,它试图整合两种方式,以解决不同类型的NAT穿透问题。总结了各种方法的优缺点,指出穿透对称型NAT是当前的技术难点。
摘要由CSDN通过智能技术生成

首先测试端口库复用技术。

就是一个socket 同时进行listen和  connect 是否可行。答案是可以的。而且此socket还需要bind同一个本机ip  port,同时,需要进行设置:
    setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (void *) &value, sizeof (value));

 

测试tcp穿透。

遇到的问题:公网服务器读到我的内网客户端发来的请求时,发现映射地址值改变了ip。即nat没有映射我的port,只映射了ip。。并且打洞失败,两个内网客户端无法连接。

 

测试UDP穿透。

测试UDP穿透有两个原因 一个是简单 一个是技术应该已经比较成熟了。但是不幸的是 我还是失败了,两个内网客户端互相发送公网请求,无法收到对方的数据。

 

于是我开始研究为什么会失败,首先怀疑是硬件不支持。

nat类型检测

网上下了检测工具,检测 是对称型nat,而且还提示UDP BLOCK。所以就失败了,原因是我这种方式无法穿透对称型nat。手动检测,客户端不断连接公网服务器,结果端口是递增+2的,证实了是对称型。

我查资料,网上说对称型nat很少,大部分都是锥型的nat,但是万万没想到,我这里就是个特殊的,比较麻烦。

 

于是我寻找别的方法。

STUN

1、接受客户端的请求,并且把客户端的公网IP、Port封装到ICE Candidate中。

2、通过一个复杂的机制,得到客户端的NAT类型。

这就是STUN做的事情,和我手动写的程序是一样的。同样&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值