【lwip】07-链路层收发以太网数据帧源码分析

目录

  • 前言
  • 7.1 链路层概述
  • 7.2 MAC地址的基本概念
  • 7.3 以太网帧结构
  • 7.4 以太网帧结构
  • 7.5 以太网帧报文数据结构
  • 7.6 发送以太网数据帧
  • 7.7 接收以太网数据帧
  • 7.8 虚拟局域网VLAN源码分析
    • 7.8.1 以太网标准帧和VLAN帧的区别
    • 7.8.2 以太网发送带VLAN数据帧
    • 7.8.3 以太网接收带VLAN数据帧
    • 7.8.4 开启VLAN功能ETHARP_SUPPORT_VLAN
  • 7.9 一个硬件映射到多个IP
前言参考lwip的ethernet.cethernet.h文件 。原文:李柱明博客园
7.1 链路层概述简单概述 。
相关术语:
  • 结点(node):运行链路层协议的设备 。如主机、路由器、交换机和WiFi接入点 。
  • 链路(link):沿着通信路径连接相邻结点的通信信道 。
  • 数据帧:链路层每一帧数据包size有限,如果上层传递下来的数据报size超出链路层每帧能接收的数据size极限,就会分片 。(这里不细说)
在TCP/IP协议族中,链路层主要有三个目的:
  1. 为IP模块发送和接收IP数据报;
  2. 为ARP模块发送ARP请求和接收ARP应答;
  3. 为RARP发送RARP请求和接收RARP应答 。
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等 。
数据报从源主机传输到目标主机时,数据报必须通过端到端路径上的各段链路才能达到目标主机 。
各种端到端的链路层协议由具体的端到端决定,链路层设备只需要把数据报封装在自己的链路层帧并转发到下一个端设备即可 。
7.2 MAC地址的基本概念MAC Address(Media Access Control Address),亦称为EHA(Ethernet Hardware Address)、硬件地址、物理地址(Physical Address) 。
在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC位址 。
所以一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC位址 。
MAC地址组成(48字节):前3个字节表示组织唯一标志符(OUI)+后3个字节由厂家自行分配的扩展标识符 。
7.3 以太网帧结构IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)参考图:
7.4 以太网帧结构IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)参考图:
【lwip】07-链路层收发以太网数据帧源码分析

文章插图
目标MAC地址(6字节):这个字段包含目标网卡的MAC地址,当一个网卡收到一个以太网数据帧 。
  • 如果该数据帧的目标地址是网卡自身的MAC地址或者是MAC广播地址,它都将该帧的数据字段的内容传递给网络层;
  • 如果收到了其他MAC地址的帧,则将该数据帧丢弃 。
源MAC地址(6字节):这个字段包含了传输该帧到局域网上的适配器的MAC地址 。类型/长度字段(2字节):类型字段允许以太网复用多种网络层协议 。是表示当前以太网帧的数据区是哪个协议的数据包 。