目录
- 前言
- 8.1 IP地址与MAC地址
- 8.2 ARP协议简介
- 8.3 ARP协议报文
- 8.4 ARP缓存表
- 8.4.1 ARP缓存表简介
- 8.4.2 LWIP中的缓存表
- 8.4.3 ARP缓存表数据结构
- 8.4.4 ARP缓存表数据缓冲队列
- 8.4.5 ARP缓存表entry状态信息
- 8.4.6 ARP缓存表超时处理
- 8.4.7 ARP缓存表entry更新
- 8.5 ARP协议超时机制框图
- 8.6 ARP收发报文数据流图
- 8.7 ARP报文组包源码实现
- 8.7.1 ARP报文数据结构
- 8.7.2 ARP报文组建发送函数(基函数)
- 8.7.3 发送ARP请求包
- 8.7.4 发送ARP IP探测包
- 8.7.5 发送ARP IP宣告包
- 8.8 数据包发送分析
- 8.8.1 数据发包处理简述(ARP相关)
- 8.8.2 etharp_output():IP数据包是否ARP协议处理
- 8.8.3 etharp_output_to_arp_index():需要维护arp entry的IP数据包转发函数
- 8.8.4 etharp_query():需要发起ARP请求的IP数据包转发函数
- 8.8.5 etharp_find_entry():查找可被新建的arp entry
- 8.9 数据包接收分析
- 8.10 LWIP ARP一图笔记
ARP协议源码在etharp.c和etharp.h中,也是本次笔记的主要内容 。
ARP源码实现的重要数据结构:
- ARP缓存表 。
- ARP报文 。
8.1 IP地址与MAC地址TCP/IP协议的网络层有自己的IP地址 。
单看网络层,传输数据包时只需要知道目标主机的IP地址即可 。
但是网络层数据包下传到链路层时,链路层需要知道下一个节点的MAC地址,才能发包 。
为了实现网络层对MAC地址无感,又能实现数据包收发,就需要把IP地址和MAC地址绑定 。
一个网卡,有IP地址,而网卡对接物理设备时,物理设备有MAC地址,可以把IP地址和网卡设备MAC地址绑定 。
而有时候,IP地址可能是动态的,即是当前网卡设备根据需求被赋予不同的IP,所以IP地址与MAC地址映射也需要动态才能更好地把网络层和链路层分割 。
8.2 ARP协议简介地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议 。
主机A知道主机B的ip地址,但是在二层链路,也就是数据链路层,是通过mac地址进行转发的,通过ARP协议实现IP和MAC地址绑定 。
ARP协议有静态获取和动态获取:
- 静态获取:即是手动配置ARP映射表 。
- 动态获取:主机通过ARP协议主机获取、主机维护ARP映射表 。
文章插图
8.3 ARP协议报文ARP请求和应答分组的格式如图:
文章插图
以太网首部:
- 目的MAC(6):链路层的数据帧的下一个目标结点设备的MAC 。当携带ARP请求报文时,以太网目的地址MAC为广播地址:0xFFFFFF 。
- 源MAC(6):当前设备的MAC 。
- 帧类型(2):为0x0806时,表示ARP报文 。
- 硬件类型(2):硬件地址的类型 。
- 为1即表示以太网地址 。
- 其它还能表示令牌环地址等 。
- 协议类型(2):表示硬件地址要映射的协议地址类型 。
- 0x0800表示IP地址 。
- 其它还能表示ICMP/IGMP等 。
- 硬件地址长度(1):硬件地址的长度,以字节为单位 。
- 以太网上IP地址的ARP请求或应答:该字段为MAC地址的长度,6 。
- 协议地址长度(1):
- 以太网上IP地址的ARP请求或应答:该字段为IP地址长度,4 。
- OP字段(2):操作字段 。
经验总结扩展阅读
- Unity坐标系入门
- 原神蔷薇种子怎么获取
- 原神3.0须弥旋曜玉帛位置在哪
- 2023年10月29日结婚好不好 嫁娶吉利吗
- 2023年农历十一月属羊人哪天适合结婚
- 聚财公司名字大全集 招财旺生意的公司名字
- 抖音店铺取名 抖音吸引人店铺名字
- 电影狼溪一共几部?
- 2023年1月30日制作嫁衣行吗 2023年1月30日制作嫁衣好不好
- 菠萝袜是什么袜子?