UDP打洞 穿透上限

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

在公司如何访问家里的电脑?实现方法有很多其它p2p传输文件最快,能否实现

假設有两台分别处于各自的私有网络中的主机:A和B;N1和N2是两个网络的NAT设备,分别拥有IP地址P1和P2;S是一个使用了一个众所周知的、从全球任何地方都能访问得到的IP地址的公共服务器
步骤一:A和B分别和S建立UDP连接;NAT设备N1和N2创建UDP转换状态并分配临时的外部端口号
步骤二:S检查UDP包看A和B的端口是否是正在被使用的(否则的话N1和N2应该是应用了端口随机分配,这会让路由验证变得更麻烦)
步骤三:如果端口不是随机化的那么A囷B各自选择端口X和Y,并告知SS会让A发送UDP包到P2:Y,让B发送UDP包到P1:X
步骤四:A和B通过转换好的IP地址和端口直接联系到对方的NAT设备;

udp打洞成功前提条件–非对称NAT

完全圆锥型NAT: 无条件转发

受限圆锥型NAT: 忽略掉其它主机的数据包(要求来源ip一直)

端口受限圆锥型NAT: 更进一步地要求源端口(上例中是 2727)必須跟之前发出的数据包的目的端口一致(要求来源ip和端口)

对称NAT: 丢弃报文拒绝转发(每次连接端口会变)

对称NAT理论上可以使用端口预测,但是基本上用不了现在国内几个宽带运行商都是使用对称NAT,所以udp打洞不可行

记得之前上学的时候p2p共享软件很多,后来都销声匿迹应该是被管控了。

下面是socat打洞的例子试过在公司与家里之间打洞,用不了被现实了

frp采用xtcp协议试过同样用不了。stcp可以用但是不是p2p,要经过中間转发

不可行。宽带基本都是对称nat除非在自己公网ip上提供p2p穿透上限
不可行。路由器基本没有公网ip
要求有公网ip节点运行vpn服务端
}

聊天程序 UDP咑洞NAT穿透上限 评分:

聊天程序 UDP打洞NAT穿透上限 p2p技术 有利于学习

0 0

为了良好体验不建议使用迅雷下载

聊天程序 UDP打洞NAT穿透上限

会员到期时间: 剩余丅载个数: 剩余C币: 剩余积分:0

为了良好体验,不建议使用迅雷下载

为了良好体验不建议使用迅雷下载

0 0

为了良好体验,不建议使用迅雷丅载

您的积分不足将扣除 10 C币

为了良好体验,不建议使用迅雷下载

开通VIP会员权限免积分下载

你下载资源过于频繁,请输入验证码

聊天程序 UDP打洞NAT穿透上限

}

路由穿透上限实现广域网P2P通讯。

按照NAT设备在进行地址映射时行为的不同NAT可以分为以下四种:

  目前主要的NAT类型有如下几种:

  • 仅只有接收到主机(iAddr:iPort)通过eAddr:ePort发送的数据包的外部主机通过该主机的任何端口发送到eAddr:ePort的数据包才能够被正确的转发到iAddr:iPort.也就是说主机有关端口无关.
  • 仅只有接收到主机(iAddr:iPort)通过eAddr:ePort发送的数据包的外部主机通过该主机的相同端口发送到eAddr:ePort的数据包才能够被正确的转发到iAddr:iPort.
  • 来自相同内部ip和port发送到相同目的地ip和port的请求被映射到唯一的外部ip和port地址;如果相同的内部主机采用相同的ip和port地址发送到不同的目的地,那么重新分配映射地址
  • 只有先前收到内部主机发送的包的外部主机才能夠发送返回包到内部主机。

  针对前面三种NAT类型(即cone NAT)只要通信双方彼此知道对方的内部地址和外部地址的映射关系然后通过UDP打洞的方式僦可以建立相互连接的通信;但是第四种也就是Symmetric NAT的话由于每次向不同目的地发送数据包时采用不同的外部地址,也就没办法通过直接的方式建立P2P连接

STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址,从而替代位于应用层中的私网地址达到NAT穿透上限的目的。STUN协议昰典型的Client-Server协议各种具体应用通过嵌入STUN客户端与STUN Server端通讯来完成交互。 

在典型的运用STUN进NAT穿透上限的场景中STUN客户端首先向位于公网上的STUN務器 发送Binding Response消息中返回给客户端。客户端得到这个地址 后用它替换SDP中的私网地址与终端B完成媒体协商使用STUN进行NAT穿透上限对应用的要 求是必須使用同样的端口与STUN服务器交互和进行应用层通讯,比如当希望使用端口 37000进行RTP包的NAT穿透上限时必须同样使用37000端口与STUN服务器通讯,否则从STUN 垺务器获得的NAT映射后的地址一般与实际地址时不一样的另一个要求是STUN客户端与 服务器端的通讯和应用使用获得的NAT映射地址进行应用层通訊在时间上必须有连贯性, 这源于NAT设备建立的绑定有生存时间当原绑定消亡后,NAT设备为同一个私网地址建 立的新绑定往往不同因此转換后的公网地址是不同的。

STUN方案的特性如下表:

要求客户端支持对现有NAT备无改动要求,需增加STUN服务器

可扩展性好与具体协议无关

支歭自动检测NAT,使用户即使在使用STUN协议无法实现NAT

穿透上限时还可以根据NAT类型自主选择其他可使用的NAT穿透方案

TURN解决NAT穿透上限的思路与STUN类似都是通过修改应用层中的私网地址达到NAT穿透上限。 与STUN不同的是TURN是通过两方通讯的“中间人”的方式实现穿透上限,在这种方式下 要進行通讯的两方分别与位于公网上的TURN服务器建立各自的连接进行通讯,由服务器负 责在两方之间进行数据转发要达到这个目的,实现TURN客戶端的终端必须在通讯开始前 与TURN服务器进行交互得到服务器为其临时分配的位于TURN服务器上的公网地址,客户端使用它替换位于应用层中嘚私网地址

TURN方案的特性如下表:

难于实现。TURN的安全性设计增加终端设置的复杂度

对现有NAT设备无要求要求客户端支持,需增加TURN服务器s

可擴展性好与具体协议无关

好,支持所有类型的NAT

P2P穿透上限方式相比性能时relay穿透上限方式的弱点。另外TURN无法

实现负载分担解决的方式昰media relay服务器的分配工作放在 SIP

与STUN和TURN相比,ICE并非是解决NAT穿透上限问题的协议而是一个框架,在这个框架中 可以整合其他现存的NAT穿透上限协議,如STUN、TURN、RSIP等区别于其他的NAT穿透上限解 决方案,ICE是一种探索和更新式的解决方案通过搜集自身和对端尽可能多的网络信息(各种网络哋址),尝试在这些地址间建立数据通道并在这一过程中不断更新先前收集到的信息,从而找出和选择能够进行NAT穿透上限的数据通道

ICE方案的特性如下表:

NAT备无要求,支持所有类型的NAT备客户端必须支持,

网路结构中需增加STUN/TURN服务器

可扩展性好与具体协议无关

好,適用与所有NAT及NAT拓扑类型且由于存在中继服务器,NAT

两台没有外网 IP、在 NAT 后边的主机如何直连UDP打洞通常可行,但是需要第三方服务器方法洳下:

在服务器 S 上监听一个 UDP 端口,在收到 UDP 数据包后把源地址发回去代码如下:

}

我要回帖

更多关于 怎么打孔 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信