内网穿透

刚看了下BT原理

因为公司一个程序被防火墙死活当成BT软件而封了,被误判可能是因为网络连接过程更BT内网穿透情况完全一致而导致网关给卡掉了。所以仔细研究了一下。看了几篇文章,说得都差不多。

最近一篇地址:http://www.ppcn.net/n1306c2.aspx

 

下面是自己的理解。

内网穿透的原理是
内网客户端 l,
外网客户端 n,
网关 nat,

内外网是无法直接连接的,因为IP范围不一样
但网关充当中间人就实现了这个功能

l 要连 n, 消息发到 nat 时 nat发现时要连到外网(内网就直接转发到内网地址即可), 就自己建立一个socket去连接 n, 从此以后  l 发过去的数据都会被修改包头中的本地地址为 nat的地址, 然后发出去 。
所以 n 实际上一直以为 是nat在给自己发东西。
n要给l发东西 , nat收到以后就会把包头中的目标地址改成内网地址,然后发给l

而l则实际上一直是在跟nat发东西。

然后BT穿透是指有时候两个不同的内网需要连接,这是办不到的。因为两个内网程序都不知道对方的外网地址,所以无法连接。
于是找一个外网客户端。  
内网 la,lb
网关 nata,natb
外网 n
la 要连 lb。 
la先连接n,lb也连接n。然后 la在n那里得到了lb的地址(而实际上就是natb的地址)。但是直接给natb发东西不行的。因为一个socket只能给一个socket发东西而这时natb是在跟n发东西的。

于是la给n说,你让lb连我吧!

然后n对lb说,你再开一个连接出来,于是n就有了lb的另一个地址AddreslbB,然后告诉la。la这下就可以连接lb了,因为AddresslbB是一个外网地址,也就是natb的地址。而natb是知道这个地址是要转发给lb的。所以……

这就水到渠成了。

 

所以大致分析公司那个被误判的程序是因为他连到了一个外网地址,网关已经为他代理了一条通道,他又要开一个新的连接同一个外网IP。可能是这样子网关以为他是在做内网穿透。给屏蔽了后面要建立的连接。

 

只是可能这样,要看代码才知道,代码才是最直接的解释。不过这个问题不是让我来解决。仅仅旁听后做的感想。呵呵

等他们解决问题后再看看是不是这个样子。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值