最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

第三章 网络芯片的驱动

IT圈 admin 26浏览 0评论

2024年5月26日发(作者:琴书桃)

第三章 网络芯片的驱动

从最底层驱动来看,单片机是怎么从物理线路上接收到数据?接收的又是

什么样的数据?通过对本章以太网帧管理和网络芯片驱动的介绍,可以了解数据

是怎样上送和下发的,从而了解物理层和数据链路层的工作原理。

3.1 以太网的帧结构

现在是网络时代,大家都喜欢在网上冲冲浪。但电脑能上网的前提条件是电

脑硬件中必须有网卡,如板载网卡、独立网卡、或无线网卡等。网卡是电脑与

网络相互连接的必需设备。

单片机要上网,无疑也需要一个网卡。网卡的功能主要有:一是将需要发送

的数据封装成物理传输帧,并通过网线(或电磁波)发送到网络上去;二是识别和

接收网络上其它设备传过来的物理传输帧,并组合成数据提供给本机CPU。网

线中传输的是电信号,因此网卡具备将数据转化为电信号发出去,并将网线上的

电信号解析成数据的功能。同时,要想电信号都能被其它网卡解析和接收,网卡

必须满足网络传输规定的机械和电气规范。

从TCP/IP的协议分层的结构上看,网卡至少完成物理层的功能。但为了方

便控制器的使用,现在的网卡还将数据链路层的功能集成到芯片中。网卡能起到

过滤作用,只接受广播帧/组播帧或专门发往本机物理地址的数据帧,对本网络

上的其余帧不予理会。网卡接收到一帧完整的数据后,就可以将数据交给网络层

处理。

对于使用网卡的开发者来说,对网卡的物理结构,硬件检测机制和冲突退避

算法不需深究,主要要了解下相应的物理传输帧结构。根据组建的网络类型不同

(如以太网,令牌环网等)和使用的底层网络协议不同,帧结构也不相同。就常

用的以太网来说,也有Ethernet_II,IEEE 802.3,IEEE 802.2等协议。我们以IEEE

802.3数据帧来分析数据链路层和网卡的工作内容。

IEEE 802.3是电气和电子工程师协会(IEEE)制定的一种描述物理层和数据

链路层的实现方法的网络协议,主题是在多种物理媒体上以多种速率采用

CSMA/CD访问方式。其规定的帧结构如下:

表3-1 以太网(802.3)帧结构

PR SD DASA LENGTH/TYPE

16位

DATA

n ≤1500(字节)

PAD

可选

FCS

32位 56位 8位 48位 48位

表一 以太网(802.3)帧结构

FR(前导码):包括了7个字节的二进制“1”、“0”间隔的代码,即1010…10

共56位。当帧在链路上传输时,接收方就能建立起同步,因为这种“1”、“0”间

隔的传输波形为一个周期性方波。同时也指明了传输的速率(10M和100M的方

波频率不一样,所以100M网卡可以兼容10M网卡)。

SD(帧数据定界符):它是长度为1个字节的10101011二进制序列,此码

表示表示下面跟着的是真正的数据。

DA(目的地址):目的以太网的物理地址,由48位二进制组成(6个字节),

说明该帧传输给哪个网卡。如果地址为FFFFFFFFFFFF(广播地址),则该网络

1

上的所有网卡都能接收到本帧数据。这个地址和下面的SA就是我们常说的网卡

的MAC地址。具体信息我们待会介绍。

SA(源地址):48位,说明该帧的数据是哪个网卡发的,即发送端的网卡物

理地址(MAC)。

LENGTH/TYPE(长度/数据类型):指示后面的数据属于什么类型。如0800H

表示数据为IP包,0806H 表示数据为ARP包。这样,交给网络层后就可以由相

应的协议对后面的数据解析。如果这个字段小于0600H的值,则表示数据包的

长度,在单片机的网络编程中不考虑这种用法。

DATA(数据段):由网络层负责发送和解析的数据,因为以太网帧传输的数

据包最小不能小于64字节,最大不能超过1518字节。除去14字节为DA、SA、

TYPE以及4字节的FCS,DATA不能超过1500字节。如果不够46(64-18)

字节,余下的由PAD填充。

PAD(填充位):当DATA的数据不足46字节时,缺少的字节需要补上(可

补任意值)。

