概貌
互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
OSI是一个开放性的通行系统互连参考模型,他是一个定义得非常好的协议规范。他有七层,每层都可以有几个 子层。OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层(TCP在此层中) 3 网络层 2 数据链路层 1 物理层 其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。
实际上还有人把它划成五层、四层。
七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
五层划分为:应用层、传输层、网络层、数据链路层、物理层。
四层划分为:应用层、传输层、网络层、网络接口层。
由来
这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求。
物理层:物理层实现的事比特流与电信号之间的切换以及界定连接器与网线的规格。
科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。
于是,科学家发明了物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号,即010101…这些二进制位。
底层传输的010010101001…这些二级制位怎么才能让它有意义呢?
要让这些010010101001…有意思,人为的分组再适合不过了,8位一组,发送及接收都按照8位一组来划分。接收到8位为一组的话,那么就可以按照这8位数来做运算。如果没有分组,对方接收的计算机根本就不知道从哪一位开始来做计算,也解析不了收到的数据。我发了16位你就按照16位来做计算吗?我发100位你就按照100位做计算吗?没什么意义是吧。因此要想让底层的电信号有意义,必须要把底层的电信号做分组。我做好8位一组,那么我收到数据,我就知道这几个8位做一组,这几个8位做一组。那么每个8位就可以得到一个确定的数。分组是谁干的活呢?物理层干不了,这个是数据链路层干的。
数据链路层:互连设备之间的传送和识别数据帧,保证传输过去的比特流是正确的,提供错误检测和纠正,以确保数据的可靠传输
早期的时候,数据链路层就是来对电信号来做分组的。以前每个公司都有自己的分组方式