一、本次教程的目的
本次教程我只会带大叫了解网络的基础知识,了解网络请求的基本原理,为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层,并不涉及协议的具体实现和数据转发的规则。也就是说,这篇教程是面向纯网络小白的。即使你没有任何网络基础也可以看本篇教程。当然,本篇教程中涉及了一些很普遍的观点和我自己对网络的理解,本人不是专业的网络工程师,文章中有错误还请指正。
二、网络相关知识的学习感悟
我从最开始接触网络相关的知识到现在已经四年了,说实话在这四年中我学习到的东西是非常有限的我了解到的也仅仅是非常表面的东西。我第一次接触网络相关的配置还是配置家里的路由器,当时确实很害怕配坏了,后面开始慢慢了解网络的通信协议,跟着一些UP主慢慢的搭建自己的网站,理解正向代理和反向代理,理解DNS这一类的网络术语。当然,直到现在,我仍然是一位网络小白,要学习的东西还很多,之前也提到了这篇文章我会结合目前普遍的观点并且结合了我自己的一些看法,当然,中间可能会有不准确的地方,毕竟我也只是一位网络小白。这篇文章会为我以后的文章做铺垫,在以后的文章中,我可能会经常引用这篇文章。
三、网络中的硬件设备
我们首先为大家介绍网络中最常见的硬件设备,这些设备的存在构成了我们整个互联网。所以学习计算机网络的的基础是网络硬件设备。下面我会为大家介绍路由器,交换机,网关等网络基础设备。
1.路由器
路由器主要作为网络中非常重要的一个设备,它负责在不同网络之间转发数据包,并确保数据能够到达正确的目的地。
首先,路由器的核心功能是根据数据包的目标地址将数据从一个网络转发到另一个网络。它使用路由表来决定数据包的最佳路径。我们的数据包发出的第一步就是到路由器,经过路由器向外转发并找到通信的最优解。
其次,路由器也负责网络的连接,路由器通过数据的转发实现两台网络设备的连接。
然后,路由器也负责了网络地址转换,路由器能够将外部的公网地址转换为内部的私有地址。这项技术也被广泛用在我们公网IP不够时分配网络。在我们日常使用的网络中,都是经过上层设备经过网络地址转换以后得到的。
路由器在网络中也具有一定的防火墙功能,因为路由器在隔离了公网和内网,所以路由器在某些时候也能拦截网络中的危险数据和部分攻击。
路由器在日常生活中也负责了产生无线网络,我们日常中连接的wifi就是路由器产生的。
上面就是路由器的基础功能,后面的讲解中我们也会使用到路由器的某些概念。
2.交换机
交换机在我们网络通信中也是非常重要的,在常见的网络配置中,我们的交换机有非常多的种类,下面我们只讲最普通的两种,分别是“两层交换机”和“三层交换机”。
下面我们来讲解一下两层交换机,这里又涉及到互联网通信中层的概念,这个我们后面会讲到,两层的交换机这里的层就对应了互联网通过信中的层。具体的来说两层交换机能处理的就是数据链路层的数据,也就是两台设备使用MAC通信的数据。当然,我们这里先不说网络的抽象概念,我们这里也只了解互联网的硬件。交换机一般拥有非常多的网口,这些网口我们可以接各种设备,交换机让这些设备在物理层面上连接在一起。当我们的其它网络设备的接口不够用时我们也会使用交换机来扩展网络接口。对于两层交换机而言,它只能处理两层的数据,所以我们一般使用在局域网中。如果要发送网络请求或者路由数据包我们还是需要借助路由器。
接下来是三层交换机,这里的三层对应的同样是互联网通信中的层。三层交换机能够处理IP层的数据,这也就意味着,我们日常中的大部分通信数据都能被三层交换机处理,三层交换机主要用于企业中设备之间的数据通信。交换机主要用于简单的路由数据包转发,和路由器不同,它不像路由器那样能够处理广域网的数据,当然这其中会涉及到这些设备的底层构造,我也没了解过,所以这里不过多讲解。
3.网关
网关在我们的网络中负责了不同网络或协议之间进行通信和转换。网关的作用是使不同类型的网络或系统能够互相理解和交互。在日常生活中,我们常常就把路由器当作我们的网关,我们于别的设备的通信和数据交互我们也都交给路由器来执行。对于网关大家在这里具有概念就行,可以理解为一个转发数据的节点。
四、网络模型
目前,我们说得最多的网络模型指的是OSI七层和TCP/IP四层模型。OSI对我们的网络进行了更详细的分层,分别定义了会话层和表示层,这里的层越往下越接近硬件,越往上也越接近用户。
下面我会为大家重点介绍网络七层协议。
下面我们来看上面这样图,这张图非常形象的描述了网络的七层协议,我们现在来一一分析。
首先是最底层的物理层,它负责了数据传输的物理连接,我们的两个设备要通信它们必须要有物理上的连接。物理层就是将所有的用于通信的设备连接在一起,它定义了电气信号、光信号、机械连接和传输介质的标准。
下面是数据链路层,它负责将网络层传来的数据包封装成帧,处理错误检测和纠正,并控制数据流量。它确保在局域网内的可靠传输。同时它也能对数据进行检测和纠正,提高数据传输的稳定性。它同时也接管了数据流量,防止网络拥堵。
然后是网络层,它负责数据包的路由和转发,确保数据能够从源设备传输到目标设备。它处理逻辑地址(如IP地址),并管理网络中的路径选择。网络层也定义了如今我们最常用的IPV4与IPV6协议,这个我们在后面会讲到。
再然后就是我们的传输层,它负责端到端的数据传输,提供数据完整性和顺序控制。它处理数据流量控制和错误恢复,确保数据在两台设备之间的可靠传输。这也是目前我们使用最多的两种协议,一些上层协议也是基于这两种协议进行封装。
下面是会话层,它管理应用程序之间的会话,负责会话的建立、维护和终止。它提供了会话的同步和恢复功能。
然后是表示层表示层负责数据的格式化、加密和解密,使得数据可以被不同系统理解。它处理数据的语法和语义。我们的SSL和TLS就被定义在了这一层。
最后就是我们的应用层,它提供网络应用程序的接口和服务,直接与用户交互。它处理应用程序的数据和协议,支持各种应用服务。我们的HTTP和HTTPS也被定义在了这一层,这也是距离用户最近的一层。
简单的了解互联网基本模型以后,我们就可以进行进一步的学习了,下面我会带大家看看网络请求的基本原理。
五、网络请求的基本原理
下面我们来看看网络请求的基本原理,当然这里也不会涉及到自己编写网络请求等操作,全程不会有任何程序操作,我们只会讲原理,并不会讲过程。下面我将从IP地址请求,以及DNS几个方面来为大家讲解。
1.IP地址
目前我们使用得最多IP地址为IPV4和IPV6地址,使用的协议也是与之对应的IPV4协议与IPV6协议。在日常生活中IPV4地址已经在全球范围内普及,所以我们下面会重点讲IPV4地址。
IPV4地址是一个32位的地址,即四个字节,我们将这32位每八位一分组,分成四份,用十进制表示,这就是我们日常看到的最多的IPV4地址的表示方式。如图:
上图就是我的计算机被分配到的IP地址,这是一个内网地址,我们后面也会为大家讲解内网地址与公网地址的区别。在上图中我们可以看到,这段IP地址被分为了四段并且使用“.”号分割。由于我们位数的限制所以,每一段内就只能是“0~255”这个范围,也就是说,我们最大的IPV4地址为“255.255.255.255”最小的IPV4地址为“0.0.0.0”.下面我们要讲到IPV4地址的几个保留地址段。
127.0.0.0\8:作为本地环回地址,通常我们使用127.0.0.1,设备通过它和自己通信,我们日常在自己设备上搭建了网络服务我们就可以直接通过127.0.0.1来访问。
10.0.0.0/8:局域网A类私有地址,范围10.0.0.0~10.255.255.255,这是一个内网保留段,主要用在我们的局域网中,我们路由器给我们下发的内网地址就可能使10开头的,因为10.0.0.0/8段的网段非常宽,可以包含非常多的地址,所以一般也用在企业中。
172.16.0.0/12:局域网B类私有地址,范围172.16.0.0~172.31.255.255,与上面的A类地址类似,但它的网段下能够包含的设备就少了许多。
192.168.0.0/16:局域网C类私有地址,范围192.168.0.0~192.168.255.255,与上面的A类地址类似,但是它网段下能包含的设备就更少了,我们的路由器常常会分配给我们192.168网段的地址。例如192.168.1.1就是一个C类地址,我们地址的前段一样也就表示设备在一个网段中,只有在一个网段中的设备才能互相通信。
255.255.255.255:这是一个本地广播的地址,用于将数据包发送到同一子网中的所有主机,但这些数据包只会在内网中发送,并不会经过路由器。
除了上面提到的一些地址以外,还有很多保底地址段,这些地址段在某些地方发挥着重要作用。当然除了保留地址除外的都是公网地址了。
2.公网地址与内网地址
我们刚刚提到的,诸如192.168.1.1就是一个内网地址,这个如果内网的设备没有部署任何服务,或者内网没有分配这个IP地址的话我们是不能访问这个设备的。在公网地址中,我们通过路由器帮我们转发数据,下面,我们来看一个简单的模型:
这里有一个非常简单的模型,我们的两台计算机都连接到路由器上,它们都被分配了IP地址,我们可以看到两台计算机都处于一个网段中,它们都在192.168.55的网段下,也就意味着它们可以互相通信,我们可以直接使用一台机器去Ping另一台机器:
我们发现我们可以ping通这台机器,并且TTL是128,这里的TTL是指网络中的越点数,每经过一个越点TTL就会减1,因为我们这里是在内网中进行通信,并没有越点,所以这里的TTL不会减少。
下面我们ping一下别的IP地址,比如,我们去ping一下百度服务器:
这里得到的ip并不是百度真实的IP。而是百度加速服务器的IP。
我们在这里可以看到这里的TTL已经变了变成了48,也就是说我们的数据包经过了80次跳转,跳转到了百度的服务器,当然,也有ping不通的情况,在ping不通时可能是对方服务器关闭了ping,你可以考虑换一个网站来ping。
在上面的模型中,我们挂载在路由器下的设备被我们称为内网设备,有公网IP的设备,比如百度的服务器被我们称为公网设备。当我们向一个IP地址发起请求时,我们的路由器会处理我们的请求,它会查看自己的路由表中有没有要访问的这个地址,如果没有路由器就会把数据发出去由上级的路由来处理,上级的路由拿到数据以后,如果发现自己的路由表中没有这个设备同样的将数据包发送到更上层的路由,直到在某一时刻,数据包跳转到到某个路由服务器中,这个服务器的路由表下有你想访问的地址,至此,这台服务器就会将你的数据包交给对应的服务器。相关的服务器在接收到你的数据包以后,会返回响应的数据,响应的数据会按原路返回到你的计算机中,至此,一次基本的网络请求就完成了。当然,这只是一种简单的描述方法,在实际的网络环境中,网络数据包的请求要复杂得多。
3.DNS服务器
在日常我们访问网站的时候,大部分时候我们使用的都是一个网站的域名,很少会使用ip地址直接去访问某个网站。比如我们的“baidu.com”这就是一个域名,这也是为了方便人们记忆而诞生的。那么,我们的IP地址是怎么对应到域名的呢?下面我们来详细讲讲。
当我们在浏览器中请求一个域名时,我们的计算机为了找到它的IP地址,首先会在本地的缓存中寻找,有没有域名对应IP地址的记录,当本地缓存没找到这个域名对应的IP地址时,计算机就会去找自己的hosts文件,这个文件也可以用于描述域名对应的IP地址,我们也可以直接修改这个文件从而让域名指向不同的IP地址,当然,这个只在本地生效。如果计算机在DNS缓存和hosts文件中都没有找到对应的IP地址那么计算机就会请求DNS服务器,在DNS服务器中保存了所有的域名解析记录。当我们请求DNS服务器时,它就会返回一个域名对应的地址。
下面我为大家演示一下,如何让通过修改hosts来让域名对应IP地址。
我们现在去到hosts文件的路径:“C:\Windows\System32\drivers\etc”
我们打开hosts,并且在hosts下面添加一条域名对应IP地址规则:
我们现在去ping这个域名:
在我们Ping这个域名的时候我们就能发现,我们的域名直接对应到了我们刚才对应的IP地址。
以上就是DNS的基本原理了。
六、什么是正向代理和反向代理
这是在我们网路通信中经常会听到的词,那么什么是正向代理,什么是反向代理呢?下面我们来详细说说:
1.正向代理:
在我们日常生活中正向代理使用的是非常多的。正向代理服务器一般存在于用户和目标服务器之间。当我们将一个服务器配置为我们的正向代理服务器以后,计算机的网络请求就会被打包发送到正向代理服务器,这个被打包的数据包中包含了我们想访问的网站等信息,正向代理服务器接收到数据包以后会将我们,将我们数据包进行解包,并且自己访问我们想访问的地址,在接收到服务器响应以后,正向代理服务器将服务打包发回我们,至此就已经完成了一次正向代理请求。正向代理服务能够解除我们的一些访问限制,也能帮我们隐藏自身真实的IP地址。
2.反向代理:
反向代理比起正向代理可能会使用得少一些,正向代理代理的是我们的客户端,处理了我们客户端的请求,反向代理服务器代理的是服务端,它决定了请求发往哪一台服务器。例如我们有一台服务器具有公网IP,它的下面挂载了许多设备都不具有公网IP,这台反向代理服务器就可以决定将自己的访问流量转发到哪一台没有公网IP的服务器上。最为典型的就是我们的FRP服务。
七、结语
上面的网络知识是非常浅显的,我并不是计算机专业或者专门的网络工程师,我对网络的见解也仅仅是停留在以上。这篇CSDN也只是对我以往学习的网络知识的总结,如果有错误的地方还请大佬指出。当然,如果你想更深入的了解网络相关的知识,可以去观看更多的视频或者文章,这些知识需要自己慢慢理解。在我以后的文章中可能会经常引用这篇文章。谢谢大家!