计算机网络-体系结构[#3]

前言

前面两篇我们分别介绍了计算机网络中的网络类别和基础的性能指标,基本上算是对我们平时生活中的计算机网络的概念描述的一种完善,接下来我们将会正式详细地去了解有关计算机网络的原理。

但是问题来了,我们该从哪里去入手呢?

其实很简单,就像生活中我们到了景区一样,要想知道从那里开始游玩以及终点,我们必须先看下整个景区的分布总览,也就是导航地图;放到技术学习上也是一样,在之前的Spring源码解析中也提到过,要先得看整个技术的架构设计,也就是纲领性总结,这样我们才能每一步踏上的都是正确的路线。

而在计算机网络中,这个纲领性总结就是计算机网络的体系结构。

体系结构

计算机网络的体系结构其实就是对整个网络组成的不同部分所完成的功能的一种定义,一种逻辑上的抽象。那我们来看看怎么去划分的呢?

首先,计算机网络的体系结构不仅仅只有一种划分标准,主要可以分为下面三种:

  • OSI七层体系结构
  • TCP/IP四层体系结构
  • 常见的五层体系结构

OSI七层体系结构

它是法律上的国际标准,它的由来是,在最早期计算机网络出现时候,不同公司都对计算机网络体系进行了研究,同时分别提出了各自所划分的体系结构,老话说没有规矩不成方圆,所以这时候ISO这个组织机构就站出来专门研究这个问题,然后提出了一个国际化的标准,叫开放系统互联参考模型OSI/RM(Open System Interconnection / Reference Model),也就是七层体系结构。

它提出的体系结构如下,

image-20211227171752220

能看到它将网络体系结构从上到下分为七层,其中每一层都拥有各自的网络协议,负责完成一定部分的功能,同时每一层都为上一层提供基础服务。那我们先简单来看看各层是怎么样定义的,以及完成什么样的功能:

  • 物理层 :首先它是最底层,也代表了是网络通信的物理基础,它定义了各种物理通信设备的规范,规定了机械电气功能等特性,是用来建立、维护和拆除物理链路的连接;通俗的说它的主要作用是用来解决网络设备和通信线路直接的接口问题,用来传输比特数据流。
  • 数据链路层 :它在物理层提供的功能基础上,用来建立相邻网络节点之间的数据链路,通过差错控制提供数据帧在信道上的透明传输。
  • 网络层 :负责在网络数据传输中选择合适的网间路由和交换节点,确保数据尽可能及时的传送。
  • 传输层 :负责为两个主机进程之间的通信提供服务,有通信连接分用和复用的功能。
  • 会话层 :不参与具体的数据传输,只负责包括访问验证和会话管理在内的建立和维护应用之间通信的机制,像用户登录验证等功能。
  • 表示层 :负责解决用户信息的语法表示问题,提供数据格式化和转换的服务,像数据的解压缩、加解密等功能。
  • 应用层 :直接为用户的应用进程提供服务,像超文本传输、文件传送、电子邮件等协议。

从上面可以看到,这一体系结构对计算机网络进行了很详细的划分,每一层都相互独立,拥有各自的功能,理论上来说,这套标准已经足够用于现实情况,那为什么还会出现后面其它的划分呢?

这是由于有几个原因,首先制定标准周期太长,以致于现实中已经有一套受行业认可的标准,其次划分的层次过于详细,是由理论分析再到市场推广,实现起来较为复杂,同时运行效率低,最后由于是国家组织机构定义,缺乏商业的驱动力。

TCP/IP四层体系结构

上面介绍了国际标准的七层体系结构,最终却不受行业认可和流行,其中讲到的另外一套行业认可的标准就是TCP/IP四层体系结构,它与OSI标准不同的是,它是在现实情况当中,针对实际发生的问题,从而提出不同的解决方案,最后总结划分而来。

它的结构划分如下,

image-20211228103910996

显而易见,四层体系结构要比七层来的简单清晰,也可以看到它们非常相似,其实本质上分层所拥有的功能相差不大,主要的区别是TCP/IP标准主要解决的是网络和网络之间的连接通信问题,所以它在底层物理设备和上层应用资源没有进行详细的区分,而是以网络接口层和应用层作为代表来代替。

它的主要特点是以网络层的IP为核心,通过传输层的TCP、UDP协议进行通信,从而可以应用到任何网络之上,向任何应用提供服务。

常见的五层体系结构

既然根据实际情况,TCP/IP已经能满足需求了,那为什么还有所谓的五层体系结构?那是因为TCP/IP对底层网络接口层并没有描述具体的内容,也就是局域网当中网络是怎么实现的,因此在具体学习的时候对他们采取折中的方法,综合各自的优点,划分了这样的一种五层体系结构。

它的结构划分如下,

image-20211228112350314

能看到,它将TCP/IP的四层体系结构中的网络接口层拆分成更具体的数据链路层和物理层,也就是OSI中的底层划分,这样既考虑到了网络在局域网之间的通信实现,又考虑到了不同的局域网之间的跨网络通信的实现,更加贴合现实中从发送端到接收端的网络传输通信情况,所以后面对于计算机网络也会以五层体系结构为标准来进行介绍。

传输过程

了解完上面的体系结构之后,我们对计算机网络的整体架构已经有了个轮廓,那我们再来看看网络数据是怎么在五层结构之间进行传输的,先看下面的流程图:

image-20211228161655193

能看到整个网络数据的基本传输过程大概如下:

  1. 计算机A的应用进程产生数据并发送;
  2. 应用层会将发送的数据添加首部信息并封装到应用层协议中,再传输给运输层;
  3. 传输层将应用层协议添加首部信息并封装到传输层协议中,再传输给网络层;
  4. 网络层将传输层协议添加首部信息并封装到网络层协议中,再传输给数据链路层;
  5. 数据链路层将网络层协议添加首部信息并封装到数据链路层协议(数据帧)中,再传输给物理层;
  6. 物理层拿到数据链路层协议数据之后,将其转为比特数据流在传输介质上传输到目的计算机B;
  7. 计算机B接收数据之后,根据上面过程对比特数据逆向解析,最终还原为原始的应用进程数据到应用进程中。

在上面过程当中我们能看到两个特点:一个是垂直服务,每个分层提供的功能服务是通过层间的接口由下层向上层提供的;另一个是水平协议,每个对应分层都控制着同等的通信规则,也就是协议。

网络协议

通过上面的网络数据的基本传输过程,我们能看到每层数据的封装和解析离不开一个重要的东西:网络协议。

那什么是网络协议呢?它是精确规定在网络通信中使用的各种控制信息的格式、意义以及各种事件出现的先后顺序,通俗的说就是定义数据传输的标准格式。

各个分层都拥有各自的网络协议格式,它们的结构也是各不相同,但是在网络协议中,它们都有三个重要组成要素:

  • 语法:数据信息的结构或者格式。
  • 语义:语法所代表的含义,需要做出什么样动作和响应。
  • 同步:处理过程中一些事件的实现顺序的详细说明。

在实际网络通信开发中,其实最重要的就是对网络协议的封装和解析,既有简单的公有协议,又有复杂的私有协议,相信在以后的开发路上你会慢慢接触到的,后面我们会针对每个分层进行更详细的介绍和说明,同时会更具体的分析每层协议的格式以及协议中标志位的含义。


身未动,心已远。

把一件事做到极致就是天分!

你可能感兴趣的:(计算机网络-体系结构[#3])