FPGA学习之以太网接收发送功能实现(OSI网络分层)(一)

FPGA学习之以太网接收发送功能实现(OSI网络分层)(一)

1. ISO提出的OSI

在学习FPGA的以太网功能实现之前,首先必须了解究竟什么是网络?

目前有一种网络模型被国际上广泛接受,并且能够以抽象的方式来描述现在和未来网络的模型,这就是ISO组织提出的OSI模型。

ISO组织认为必须建立一个设计网络协议时可以使用的模型。从这句话中得知,ISO提出的OSI模型是为协议设计服务的,这是一个大的模型框架,OSI模型包括了各种基本的网络功能,在应用到各个协议设计时将会产生各自协议的网络模型,例如TCP/IP协议模型。

1.1 7层OSI模型

在这里插入图片描述

上图中诠释了:每一层都不能存在真空之中,比如传输层它必须对上下两层的情况有所了解掌握,并且能够与这些层进行通信。

在OSI模型的详细说明中,ISO没有为模型设定任何特定的网络标准,这就是前文所说的OSI是一个大的模型框架。

OSI参考模型对各层作用做了一个粗略的界定,许多通信协议,都对应OSI参考模型7个分层中的某层。

正因为如此,OSI模型是开放和健硕的,能够用于现有网络规范和设计出未来网络的标准,这就是ISO组织的本意。

1.2 OSI模型各层作用

在这里插入图片描述

在这里插入图片描述

术语解释:

节点:节点就是连接到网络上的任何一台设备,通常情况下,节点指的是计算机。

先从最底层的物理层看起:

1.2.1 物理层

从上图中看,该层负责0,1比特流(0,1序列)与电压的高低,光的闪灭之间的互换。

这是网络模型的底层,是建立后面各层的基础,物理层也可称为硬件层,硬件是指计算机,网络电缆或连接两台或更多计算机时选择使用的任何物理设备。

1.2.2 数据链路层

该层负责将物理层转换的0,1序列划分为具有意义的数据帧传送给对端。(即数据帧的生成和接收。)

在物理层上建立物理连接的目的是将数据送到这个链接上,数据链路层就是起这个作用。

假设有一组数据,在物理层之上传输,数据链路层必须建立一个能够容纳这些信息的数据包,识别负责接收数据的节点目的地,并且提供低级的错误检查功能。

1.2.3 网络层

该层负责寻址和路由选择,即如何将数据传输到目的地址,其中目的地址可以是多个网络通过路由器连接而成的某一个地址。

在数据链路层安装就绪后,并必须拥有相应的逻辑来将信息传送到网络上不同的节点,但是网络上由许多不同的节点组成,这些节点使用不同的物理层和数据链路层。

1.2.4 传输层

该层起到可靠传输的作用,图中举例是否有数据丢失,它是在通信的双方节点上进行处理,不是在路由器上处理。

传输层解决的主要问题就是确定所接收的数据确实是我们应该要接受的数据。

因为在网络传输中,同一时刻传输的数据量是有限的,因此传输层会把得到要发送的数据拆分成独立的数据包,在接受节点的传输层,再将这些数据包组成完整的信息。

1.2.5 会话层

该层负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理。即图中表示的何时建立连接,何时断开连接,以及保持多久的连接。

1.2.6 表示层

该层主要是负责数据类型格式的转化,具体来说,可以将应用层的处理信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能够处理的格式。

1.2.7 应用层

为应用程序提供服务并规定应用程序中通信的相关细节,包括文件传输,电子邮件,远程登录(虚拟终端等协议)

1.3 OSI模型通信过程

基于OSI模型,我们可以利用网络把数据从一个地方传送到另一个地方,下图就是基于OSI模型的数据发送,通过实例来讲解数据传输在网络中的处理。

在这里插入图片描述

从上图看出,当发送端主机A从应用层,表示层到物理层由上至下按照顺序传输数据,而接收层则从物理层,数据链路层到应用层由下至上的想每个上一级分层传输数据。

