没别的,就聊聊网络参考模型

没别的,就聊聊网络参考模型

  • 系列文章目录
  • 零、前言
  • 一、OSI参考模型是什么?
  • 二、TCP/IP标准模型是什么?
  • 三、每一层的数据单元都叫什么?
  • 四、数据又是怎么封装的?
  • 五、数据传输过程是什么样的?
  • 六、结尾

系列文章目录

“没别的,就聊聊自动驾驶网络”


零、前言

生活中挺多事都习惯分个级别/层次。打游戏要分段位,买手机要分价位,上班分部门单位。网络也分了个层级,只是这网络有两种模型(等级制度),一个叫TCP/IP标准模型,一个叫OSI参考模型。(当然还有一种叫TCP/IP对等模型,只是在TCP/IP标准模型下细分了一点而已,一般还是用TCP/IP标准模型或者OSI参考模型来描述网络层次)


一、OSI参考模型是什么?

OSI(Open System Interconnect,开放式系统互连),是ISO组织在1985年研究的网络互连模型

它将网络分为七层:

层次 (从高到低) 功能
应用层 对应用程序提供接口
表示层 进行数据格式转换
会话层 通信双方建立、管理和终止会话
传输层 建立、维护和取消一次端到端的数据传输过程
网络层 定义逻辑地址
数据链路层 将分组数据封装成帧
物理层 在媒介上传输比特流
表1 OSI参考模型

OSI参考模型将网络细分为这么多层,一定程度上方面人们学习与了解网络的体系架构,同时也让设备厂商能更方便协同合作生产通信设备,毕竟在一个统一模型没落地之前,各个厂商只能自己自家制定自家的协议,形成一种我生产的设备你兼容不了,你生产的设备我兼容不了的尴尬场景。而每次公司/单位需要更换某些网络设备时就得把其余设备全部换新。除了统一要求换一家厂商之外,还得考虑设备的兼容问题。当然,OSI参考模型将网络分为这么多层次,对于硬件设备厂商生产与实现而言过于繁琐,所以才诞生出TCP/IP标准模型。

二、TCP/IP标准模型是什么?

之前提到的,OSI参考模型协议栈分层繁杂,但实际生产应用过程中,并不需要那么多层级。不如将模型简化,所以形成了如今的TCP/IP标准模型。

TCP/IP标准模型 OSI参考模型
应用层 会话层,表示层,应用层
传输层 传输层
网络层 网络层
数据接口层 物理层、数据链路层
表2 OSI模型与TCP/IP模型的比对

这么看上去,TCP/IP模型更关注于OSI参考模型的第三层(网络层)和第四层(传输层),再思考OSI参考模型中提到的“逻辑地址”和“端到端的数据传输过程”实际上就是IP与TCP/UDP。

当然,我们之前还提到过一个模型叫“TCP/IP对等模型”,这里我把三个模型放下面比对吧,其实差异也不大,只是在学习过程中会需要了解不同的层次有不同的数据表示方式。

没别的,就聊聊网络参考模型_第1张图片

图1 三种模型的层级对应关系

三、每一层的数据单元都叫什么?

每层都有每层的数据最小单元,而我们将这种数据叫PDU(Protocol Data Unit,即协议数据单元),每层的PDU名称都不一样,(按照TCP/IP对等模型来说):

  • 应用层:Data,数据
  • 传输层:Segment,段
  • 网络层:Packet,包
  • 数据链路层:Frame,帧
  • 物理层:Bitstream,比特流

四、数据又是怎么封装的?

  1. 当我们将想要发送的信息点击发送时,我们的终端设备会将信息处理,转换为编码后的数据,加上必要的信息,比如端口号(也就是对应一个应用),此时的便形成了应用层的数据(Data)
  2. 然后在数据(Data)的前面加一些数据,这里加上去的数据来确定你希望被提供的端到端连接服务(TCP连接/UDP连接),这样就形成了我们传输层的段(Segment)
  3. 确定了端口号,确定了需要建立的连接之后,再将IP信息写在段的前面,从而有了网络层的包(Packet)。
  4. 之前所有信息全部确定之后,还得加一个唯一标识符,就如同身份证编号一样,这个唯一标识符就是的MAC地址(Media Access Control Address),将MAC信息写到前面之后,在最末尾加上一个FCS(Frame Check Sequence,即帧校验序列),这就是数据链路层的帧(Frame)
  5. 最后一步就是将上面所有的东西转换成二进制,用bit表示上述所有信息,汇聚起来就是物理层的比特流(Bitstream)

数据接收端会反向一层层拆上去,直到露出最后的数据(Data),再以各种形式呈现在我们的屏幕上。

五、数据传输过程是什么样的?

数据封装好之后怎么将数据进行传输?这个时候就需要二层设备(工作在数据链路层的设备)与三层设备(工作在网络层的设备)协同工作,进行数据交换,比如常见的交换机(二层设备)和路由器(三层设备)。(暂不考虑三层交换机,这里的三层指具有路由功能,即具有工作在第三层网络层的能力)

上面说到在Packet前面加上了MAC相关信息,然后加了FCS做校验。而为什么说交换机(Switch)是二层设备呢,因为交换机在收到这一连串的比特流之后,它会检查数据帧中的前面的字段内容,要是交换机的MAC地址表中有这个数据的MAC地址,说明这个数据去的目的地就在交换机所管理的另外一个端口下面。就像它的英文名一样,它就是个转换器,假如MAC表有,交换机就帮你转发过去,要是没有呢?那就再往外发,把这个寻路操作留给路由器(Router),让路由器想办法找去,反正交换机的作用就是帮你把数据扔出去,但它可不管你这数据怎么走。

再看看路由器(Router),Route就是找路的意思,所以路由器直译一下就是“找路的机器或人”。路由器要想找到去往目的地的路,就得一直拆封装的数据,一直拆到第三层(网络层),看到包(Packet)的头部(前面加上去的数据)里都写了哪些东西,然后它就会按照配置的路由协议(规则)找路发出去,至于之后的事情,它也就不管了,比如这条路拥堵不拥堵等等因素,就没办法判断了。


六、结尾

因为在介绍协议之前,得让入门的朋友知道数据怎么封装以及传输过程中都经历了哪些事情,所以这里的内容还是很有需要的,虽然许多人可能在大学的《计算机网络》课程中已经学过了,但我也得先介绍,以方便刚好有需要的朋友。

上一篇 没别的,就聊聊数据通信网络

下一篇 没别的,就聊聊以太网和交换机

你可能感兴趣的:(没别的,就聊聊自动驾驶网络,网络,路由器,交换机)