首页 理论教育以太网协议封装格式解析

以太网协议封装格式解析

【摘要】:网络层在接收到以太网驱动程序送到的IP数据报后,按照IP数据帧中的协议种类,对数据进行处理,去掉IP首部数据,形成TCP、UDP或ICMP报文进行处理。在TCP或UDP的函数处理中,根据目的端口号,分别将数据送往不同的用户程序。图9-12 以太网的封装格式前导:由芯片本身产生,用于同步收发双方的时钟,并指定传输速率。

1.以太网分层结构

TCP/IP协议为4层模型:应用层、传输层、网络层和数据链路层。每层都有不同的功能,而且层和层之间在逻辑上是相互独立的。每层都对应一些子协议,本设计用到的协议包括ARP、IP、TCP和ICMP等。

以太网分层结构如图9-10所示。

978-7-111-35607-3-Chapter09-15.jpg

图9-10 以太网分层结构

图9-10是按照TCP/IP协议的4层参考模型设计的,实际是以太网接收数据的流程,同时也体现了一种以太网分用的思想。链路层的以太网驱动程序负责接收以太网的数据帧,剥离以太网数据帧的首部信息,形成IP数据报或是ARP、RARP数据报,根据以太网数据帧的上层协议分别交付给上一层。如果是IP数据报,则被送交网络层。

网络层在接收到以太网驱动程序送到的IP数据报后,按照IP数据帧中的协议种类,对数据进行处理,去掉IP首部数据,形成TCP、UDP或ICMP报文进行处理。

传输层在得到UDP的报文后,按照UDP协议中的端口,分别送给不同的应用程序。若传输层得到的是TCP报文,则要根据TCP的状态转换图进行处理。

在TCP或UDP的函数处理中,根据目的端口号,分别将数据送往不同的用户程序。

根据以太网数据分用示意图,在编程的时候,使用如下的程序框架

978-7-111-35607-3-Chapter09-16.jpg

同样在IP处理程序中,采用同样的编程框架。

2.数据的封装

应用层的数据要想在以太网中进行传输,就必须按照以太网的帧格式进行封装发送,而且这是一个逐级封装的过程,数据封装过程如图9-11所示。

978-7-111-35607-3-Chapter09-17.jpg(www.chuimin.cn)

图9-11 数据封装示意图

由于TCP/UDP等协议都可以向网络层传输数据,因此IP数据报中必须对IP的上层协议进行标识。网络层的IP协议,以及ARP协议都可以向链路层传输数据,因此也必须在以太网的帧首部中加以指明数据的来源类型域。

TCP/IP协议包括很多的子协议,由于单片微控制器的资源有限,只实现了其中的部分协议,并对部分协议作了改动。

3.以太网的封装格式

以太网的封装格式如图9-12所示。

978-7-111-35607-3-Chapter09-18.jpg

图9-12 以太网的封装格式

前导:由芯片本身产生,用于同步收发双方的时钟,并指定传输速率。

目的地址(DA):以太网网数据帧传输的目的地址,为48位二进制地址,全1时表示广播地址。

源地址(SA):以太网网数据帧传输的源地址48位,表明该帧的数据的出发点,即发送端的地址。

帧格式(TYPE):类型字段,表明该帧数据的类型。如IP包的数据类型为0800H,ARP包的数据类型为0806。

数据:以太网规定整个数据包的最大长度为1514个字节,因此数据段不能超过1500个字节。

CRC及填充位:以太网规定整个数据包必须大于60个字节,不足60个字节,用任何数据补足。