互联网上的电脑相互通讯是通过IP地址的,那就是说理论上每台能上网的电脑都应该有一个世界上独一无二的IP,但限于IPV4的最大数量限定,这是不可能达到的事情,所以现在出现了IPV6,进一步扩展了IPV4的数量限制。
为了解决IPV4的资源紧张问题,互联网多数由局域网组成,每个局域网都是一个独立的小王国,通过一个拥有公网IP的网关实现与外界英特网通信。
IPv4
地址长度:32位(4 个字节)
地址数量:2^32
IPv6
地址长度:128位(16 个字节)
地址数量:2^128
让一台内网计算机拥有公网权限
内网穿透原理最基本底层里面都或多或少使用了动态域名解析、端口映射、p2p穿透等这些技术。动态域名解析是解决动态公网IP问题,同时结合了路由端口转发原理。端口映射应用是一个介质,起到中转作用,可以解决端口被屏蔽或无公网IP问题。p2p穿透是二端通信,点到点的通信,二点访问端都是需要使用经过数据处理通信的客户端,适用于任何环境。
内网对应的是外网,只要是涉及内外网间的连通都可以理解为内网穿透。内网穿透可以实现二点直连方式数据交互,穿透是不限速的,速度取决于两端点。
端口映射
端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址, 采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。(百度百科)
端口映射即在路由器注册端口转发服务,在路由器添加一个数据判断,如果外界访问自己的某个端口数据,就将这些数据转发到局域网的某个IP上。实现端口对应局域网的特定服务--局域网计算机IP和端口。
服务器数据转发
不少所谓的穿透其实是数据全转发,两端都连接了一个服务器,AB主机的数据都是通过外网的服务器进行中间转发,这样就有效的避开了端口映射时所触及不到的路由器了。但缺点就是数据转发速度高度依赖于服务器。
实现数据转发时,我们需要在服务端也就是被动访问端下载一个内网穿透工具,让其与服务器保持连接,以便随时获取主动访问的数据。
访问实例
内网设备访问外网:
内网客户端主动发起请求后,路由器会记录其请求的目标外网服务所对应的服务器信息(IP和端口)并与内网客户端的局域网IP和端口做绑定,注册成NAT表。进而实现两个端点的点对点通讯。
其详细过程例如:
外网服务: 116.33.13.10:8000
路由器公网IP:113.67.11.104
路由器内网IP:192.168.0.1
内网客户端IP:192.168.0.100
内网客户端(192.168.0.100)随机生成了一个端口55667,并发送连接外网服务请求(116.33.13.10:8000),路由器局域网(192.168.0.1)接受到连接请求便通过公网IP(113.67.11.104)随机生成了一个端口号22334去于外网服务进行连接,在此时路由器会建立一条NAT数据,表示外网服务的IP和端口与局域网客户端的IP和端口连接关系。这样他们就能互相交互数据了。
外网设备访问内网:
如果按照上面的流程,其重要一环就是路由器的NAT数据关联关系,但是内网服务作为被动者时,路由器是不存在此端口关联数据的。所以外网的主动访问数据会被路由器识别为无效数据而丢失。
当然我们可以在路由器做端口映射,但是很重要的前提是你所能做端口映射的路由器是有公网IP的,但生活上基本是不可能的,公网IP基本都会被运营商所直接管辖,而我们的路由器连接的是运营商的路由器,是一个局域网IP,但是我们又没有权限去操作运营商的路由器,从而路由端口映射的路基本被赌完了。
看花生壳是如何实现的,依照官网的收费手段,基本都是流量和带宽,视乎在说明其实现的关键技术是服务器数据转发
下载/安装内网穿透工具
微信扫描二维码,弹出关注公众号,点击关注即可
激活和开始
测试
tcp://12345.qicp.vip:7799
这是一个tcp的URL,分解之后可见:
【tcp://】协议为tcp
【12345.qicp.vip】域名,域名是IP地址的索引,通过域名解析可以将其解释到IP地址
【7799】端口号
参考: