简单的对等网络玩后感

July 12, 2015 12:44


引子

某天,看到了一个有趣的工具:可以通过域名访问本机的运行的web服务。然后就一发不可收拾了。。

先是脑海里直接就想到一个实现方案: 用户访问代理网站,然后代理网站直接转发请求到本机了, 本机处理后返回代理网站,代理网站再转发给用户嘛

首先一个不了解的是怎么生成N多的二级域名,一搜索才知道有泛域名,那么第一个问题解决了, 代理服务器可以通过请求的域名去请求不同小网站了 :)

代理服务器又是如何与本机通信的呢?由于本机可能在内网,所以代理服务器肯定不能自己连上来了, 那么直接本机去与代理服务器建立连接嘛,然后实现HTTP转发就可以玩了嘛。

方案已经有了,自己又折腾了一个Dome玩。。

然后想到,是否有方案直接让用户与本机web服务通信呢?由于用户是使用浏览器的, 所以能连的只是暴露在外的80端口,而本机环境是不确定的,可能是在外网也可能在内网, 所以感觉基本上没法在本机运行一个程序就可以实现直接与客户端通信了。

那么,如何让内网的机器与在另一个内网的机器去直接通信呢?

折腾

NAT内网穿透技术,好神秘的东西,更对与之相关的P2P有了兴趣,然后就买了本P2P的书。。

在搜索一会才,终于了解内网穿透是怎么回事。局域网的机器由于没有外部IP,是无法直接与外部网络通信的, 而NAT(网络地址转换)方案解决了这个问题.

简单介绍一下应用最多的方式,当局域网内的机器发送的数据包经过网关时, 网关将数据包的来源IP报文改为自己的IP,并将来源端口映射到网关的一个端口, 当网关收到数据后包后,根据接收的端口,再转发给内网对应的机器

而p2p实现的通信方案就是基于NAT的,当内网机器自己在网关上打个洞后(端口映射), 其它机器就可以直接将数据发送到目标网关对应的端口上,目标网关会自动将数据包转发给内网对应的机器

当然,上面只是一个简单的介绍,还有UPnP,TCP穿透NAT这些在写此文时,我也没有具体的了解, 只有一些猜测,所以就不多讲了

而后就是P2P的各种网络结构,感觉水有点深,还在断断续续的啃,瞎折腾。。。

Comments: