一种能比较准确地猜测NAT的影射端口的方法
来源:互联网 发布:汉中阿里云代理 编辑:程序博客网 时间:2024/04/29 18:13
版权声明:本文由SkyMountain发表,引用地址为http://blog.csdn.net/skymountain/。作者保留一切版权,转载务必注明出处,否则视作侵权。
昨晚忽然想到一种方法能比较准确地猜测NAT的影射端口。我指的是那种目标端口敏感的NAT,这种NAT以前是很难穿透的。
昨晚忽然想到一种方法能比较准确地猜测NAT的影射端口。我指的是那种目标端口敏感的NAT,这种NAT以前是很难穿透的。
这种方法使用了三个新socket(也即新的本地端口)来探测 。新建三个socket,每个socket与以前没用过的端口 绑定。然后按时间顺序,第一个socket给stun服务器发送 数据包,第二个socket给目标服务器发送数据包 ,也即执行打孔动作,第三个socket再次给stun服务器发送 数据。三个动作均会在服务器上新开一个影射端口 。三个动作时间间隔很短,大约100ms即可。这样,我们有理由相信,第二个socket所 分配的映射端口很可能在第一个影射端口和第二个影射端口之间。也即port2>port1同时 port2<port3。可能性最大的是:
port2 = (port1+port3)/2
如果服务器发现port3<port1,或者port1与por t3之间差距过大,那么很可能是NAT上的端口号已经开始重新分 配,那么应当让客户端重复一下这个流程。重复多几次 ,猜测成功的几率会大很多。
一个例外情况是所谓端口保持NAT,也即NAT分配新端口时 ,尽量使新端口号与内网端口号保持一致。但这种情况很容易识别 ,服务器简单比较客户端的内网端口和映射端口即可 。如果发现是这类NAT,那么上面的公式就要修改了:
port2 = 第二个socket的内网端口号
当然,端口猜测方法无论如何也是猜测而已,内网之间的用户仍然不可能有100%的连结率。但是猜测端口的方法可 以提高跨NAT连接率,从而降低数据中转服务器的负担。
port2 = (port1+port3)/2
如果服务器发现port3<port1,或者port1与por
一个例外情况是所谓端口保持NAT,也即NAT分配新端口时
port2 = 第二个socket的内网端口号
当然,端口猜测方法无论如何也是猜测而已,内网之间的用户仍然不可能有100%的连结率。但是猜测端口的方法可
- 一种能比较准确地猜测NAT的影射端口的方法
- 一种能比较准确地猜测NAT的影射端口的方法
- 做Double NAT的一种可行方法
- session无故失效原因的一种猜测
- KTDictSeg 一种简单快速准确的中文分词方法
- 应用程序实现方法的猜测
- 应用程序实现方法的猜测
- 获取当前空闲CPU比较准确的方法
- Hibernate的集合影射
- REST比较准确的定义
- [转载]木马隐藏端口的一种方法
- 木马隐藏端口的一种方法
- 一种不需要握手服务器穿透NAT的UDP通讯方法
- 能准确地分辨垃圾和黄金
- 我的本科毕业设计(非水文,设计了一个新算法):一种字符编码猜测工具的实现方法
- 一种简洁明了地读取文本文件的方法
- 另外一种高效地判断奇数和偶数的方法
- 比较高效的一种分页方法
- 汇编练手题集二
- 使用协同MIS平台提高企业效率
- myeclipse下hibernate入门实例介绍
- 统计
- 关于异常,群里老大的讲解
- 一种能比较准确地猜测NAT的影射端口的方法
- 我的Blog文章索引
- linux环境下设置程序为自动启动程序
- CollectionBase类
- ie中属性编辑使用模态窗体
- 初试项目经理,我认为一个项目经理应具备的几点
- 利用perl脚本帮助编译多环境下的多个symbian工程
- Java连接Mysql数据库代码
- 如何安装VS.NET2003中文版自带的QuickStart