FCS(帧校验序列):由32位(4字节)循环冗余校检码(CRC)组成,其

校验范围不包括前导码FR及帧数据定界符SD。此序列由发送端网卡自动生成,

自动填充到帧的最后。一般情况下,接收端网卡对收到的数据校验后也不会将

FCS放到数据中上报。

由于网卡的自动管理,并且前导码FR和帧数据定界符SD的值是固定的,

也由网卡自动生成和插入。所以,网络层向网卡发送的数据或者网络层接收到的

数据一般是由DA、SA、TYPE和DATA组成(DATA不足46字节需要用PAD

补齐)。如表二。假如网络层的一个IP包要发送出去,首先要填充接收网卡的地

址和本网卡的地址(MAC地址),同时将TYPE填充成0800H,紧跟着就是发送

的数据。网卡获取到这些数据后会组成物理传输帧发送出去。

表3-2 网络层管理的帧结构

DA SA TYPE DATA PAD

48位 48位 16位 n ≤1500(字节) 可选

由以太网的帧结构知道,在数据链路层就需要使用MAC地址(即物理地

址)进行通讯,MAC地址是数据的第一道关卡,由硬件自动识别来接收。因此,

MAC地址就像是是网络设备的“身份证”一样,需要具有全球唯一性。我们在

实验室里做测试,可以修改MAC地址,但也应该保证本地网络里MAC的唯一

性。

以太网的MAC地址由48bit (6字节)组成,如08:02:10:3A:85:23就是一个

MAC地址。前24位(08:02:10)是由生产网卡的厂商向IEEE申请的厂商地址,

后24位(3A:85:23)是由厂家自己分配。每个厂商必须确保它所制造的每个以

太网设备都具有相同的前三个字节以及不同的后三个字节,这样就可保证世界上

每个以太网设备都具有唯一的MAC地址。网卡的MAC地址通常是由生产厂家

烧入网卡的EPROM中(NE2000系列网卡常用93C46,在网卡上可以找到)。

MAC地址又可以分成3类:

(1)广播地址:只能用作目的地址。如果一个以太网帧的目的地址是广播

2

2024年5月26日发(作者:琴书桃)

第三章 网络芯片的驱动

从最底层驱动来看,单片机是怎么从物理线路上接收到数据?接收的又是

什么样的数据?通过对本章以太网帧管理和网络芯片驱动的介绍,可以了解数据

是怎样上送和下发的,从而了解物理层和数据链路层的工作原理。

3.1 以太网的帧结构

现在是网络时代,大家都喜欢在网上冲冲浪。但电脑能上网的前提条件是电

脑硬件中必须有网卡,如板载网卡、独立网卡、或无线网卡等。网卡是电脑与

网络相互连接的必需设备。

单片机要上网,无疑也需要一个网卡。网卡的功能主要有:一是将需要发送

的数据封装成物理传输帧,并通过网线(或电磁波)发送到网络上去;二是识别和

接收网络上其它设备传过来的物理传输帧,并组合成数据提供给本机CPU。网

线中传输的是电信号,因此网卡具备将数据转化为电信号发出去,并将网线上的

电信号解析成数据的功能。同时,要想电信号都能被其它网卡解析和接收,网卡

必须满足网络传输规定的机械和电气规范。

从TCP/IP的协议分层的结构上看,网卡至少完成物理层的功能。但为了方

便控制器的使用,现在的网卡还将数据链路层的功能集成到芯片中。网卡能起到

过滤作用,只接受广播帧/组播帧或专门发往本机物理地址的数据帧,对本网络

上的其余帧不予理会。网卡接收到一帧完整的数据后,就可以将数据交给网络层

处理。

对于使用网卡的开发者来说,对网卡的物理结构,硬件检测机制和冲突退避

算法不需深究,主要要了解下相应的物理传输帧结构。根据组建的网络类型不同

(如以太网,令牌环网等)和使用的底层网络协议不同,帧结构也不相同。就常

用的以太网来说,也有Ethernet_II,IEEE 802.3,IEEE 802.2等协议。我们以IEEE

802.3数据帧来分析数据链路层和网卡的工作内容。

IEEE 802.3是电气和电子工程师协会(IEEE)制定的一种描述物理层和数据