每个分层在处理由上一层传过来的数据时可以附上当前层的协议所必需的的“首部”信息,然后接收端对收到的数据进行数据“首部”与内容的分离,再转发给上一层,并最终将1发送端的数据恢复原状。

假如用户A要给用户B发送“早上好”的邮件,网络会怎样进行处理呢?理解每一层给数据附加的首部信息是何含义?理解首部信息其实就是每一层应该要做的信息处理职责。

1.3.1 应用层

在这里插入图片描述

用户A会在主机A上编辑邮件内容为“早上好”,指定收件人为用户B;

即“用户输入邮件内容后发送给目标地址”这就相当于应用层。

在点击“发送”按钮的那一刻,就进入了应用层协议的处理。

该层协议会在“早上好”的前端附加一个首部信息,主机B的应用层收到由主机A发送过来的数据后会分析数据首部和数据正文,并将邮件保存。

1.3.2 表示层

在这里插入图片描述

发送端表示层会将应用层传输下来的“早上好”这段文字根据其编码格式被转换成为“统一的网络数据格式”,而接收端会将转换成的“统一的网络数据格式”再恢复成“主机B特定的数据格式”,然后在进行相应处理,否则在接收端收到的邮件内容就是乱码。

而且表示层和表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层处理。

1.3.3 会话层

在这里插入图片描述

会话层也像应用层或表示层那样,在其收到“早上好”数据前端附加首部信息后再转发给下一层。

会话层首部信息会记录数据传送顺序等相关信息。

到此为止,上面的例子说明了在应用层写入数据会经过表示层格式化编码,再由会话层标记发送顺序后才被发送出去的大致过程,知道会话层只是对何时建立连接,何时发送数据等问题进行管理,实际上并不具备实际传输数据的功能,真正负责网络传输具体数据的是会话层以下的分层。

1.3.4 传输层

在这里插入图片描述

在这一层会确保所传输的数据能够到达目标地址。

比如,主机A将“早上好”发送给主机B,期间可能存在某些原因导致数据被破坏,或者只有一部分数据到达主机B。

假设主机B只收到了“早上”这一部分数据,那么它会在收到数据后将自己没有收到完整数据的信息告知主机A,主机A得知这一消息后会将后面的“好”数据重发给主机B,并确认主机B是否收到。

因此传输层一个重要作用就是确保数据传输的可靠性。

为了确保这一可靠性,也会在传输的数据附加首部信息以识别这一分层的数据,实际上将数据传输给对端的处理是由网络层来完成的。

1.3.5 网络层

在这里插入图片描述

发送端网络层是在众多网络节点中,寻找主机B目标地址,将数据从发送端主机发送到接收端主机B。
网络层会将从上层收到的数据和目标地址信息等一起发送给下面的数据链路层,进行后面的处理。

在这里插入图片描述

上图可以看出网络层与数据链路层的最大区别,因为网络层和数据链路层都是基于目标地址将数据发送给接收端。

但是网络层负责的是数据接收的最终地址即主机B目标地址,而数据链路层则只负责发送一个分段内的数据,例如主机A与主机B之间存在多层路由器或交换机。

1.3.6 数据链路层及物理层

在这里插入图片描述

首先我们要明确通信传输实际上是通过物理的传输介质实现的,数据链路层的作用就是在这些通过传输介质相连的设备之间进行数据处理。

物理层中,将数据的0,1转换成为电压和脉冲光传输给物理的传输介质,相应直连的设备之间使用地址实现传输,这种地址称为MAC地址。

采用MAC地址,目的是为了识别连接到同一传输介质上的设备,因此,在这一分层中将包含MAC地址信息的首部附加到从网络层转发过来的数据,将其发送到网络上。

1.3.7 主机B的处理

上面图片可以看出接收端主机B上的处理流程正好与主机A相反,它从物理层开始将接收到的数据逐层发给上一分层来进行处理,从而使用户B最终在主机B上使用邮件应用来接收用户A发送过来的邮件,并读取邮件内容“早上好”。

猜你喜欢

转载自blog.csdn.net/sinat_41653350/article/details/106524588