上一篇文章提到过,网络是机器间的通信方式,那么,为了高效稳定地完成工作,网络具体是如何实现的呢?为了解决这个问题,我们需要认识网络分层模型。
在一家员工很多的工厂里,我们是工厂的主人,怎样才能组织员工很好地完成一项工作呢?最容易想到的办法是将员工划分到不同的部门,每个部门完成部分的工作。而网络的设计正是通过这种方式,将网络划分为几个不同的层次,每个层次只需要使用下一层提供的服务,完成的自己的任务,而无须关注其它层任务的具体实现过程。这里要说明一下,规定每一层某项工作方式的规则是这一层的协议,而下层对上层提供的便利叫做服务。于是,对抽象的网络建模,就产生了易于理解的网络分层模型。有名的有七层的OSI和四层的TCP/IP模型,为了研究清楚网络的具体工作方式,我们结合了OSI和TCP/IP,产生了五层的模型:物理层、数据链路层、网络层、传输层和应用层。
首先,我们要知道,最大的网络(互联网)是由一个个小的网络(局域网)连接而成的。把互联网看作一个城市,局域网就可以是一个小区。网络的工作就类似邮寄物品,计算机相当于小区的住户,网络就是将一些物品从一位住户邮寄至另一位住户。
应用层负责的工作是确定需要传输的信息内容,即邮寄的具体物品。顾名思义,应用层上可能会同时运行着计算机中大量的应用程序,像一位住户家里会有很多人一样,计算机需要确定这条信息内容是由哪个应用程序发出的,以便在收到返回的包裹时,交付给对应的应用。家中的每一个人都有自己的隐私,所以,不同应用间不应该看到不属于自己的包裹。为此,引入了端口的概念,端口是应用层和传输层间的接口,端口可以理解为为区分不同应用而做的标识。当某个应用需要寄信,它就会使用一个端口,计算机会记录这个应用和它所对应的端口号,当收到返回的包裹时,会通过端口号找到对应的应用,并将包裹交付与它。端口号使用16个比特来标识,所以端口号的范围是0至65535。其中,一些常用的应用层协议有着相对固定的端口,如HTTP协议一般使用80端口,HTTPS协议使用443端口,FTP协议控制端口是21,默认数据端口是20。网络中所有重要的协议以后的文章会详细展开讨论。
传输层的工作比较多,它需要通过端口确定对应的应用,把所有应用邮寄的物品打包,汇聚在一起发出,当邮寄的物品过大时,还需要将它分成几部分,再打包成包裹。同时,它还有控制邮寄线路不拥堵,邮寄包裹尽量完好无损地到达目的地址的功能。传输层有两种工作方式,分别使用了TCP协议和UDP协议。这里简单介络一下这两种协议的区别,TCP是面向连接的协议,需要建立连接,而UDP不需要建立连接。类比于我们去拜访朋友,建立连接就是在拜访前给朋友打电话,那么朋友一定会提前准备,知道我们要来造访;而不建立连接呢,就是给朋友一个惊喜,突然造访,朋友提前是不知道的,会感到意外。TCP传输的数据是可靠的,是不容一点差错的,信息会准确无误地到达目的地址;而UDP则是不做保证,可能会出现差错的。TCP由于要控制不出差错,所以传输速率会比UDP慢。那么,结合它俩不同的特点,在对数据传输准确率要求严格的情况下,应当使用TCP协议。而在对数据传输速率要求严格的情况下,应当使用UDP协议。
网络层会为我们的包裹填写上源IP地址和目的IP地址。网络层上最重要的物理设备是路由器,它将一个个小的网络(局域网)连接起来,形成了一个大的网络(互联网)。正是有了网络层的工作,我们的数据包可以在多个局域网中穿行,最后到达了目的计算机所在的局域网。那么,网络是怎么知道我们需要将包裹传输到某个局域网中的?这是因为每一个局域网都有自己的IP地址。关于IP地址,这里简单介绍,IP地址由网络地址和主机地址组成。每一块网卡都会被分配一个IP地址,路由器只要观察目的IP地址中的网络地址,就可以找到目的计算机所在的局域网。网络层中最重要的协议就是IP协议,IP协议除了具有为每一块网卡分配一个IP地址的功能外,还可以根据既定的规则计算传输路径的优先级,找到数据包传输的最优路径。为了实现可靠传输,IP协议可以对数据进行分片,但实际完成分片操作的其实并不是IP协议,同样,IP协议对分片后的数据有重组功能。在将数据包分片之后,IP协议会在每个数据包的前面添加标识,以便可以实现对它们的重组。IP协议还可以根据数据链路层在每个数据包后添加的FCS(帧检验序列)来判断某个数据包在传输过程中是否产生了错误,进而通知传输层是否需要对指定数据包进行重传。除此之外,由于越来越多的智能设备接入了互联网,因而产生了传输机制不同的各类型局域网,IP协议需要负责协调各种类型的局域网,使它们统一工作。网络层的另一个重要协议是ARP协议,它的主要作用是转换IP地址和数据链路层的MAC地址。
我们发现,传输层和网络层都有对数据包进行分片的操作。那么,为什么分片操作要进行两次呢?难道这是冗余的操作吗?并不是这样的,从应用层中出来的数据在经过下面的三层时,都会在数据前面加上各层的头部,并且,网络层还存在以太网上最大传输单元(MTU)的规定。在传输层中对数据进行切分,目的是确保在通信过程中,即使网络中断,也可以通过重传某部分片段而不是全部数据的方式,来保证数据的完整性。网络层中的分片操作,则是因为数据包中的数据超出了MTU,目的是方便数据链路层上帧在以太网中进行传输。
数据链路层中的转发设备是交换机,交换机是在局域网中工作的,交换机并没有跨越局域网的功能。最常见的局域网类型是以太网,以太网中交换机只能识别MAC地址。MAC地址唯一对应着网卡,不会重复,不会发生改变。帧是数据链路层中数据包的名称,帧头和帧尾含有控制信息。其中,帧尾有着FCS(帧检验序列),目的计算机在收到数据后,可以通过对FCS进行计算校验,来判断数据在传输过程中是否发生了改变。
物理层就是可看得见的光纤、电缆等传输介质。物理层的主要作用是把帧转变为电信号、光信号在传输介质中传输。无论什么类型的数据,数据在传输过程中改变了多少形式,最终都是以电信号、光信号来传输的。
网络层和数据链路层有寻址的功能。区别是,网络层工作的路由器只认识IP地址,只能将数据从一个局域网,转发到另一个局域网。而数据链路层工作的交换机只认识MAC地址,可以将局域网中的数据转发到目的计算机中。
我们再来类比一下数据链路层、网络层和传输层的作用。传输层就是外卖公司,公司规定了送外卖的规则,告诉它的员工要如何规范送外卖。而网络层就是外卖小哥,外卖小哥会将外卖送到您的小区门口,他进不去小区,会被保安大爷阻拦。而数据链路层就可以是保安大爷或者是您,无论是他通知您去保安室取外卖,或者是他将外卖送到您的家里,不论哪种方式,您一定能将外卖取回家。
这是网络篇的第一篇文章,网络知识向来是复杂繁琐的,不过我会尽量做到以简明通俗的语言来描述网络知识。后面网络篇的其它文章,我们还要介络常见的网络协议,IP地址和MAC地址,网络中常见的转发物理设备,以及我们还要来看一看数据在网络中传输的完整过程。掌握扎实的网络知识,有助于我们后面理解网络传输中的安全问题。
标签:协议,细致,网络层,网络,局域网,传输,分层,IP地址 From: https://blog.csdn.net/2301_80659877/article/details/139533753