公网IP与私网IP
计算机上网原理
互联技术
公网IP与私网IP
最近在自己的虚拟机上装了一个Linux系统,相当于是一个服务器,但是这个“服务器”跟我们常说的云服务器,可以理解为一样也可以理解为不一样,其中一个很关键的点是,云服务器是公有IP,只要有互联网的地方都能访问,而我们在自己电脑装的虚拟机上的Linux,一般来说只能在我们的局域网内使用。
公网也称为互联网,而局域网诸如我们家庭单位、学校单位、企业等。
每个局域网都有公有IP,这个公有IP能在互联网中找得到,比如我使用自己的电脑,尝试连接下百度:
这个177.39就相当于百度的公网IP。
这个时候有意思的事情来了,我的电脑主机,如果尝试查询自己的IP地址,这里的IP并不是公网IP,而是网关给我分配的一个私有IP。不同的局域网中私有IP可以一样,同一个局域网中私有IP不能一样。
那我们局域网的公有IP怎么查询,很简单,百度:IP就可以:
在互联网世界中,别的局域网内的主机用户可以ping的通我的公有IP,但是无法ping的通私有IP。换句话说,我的电脑主机能与全世界的公有IP通信,但是他们却联系不上我的电脑主机,最多只能找到我的上一层网关层。当然,前提是没有做内网穿透。
计算机上网原理
我这里以下图为例,介绍一下在互联网层面,一台计算机上网的过程
假设上图的路由拥有一个公网IP,2022.0.0.1
1、当计算机和手机接入该路由器后,路由器给这两个设备分配了唯一的IP,
计算机:192.168.0.1
手机 :192.168.0.2
2.当计算机尝试访问网上资源,比如百度时,会发送一串信息给路由,此信息至少包含:源地址(192.168.0.1)、目标地址(百度IP)、搜索关键字;
3.路由收到这一串消息后,通过NAT技术,将IP地址转换,把源地址改为了自己的公网IP:2022.0.0.1,然后发送到互联网上。
4.互联网上的百度服务器收到这个消息后,将计算机所需要的数据返回,这个返回信息有目的地址:2022.0.0.1;
5.该路由器收到返回信息后,一个有意思的事情来了,路由器怎么知道下行的数据是给计算机还是手机的呢,原因是端口,在第三步的时候,路由器不仅仅改了IP,还给计算机的IP设定了端口,称为端口映射。路由发送给百度服务器的数据包含端口号,返回值也有端口号,路由根据这个端口号,就知道这个返回值究竟是给计算机还是手机。
6.计算机收到数据
在路由的工作中,两个重要的活,就是建立对应关系
1.给下属的设备建立IP表。
2.在IP表的基础上设定端口号。
在互联网世界,存在无数个局域网,不同的局域网本身是独立的,如果我从一个局域网ping另外一个局域网内的计算机,无法建立通讯,因为TCP协议是双向的,我发送过去的数据会被对方的路由丢弃,从逻辑来看,我的目标地址就是私有地址,不允许出现在公网之上。
互联技术
当然了,现在内网穿透是一项公开的技术,有很多免费的软件支持,只要你想,在你的电脑上做好内网穿透,那你的电脑就可以是一台云服务器,只不过需要一直开机运行以维持服务而已。
有两种技术可以实现将两个局域网连接起来,一个是VPN,一个是内网穿透,这两种方式其实都是需要搭建中转服务器,让两个独立的局域网访问这个服务器,互相监听某个端口,从而实现局域网的连接,VPN有加密技术,从通讯的角度来说会更安全。