—
内网,也称为局域网,就是路由器搭建的网络,称为内网,比如需要访问别的站点,就要是公网,同样公网也分为公有内网,这里就不做过多解释了,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。
局域网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
网络地址转换(Network Address Translation,NAT)机制的问题在于,NAT设备自动屏蔽了非内网主机主动发起的连接,也就是说,从外网发往内网的数据包将被NAT设备丢弃,这使得位于不同NAT设备之后的主机之间无法直接交换信息。这一方面保护了内网主机免于来自外部网络的攻击,另一方面也为P2P通信带来了一定困难。Internet上的NAT设备大多是地址限制圆锥形NAT或端口限制圆锥形 NAT,外部主机要与内网主机相互通信,必须由内网主机主动发起连接,使 NAT设备产生一个映射条目,以上是原理或者是书籍上所涉及的,但是在实际使用中还会涉及到非常多知识点,比如现在市面上做的比较好的神卓互联内网穿透,他们使用的网络通信技术方式要比传统的性能要提升8倍以上,技术难点主要还是在网络通信上,神卓互联采用自主研发的 WanGooe Tunnel 通信协议,完全由 C 语言实现,重点是在设备的底层架构上进行开发,能做到最大限度利用设备性能,做过开发的基本知道架构问题,就像盖房子打地基一样,只有好的地基才能建好的房子,像目前市面也有一些是做封装好架包直接调用,好处比较省事,不好的地方就是有局限性。
一台主机有一个公网 IP,另一台主机有一个内网 IP。Client A 位于 NAT 之后,并拥有[IP 地址:端口]对[10.0.0.1:1234],Client B位于 NAT 之前,并拥有[IP 地址:端口]对[138.76.29.7:1234],NAT 拥有公网 IP 155.99.25.11。由于 Client B 有一个公网 IP,Client A 可以直接通过 TCP 连接到[138.76.29.7:1234],然而,如果 Client B 向 Client A 发起主动连接,则不会成功。此时,需要一个公有的服务器辅助进行内网穿透。Client A 和 Client B 向服务器发起登陆请求,并保持一个 TCP 或 UDP 连接,服务器记录其 IP 地址和端口号,这里服务器对 Client A 是记录其经过 NAT 映射之后的 IP 和端口号。当 Client B 想连接 Client A 时,首先向服务器提出请求,服务器在收到请求后向 Client A 发出打洞命令,并将 Client B 的[IP 地址:端口]对发给 Client A,Client A 根据接收到的 IP地址和端口号向 Client B 发起 TCP 连接或发送 数据包。接下来 Client A 和Client B 之间便可以建立数据传输通道。
台主机都处于内网中,服务器记录的[IP 地址:端口]对是 Client A 和 Client B 经
过 NAT 映射之后的IP 地址和端口号,此时,Client A 和 Client B 之间任意方向的连接请求都会被对方的 NAT 设备屏蔽。Client A 首先向服务器提出连接请求,服务器将 Client A 的 IP地址和端口号对[155.99.25.11:51200]发给 Client B,并向 Client B 发出打洞命令;Client B 收到服务器的打洞命令后首先向[155.99.25.11:51200]发送一定数目的 UDP探测包或 TCP 连接请求,在 NAT B 上打一个方向为[155.99.25.11:51200]的洞,Client B 随后向服务器报告打洞完成;服务器在收到 Client B 的报告后将 Client B 的公网IP 地址和端口号对[110.10.33.10:5000],此时由于 NAT B 上已经留下了对应于[155.99.25.11:51200]方向的洞,Client A 向[110.10.33.10:5000]发出的数据包或连接请求将不会被丢弃。
传统的NAT技术是通过将专用的网络地址(如企业内部网Internet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的IP地址。这样,通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP地址,从而减少了IP地址注册的费用以及节省了目前越来越缺乏的地址空间。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
表示了NAT技术的
穿透过程。NAT设备(或软件)维护一个状态表,用来把内部网络的私有IP地址映射到外部网络的合法IP地址上去。每个包头中的IP地址和端口信息在NAT设备(或软件)中都被修改并翻译成一正确的IP地址发往下一级。当一个内网主机通过NAT打开一个“外出”的TCP或UDP会话时,NAPT分配给这个会话一个公网IP和端口,用来接收外网的响应的数据包,并经过转换通知内部网的主机。这样,NAPT在[私有IP:私有端口]和[公网IP:公网端口]之间建立了一个端口绑定。
巧妙地利用NAT原理实现NAT内网穿透技术,就可以使内网服务器接收到外网数据包。
互联先写这么多,后续在写!!!!
。。。。