lwip - 链路层收发以太网数据帧

1、以太网帧结构

  数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为数据帧,数据帧的封装的信息决定了数据如何传输。
  以太网中传输的帧有两种格式,IEEE 802.3 和 Ethernet II,选择哪种格式由TCP/IP协议簇中的网络层决定。

2、Ethernet II

在这里插入图片描述

  • 目的地址和源地址均为 48bit 的 MAC 地址
  • 类型字段:指明了承载的上层协议的类型, 常见的值有
    • 0x800 IP
    • 0x806 ARP
    • 0x86dd IPv6
  • 数据字段:数据字段为承载的上层协议的数据, 长度为46~1500byte, 即使数据不够46byte, 也要填充到46byte。以太网的最大传输单元(MTU)是1500字节。这意味着如果IP数据报超过了1500字节,则主机必须将该数据报分片。当采用填充时,传递到网络层的数据包括数据报和填充部分,网络层使用IP数据报首部中的长度字段来去除填充部分。
  • 32bit CRC校验, 校验从 “目的地址” 到 “数据” 的内容

  以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,ARP 和 RARP 数据包的长度不够 46 字节,要在后面补填充位。最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU 了,则需要对数据包进行分片(fragmentation)。ifconfig 命令的输出中也有“MTU:1500”。

  注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度

3、IEEE 802.3

在这里插入图片描述

  • Length 字段取代了 Ethernet_II 中的 Type 字段,它定义了 Data 字段包含的字节数。
  • LLC:Logical Link Control,逻辑链路控制由目的访问点 D.SAP (Destination Service Access Point)、源服务访问点 S.SAP(Source Service Access Point)和 Control 字段组成。Control 字段:无连接或面向连接的LLC, 基本不使用, 一般被设为0x03,指明采用无连接服务的802.2无编号数据格式
  • IEEE802.3 帧根据 D.SAP 和 S.SAP 字段的取值不同,可分为以下几类:
    • 当 D.SAP 和 S.SAP 都取特定值 0xFF 时,802.3 帧就变成了 Netware-Ethernet 帧,用来承载 NetWare 类型的数据;
    • 当 D.SAP 和 S.SAP 都取特定值 0xAA 时,802.3 帧就变成了 Ethernet_SNAP 帧,可用于传输多种协议。
    • D.SAP 和 S.SAP 其它的取值均为纯 IEEE802.3 帧。

  IEEE802.3/802.2 SNAP 在 IEEE802.3/802.2 LLC 的基础上, 扩充了 LLC header。帧格式如下图:

在这里插入图片描述

  • SNAP:Sub-network Access Protocol,子网访问协议由机构代码(Org Code)和类型(Type)字段组成。Org Code 通常与源mac地址的前三个bytes相同, 为厂商代码。Type 字段的含义与 Ethernet_II 帧中的 Type 字段相同。

4、不同帧格式的区分

  • 检查帧中“源MAC”字段后面的2byte(在Ethernet II中为协议类型, 在其它帧中为 数据长度), 若大于 0x05dc(即10进制的1500), 则为 Ethernet 帧
  • 继续比较后面的2个byte, 如果为0xFFFF则为Novell Ether 类型的帧。如果为 0xAAAA 则为 IEEE802.3/802.2 SNAP 帧, 否则, 为 IEEE 802.3/802.2 LLC 帧
  • 这些以太网帧可以共存于一个网络中,但互不兼容,当用不同封装类型的工作站要交换信息时,必须通过支持的路由器来通信
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F1是意法半导体公司推出的一款32位ARM Cortex-M3单片机系列产品,具有良好的性能和扩展能力。它采用了低功耗技术,集成了丰富的外设和内存,适用于广泛的应用领域。 寄存器是计算机体系结构中的重要组成部分,用于存储和操作数据。STM32F1芯片内部集成了大量的寄存器,包括通用寄存器、特殊功能寄存器和外设寄存器等。通过对寄存器的读写操作,可以实现对芯片内部各种功能的配置和控制。 LwIP-2.1.2是一个开源的轻量级网络协议栈,适用于嵌入式系统。它提供了TCP/IP协议栈的实现,支持各种网络协议和服务,例如IPTCP、UDP、ARP、DHCP、DNS等。LwIP-2.1.2具有较小的内存占用和高性能的特点,适用于资源有限的嵌入式环境。 ENC28J60是一款低成本的SPI以太网控制器芯片,由微芯科技(Microchip Technology)公司推出。它支持10Mbps以太网通信,采用硬件SPI接口和内部缓存,能够有效减少主控制器的负担。ENC28J60与STM32F1可以通过SPI总线进行连接,用于实现嵌入式设备与以太网的通信。 综上所述,STM32F1是一款强大的单片机系列产品,具备丰富的外设和可编程寄存器,可以灵活配置和控制芯片内部功能。LwIP-2.1.2是一个轻量级的网络协议栈,用于实现嵌入式系统的网络通信。ENC28J60是一款低成本的以太网控制器芯片,可以与STM32F1通过SPI总线进行连接。这些技术的结合可以实现嵌入式设备的网络功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值