LWIP之ARP协议
描述ARP缓存表的数据结构:
struct etharp_entry {
struct etharp_q_entry *q; //数据包缓冲队列指针
ip_addr_t ipaddr; //目标IP地址
struct eth_addr ethaddr; //MAC地址
struct netif *netif; //对应网络接口信息
u8_t state; //描述该entry的状态
u8_t ctime; //描述该entry的时间信息
};
LWIP中定义一个缓存表项有四种状态,用枚举型etharp_state进行描述
enum etharp_state{
ETHARP_STATE_EMPTY=, //empty状态
ETHARP_STATE_PENDING, //pengding状态
ETHARP_STATE_STABLE, //stable状态
ETHARP_STATE_STABLE_REREQUESTING //stable状态且发送了一个ARP请求
}
当处在stable状态时,内核会对其进行周期性定时,当定时时间到之后,内核会往该表项对应目的IP上发送一个ARP请求,以维护APR表项的有效性,当请求包发送之后,该表项状态会被暂时设置为stable_rerequesting状态。
etharp_tmr()函数是实现ARP功能的重要定时函数。典型规定stable超时时间是20mins,pending超时时间是10S。
ARP报文组织结构
以太网目 的地址(MAC) |
以太网源 地址(MAC) |
帧类型 | 硬件类型 | 协议类型 |
硬件地 址长度 |
协议地 址长度 |
OP |
发送方以 太网地址 |
发送方 IP地址 |
接收方以 太网地址 |
接收方 IP地址 |
6(bytes) | 6 | 2 | 2 | 2 | 1 | 1 | 2 | 6 | 4 | 6 | 4 |
以太网首部 | 28字节ARP数据包 |
帧类型要注意大小端的问题。ARP:0X0806 IP:0X0800
广播包MAC地址是:FF-FF-FF-FF-FF-FF
多播包MAC地址:01-00-5E-XX-XX-XX
遇到pbuf在类型是PBUF_REF、PBUF_POOL、PBUF_RAM时,需要拷贝下来。以防止在等待发送的过程中数据改变。
LWIP之ARP协议的更多相关文章
- 图解ARP协议
前置知识:MAC地址 在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一标示一个网卡,一 ...
- 【lwip】08-ARP协议一图笔记及源码实现
目录 前言 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缓存表数 ...
- 【lwip】09-IPv4协议&超全源码实现分析
目录 前言 9.1 IP协议简述 9.2 IP地址分类 9.2.1 私有地址 9.2.2 受限广播地址 9.2.3 直接广播地址 9.2.4 多播地址 9.2.5 环回地址 9.2.6 本地链路地址 ...
- 浅谈ARP协议以及应用
0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...
- 6410实现网卡(DM9000A)收发功能及ARP协议实现
1. 网卡硬件结构(DM9000A) 网卡的实质就是MAC通过MII接口控制PHY的过程. MAC主要负责数据帧的构建.数据差错检查.传送控制等. PHY是物理接口收发器,属于物理层,当它收到MAC过 ...
- Lvs原理及部署之ARP协议
1.什么使ARP协议 ARP协议,全称"Address Resolution Protocol" ,中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应的物理地址(MAC ...
- 计算机网络(2)-----ARP协议
ARP协议(Address Resolution Protocol) 概念 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/I ...
- ARP协议
ARP协议就是一个获取对方MAC地址的协议,ARP协议它是一个网络层的协议,它的作用是通过ARP request报文来获得对方的MAC地址,ARP报文里面发送的内容大概是192.168.1.20你的M ...
- ARP协议格式、ARP运行机制入门学习
相关学习资料 http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212& ...
随机推荐
- unity 常用插件 2
Advanced PlayerPrefs Window 用来管理 PlayerPrefs 数据,超好用 JsonDotNet JSON 的序列化/反序列化插件.这个插件是支持 iOS, Android ...
- jsp(待改)
##JSP 1.指令 作用:用于配置JSP页面,导入资源文件 *书写格式 <%@ 指令名称 属性1=值1,属性2=值2 ...%> *分类: *page :配置JSP页面的 #属性: c ...
- How to run Python code from Sublime
How to run Python Code from Sublime,and How to run Python Code with input from sublime Using Sublime ...
- Linux内核笔记:内存管理
逻辑地址由16位segment selector和offset组成 根据segment selector到GDT或LDT中去查找segment descriptor 32位base,20位limit, ...
- IAR project build with command line
The simple way is that using iarbuild.exe project.eww -build Release/Debug Release/Debug is the con ...
- vue 中结合百度地图获取当前城市
首先需要去百度地图开发者平台申请 ak http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5 在index.html 中引入script ...
- Ansible 安装与配置(一)
公司大概有200多云主机需要进行管理,但是如果通过手工管理费时还累最终结果也容易出错,所以考虑通过自动化的方式来管理云主机,目前开源的自动化工具,大家用的比较多的有Ansible和Saltstack这 ...
- Hbase各版本环境要求
1.HBase各版本JDK支持情况 HBase Version JDK 7 JDK 8 JDK 9 JDK 10 2.0 Not Supported yes Not Support ...
- ASP.NET上传文件到远程服务器(HttpWebRequest)
/// <summary> /// 文件上传至远程服务器 /// </summary> /// <param name="url">远程服务地址 ...
- 关于使用colorbox加载html页面的一些问题
ColorBox是一个基于jQuery 1.3 的轻量级,自定义灯箱插件,功能非常强大,支持图片,图片组,ajax,inline和iframed内容,灯箱样式完全由用户控制,可自定义CSS样 式,不需 ...