内网穿透原理概述

0 背景

由于要使用网络通信来传输数据,要求数据传输稳定,于是选择了TCP,然后硬件和电脑端软件进行传输数据,开始的设想是硬件和电脑端软件都做客户端,使用一个固定ip的外网服务器作为数据的中转,但是数据过多的时候,会让服务器负载过大,于是想到了直接让内网的电脑端软件作为服务器,让硬件直接来连接内网的电脑端软件,但是内网映射到外网的端口不知道。那如何进行通信呢?然后就有了下文。

1 内网(NAT【网络/IP掩蔽】,network Adress Translation)穿透

内网穿透分主流的分为两种(用于路由器上还有运营商路由器(ISP)):

  • 1 内网/外网客户端把数据传给固定IP的外网服务器,然后服务器把内容传给内网与之连接的内网客户端,然后内网客户端把数据再发给内网服务器或者发到内网的固定端口上。
    • 出现的问题:当存在多个客户端发送的数据量过大时,固定IP的外网服务器可能出现带宽负载过大的问题。
  • 2 在内网服务器的电脑端部署一个外网服务器内网/外网客户端直接建立与外网服务器的连接,然后通过反向代理,外网服务器把数据传给内网的服务器。(P2P,Peer to Peer)
    • 内网服务器需要有固定的公网的IP
    • 存在Symmetic网路(内网主机在连接不同外网主机时,内网主机所绑定的外网【IP+端口】不同)时,P2P打洞成功率较低)

当自己的外网IP是公网IP,而不是内网IP(判断自己的网络是否是公网IP查看1/查看2【多方查看自己外网ip,如果不一致,则是内网IP】,或者是打开路由器配置看分配的IP):

100.X.X.X
10.X.X.X
192.168.X.X
172.16.X.X-172.31.X.X

X:0255

可以通过路由器设置静态端口映射,将内网端口暴露给外网。
如果内网分配的是静态公网IP,直接静态映射就可以;
如果内网分配的动态公网IP,使用静态端口映射/DMZ映射(全部端口映射)后,还需要使用DDNS(动态域名解析)来传输数据。

2 补充知识

NAT(网络地址转换):

  • 1 静态地址转换:固定的内网ip映射到固定的外网ip
  • 2 动态地址转换:将随机分配的内网ip映射到
  • 3 NAPT(网络端口地址转换):
    • 当不同的内网主机(分配不同的ip)和外网主机通信时,路由器会记录对应的通信的内网主机【ip+port】和内网主机想要通信的外网主机【ip+port】,当外网主机再发数据到内网主机时,路由机会根据记录,转发到对应的内网主机上。
    • 功能:解决IPV4地址不足的问题,同时隐藏内网结构,提高安全性。
    • 类型:
      • Full Cone:内网主机和外网主机通信后,打开一个固定的公网ip和端口,任何外网设备可用自身任何端口都可从此公网ip和端口和内网主机通信
      • Address Restricted Cone:内网主机和外网主机通信后,打开一个固定的公网ip和端口,只有和内网主机通信过的外网主机才可以通过自身的任何端口和内网主机通过从此公网ip和端口通信
      • Port Restricted Cone:内网主机和外网主机通信后,打开一个固定的公网ip和端口,只有和内网主机通信过的外网主机才可以通过自身的原先端口和内网主机通过从此公网ip和端口通信
      • Symmetic网路(内网主机在连接不同外网主机时,内网主机所绑定的外网【IP+端口】不同)

UDP(P2P)打洞技术:

  • 1 互传内网网ip:两个处在不同内网的客户端通过连接一个共同的公网服务器,然后把内外网ip通过共同的公网服务器发送给对方,两个内网个服务器通过此信息,然后给对方发送信息。
  • 2 试探捕捉:两个处在不同内网的客户端会相互给对方主机发送数据,双方捕捉第一个回应消息的ip,此时就打开了双方通信的通道,双方再次发送信息到对方主机时,就会直达对方客户端(不过这个有时效限制)。

路由器
WAN(Wide Area Network,即广域网):主要用于连接外部网络,如ADSL、DDN、以太网等各种接入线路【对外】
LAN(Local Area Network,即局域网):连接家庭内部网络,主要与家庭网络中的交换机、集线器或PC相连。【对内】

参考:https://blog.csdn.net/deng_xj/article/details/89156155

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页