链路层的实现方法的网络协议,主题是在多种物理媒体上以多种速率采用

CSMA/CD访问方式。其规定的帧结构如下:

表3-1 以太网(802.3)帧结构

PR SD DASA LENGTH/TYPE

16位

DATA

n ≤1500(字节)

PAD

可选

FCS

32位 56位 8位 48位 48位

表一 以太网(802.3)帧结构

FR(前导码):包括了7个字节的二进制“1”、“0”间隔的代码,即1010…10

共56位。当帧在链路上传输时,接收方就能建立起同步,因为这种“1”、“0”间

隔的传输波形为一个周期性方波。同时也指明了传输的速率(10M和100M的方

波频率不一样,所以100M网卡可以兼容10M网卡)。

SD(帧数据定界符):它是长度为1个字节的10101011二进制序列,此码

表示表示下面跟着的是真正的数据。

DA(目的地址):目的以太网的物理地址,由48位二进制组成(6个字节),

说明该帧传输给哪个网卡。如果地址为FFFFFFFFFFFF(广播地址),则该网络

1

上的所有网卡都能接收到本帧数据。这个地址和下面的SA就是我们常说的网卡

的MAC地址。具体信息我们待会介绍。

SA(源地址):48位,说明该帧的数据是哪个网卡发的,即发送端的网卡物

理地址(MAC)。

LENGTH/TYPE(长度/数据类型):指示后面的数据属于什么类型。如0800H

表示数据为IP包,0806H 表示数据为ARP包。这样,交给网络层后就可以由相

应的协议对后面的数据解析。如果这个字段小于0600H的值,则表示数据包的

长度,在单片机的网络编程中不考虑这种用法。

DATA(数据段):由网络层负责发送和解析的数据,因为以太网帧传输的数

据包最小不能小于64字节,最大不能超过1518字节。除去14字节为DA、SA、

TYPE以及4字节的FCS,DATA不能超过1500字节。如果不够46(64-18)

字节,余下的由PAD填充。

PAD(填充位):当DATA的数据不足46字节时,缺少的字节需要补上(可

补任意值)。

FCS(帧校验序列):由32位(4字节)循环冗余校检码(CRC)组成,其

校验范围不包括前导码FR及帧数据定界符SD。此序列由发送端网卡自动生成,

自动填充到帧的最后。一般情况下,接收端网卡对收到的数据校验后也不会将

FCS放到数据中上报。

由于网卡的自动管理,并且前导码FR和帧数据定界符SD的值是固定的,

也由网卡自动生成和插入。所以,网络层向网卡发送的数据或者网络层接收到的

数据一般是由DA、SA、TYPE和DATA组成(DATA不足46字节需要用PAD

补齐)。如表二。假如网络层的一个IP包要发送出去,首先要填充接收网卡的地

址和本网卡的地址(MAC地址),同时将TYPE填充成0800H,紧跟着就是发送

的数据。网卡获取到这些数据后会组成物理传输帧发送出去。

表3-2 网络层管理的帧结构

DA SA TYPE DATA PAD

48位 48位 16位 n ≤1500(字节) 可选

由以太网的帧结构知道,在数据链路层就需要使用MAC地址(即物理地

址)进行通讯,MAC地址是数据的第一道关卡,由硬件自动识别来接收。因此,

MAC地址就像是是网络设备的“身份证”一样,需要具有全球唯一性。我们在

实验室里做测试,可以修改MAC地址,但也应该保证本地网络里MAC的唯一

性。

以太网的MAC地址由48bit (6字节)组成,如08:02:10:3A:85:23就是一个

MAC地址。前24位(08:02:10)是由生产网卡的厂商向IEEE申请的厂商地址,

后24位(3A:85:23)是由厂家自己分配。每个厂商必须确保它所制造的每个以

太网设备都具有相同的前三个字节以及不同的后三个字节,这样就可保证世界上

每个以太网设备都具有唯一的MAC地址。网卡的MAC地址通常是由生产厂家

烧入网卡的EPROM中(NE2000系列网卡常用93C46,在网卡上可以找到)。

MAC地址又可以分成3类:

(1)广播地址:只能用作目的地址。如果一个以太网帧的目的地址是广播

2

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论