为了解决 IPv4 不够的问题,一个最常见的方法,就是 NAT 技术。如果我们在家上网,我们通过手机的网络设置,或者电脑的 ipconfig 命令,查看我们设备的 IP 地址,往往看到的都是以 192.168. 开头的样子。别人家手机和电脑的 IP 还是 191.168.x.x 的样子。如果没有特别的方法,接入互联网的 IP 地址重复了的话,信息是如何能做到正确的流动呢?
拥有两个地址的设备
我们看到的以 192.168.x.x 为形式的地址,其实是一组特殊的 IP 地址。这类地址叫做“局域网 IP 地址”,也有叫“内网地址”的。互联网的 IP 地址,是由一个叫“互联网名称与数字地址分配机构” (ICANN) 的全球化组织负责的,它在全球范围内协调此类唯一标识符,如果没有这种协调,我们就不会拥有统一的全球互联网。而 192.168.x.x 这组地址,是不会被分配给任何实际需要直接接入互联网的设备(或者人)的,这些地址是保留给大家在“内部使用”的,比如一个公司内部、一个学校内部、或者一个家庭内部。这样所有的设备和程序,就能很快的发现,如果有信息是使用这种地址的,就不需要麻烦的往互联网上传了。实际上,被保留作为“内网地址”的 IP 段,还有另外两段:
10.x.x.x:以 10 开头的所有地址
172.16.0.0 - 172.31.255.255 这个范围的地址
如果我们在家上网,当我们发送一个信息到内网地址的数据,不管是不是在同一个“子网”的,我们的互联网网关(路由器),都不会发到互联网上去。类似的,另外一个特殊的 IP 127.0.0.1,表示“本机”,发往这个地址的信息,甚至不会被操作系统发到网卡上,只会在当前电脑上处理。以前我们监测网卡是否安装好的时候,会用 ping 127.0.0.1 来判断。
前文有提到,我们的路由器的 IP,就是我们电脑上的“默认网关”,而路由器一个最重要的功能,就是当我们的电脑,需要发送信息到互联网上的时候,帮我们把信息转发出去。这种转发的信息,会分成一个个的数据包(又叫数据分组)。在我们所谓的 TCP/IP 数据包里面,会包含发送者的 IP 和端口号,以及接收者的 IP 和端口号。路由器帮我们转发数据的时候,就会把“发送者 IP、端口”部分的信息,从内网地址,改成路由器自己的“公网地址、端口”(不属于内网的地址就是公网地址啦)发送出去。我们可以通过某些网站,来看一下这个过程:这个网站会在页面上,显示 HTTP 请求,也就是发送的 TCP/IP 数据包的发送者 IP。
在路由器管理界面上,标注的 LAN(Local Area Netword),指的就是我们的手机、电脑这些使用“内网 IP”的设备,所组成的网络;而 WAN(Wide Area Network) 指的是,路由器通过电信运营商接入了的互联网的网络。路由器就好像一个插了两个网卡(现在好多电脑都做在主板上,不需要插卡了)的电脑,一边连接着互联网,使用者公网 IP;另外一边连接着家里的网络,使用内网 IP。每个从我们的手机、电脑发出的数据,都通过路由器改写地址之后,发到互联网上。这样的一个把内网数据发到外网的过程,就是所谓 NAT(Network Address Translation) 服务的内容。
本来我想整一下端口转发的实验,但是现在电信的用户早就没有自己的真正公网 IP 了,100.64.x.x 的 IP 属于是运营商的内网 IP,运营商自己也搞了个 NAT,所以我们在路由器上看的 WAN 的 IP 其实并不能真正的被外界访问。这一切,都是因为 IPv4 早就不够用有引起,幸好,我们还有更好的选择,那就是 IPv6!
评论区
共 6 条评论热门最新