OSI七层参考模型

1,296 阅读6分钟

一、协议的重要性

计算机之间要实现通信,除了技术支持还需要一些规则来进行信息匹配,方能进行交流。不同的厂商生产不同的计算机,其CPU等内部构造不尽相同,就好比两个外国人,那么计算机或者说外国人之间需要实现通信或交流,那么两者之间就需要学会同一种交流规则,对于两个外国人来说,这种交流规则就是语言,而对于计算机来说,这种交流规则就是各种协议。协议的出现让不同厂商之间生产的计算机只要能够支持同一种协议就能实现正常通信,进行交流。

二、为什么要将协议分层

计算机通信系统是非常复杂并且庞大的,根据通信功能对其进行分层解耦,这样就可以构造一个拓展性和灵活性都比较强的通信系统。此外,通过分层可以细分通信功能,更易于单独实现每个分层的协议,界定各个分层的具体责任和义务

定义:在七层模型中,每个分层都接受由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务,上下层之间进行交互所遵循的约定叫做“接口”,同一层之间的交互所遵循的约定叫做“协议”

OSI参考模型只是一个模型,对各层只做了粗略的定义,并没有对接口和协议做详细的定义,想深入了解还需要学习具体的协议规范。

三、七层模型

下载.png
各层功能描述
下载 (1).png

1.物理层

通过一些物理手段(例如:网线,无线电波,光)来传送0/1比特流

2.数据链路层

当我接收到一连串的0和1信号时,我怎么知道它代表了什么意思呢?这就需要根据某种协议来解读每一个信号的意义,而数据链路层就是规定信号的传输格式

2-1 以太网协议

将信号进行分组,每一组称为帧,每一数据帧分成:报头head和数据data两部分

微信截图_20200610084602.png
head包含:(固定18个字节)

  • 发送者(源地址,6个字节)
  • 接收者(目标地址,6个字节)
  • 数据类型(6个字节)

data包含:(最短46字节,最长1500字节)

  • 数据包的具体内容

head长度+data长度=最短64字节,最长1518字节,超过最大限制就分段发送。 这就像是网购快递,head就是物流信息,data就是实际的物品,有时候一次买太多商家就会分成多个快递邮寄过来

2-2 MAC地址

上面说到,以太网的head部分包含了发送者和接收者的地址信息。那么,两者的地址是如何确定的?

以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。

每一块网卡出厂的时候都有一个全世界独一无二的MAC地址,长度为48位2进制,通常由十二位16进制数表示(前六位是厂商编码,后六位是流水线号)

bg2012052906.png

3.网络层

网络层Network Layer)是OSI模型中的第三层(TCP/IP模型中的网际层),提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。相当于发送邮件时需要地址一般重要。由于TCP/IP协议体系中的网络层功能由IP协议规定和实现,故又称IP层。

如果两个设备同属于一个局域网,那么依靠MAC地址就可以实现通信,而不同局域网之间的设备通信就需要用到IP地址来寻找另一台设备来建立通信

3.1 IP数据包

数据在IP互联网中传送时会被封装为数据包,从下图可以看出来,IP数据包会在链路层被包含到以太网的data部分

微信截图_20200610105156.png
IP数据包同样分为head和data,head主要包括版本、长度、IP地址等信息,data部分包含着数据的具体内容。 IP数据包的head部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的data部分,最长为65,515字节。前面说过,以太网数据帧的data部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据帧,分开发送了。

4.传输层

链路层和网络层通过MAC地址和IP让在互联网上两台任意的主机建立了通信,但是主机上运行了多个应用程序,当主机接收到数据后并不知道应该将数据提供给哪个程序,这就需要一个标识,而这个标识就是端口。 "端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

4.1传输层的数据包

微信截图_20200610113507.png
同样包含head和data 被包装到网络层data中

5.会话层

通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)   

6.表示层:将数据格式转换为标准格式

  将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式;主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取。具体来说,就是将设备固有的数据格式转换为网络标准传输格式,不同设备对同一比特流解释的结果可能会不同;因此,主要负责使它们保持一致

7.应用层

直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。 针对不同的应用程序规定不同的数据格式

  • 超文本传输协议HTTP
  • 文件传送协议FTP
  • 简单邮件传送协议SMTP
  • DNS域名解析协议
  • ....

四、五层模型

一般不会单独去实现会话层和表示层,都是和应用层一起去实现,所以也可以将会话层,表示层,应用层可以合并为一个层。

参考