lwIP ARP协议分析
ARP 协议分析
分开处理。ip分组先进入etharp_ip_input更新一下arp表项,然后直接进入
netif的input传递给上层ip层。arp分组直接进入etharp_arp_input。
不送如ip层。
奇怪的是,lwip把ether header的结构定义在etharp中。
-ARP 数据结构
enum etharp_state {
ETHARP_STATE_EMPTY, /* 表项空 */
ETHARP_STATE_PENDING,
ETHARP_STATE_STABLE, /* 稳定状态表项,该表项中MAC值可直接取出 */
ETHARP_STATE_EXPIRED /* 超时表项 */
};
struct etharp_entry {
struct pbuf *p; /* arp 请求队列 */
struct ip_addr ipaddr;
struct eth_addr ethaddr;
enum etharp_state state;
u8_t ctime; /* 超时值 */
};
struct etharp_hdr {
struct eth_hdr ethhdr; /* ether header */
u16_t hwtype;
u16_t proto;
u16_t _hwlen_protolen;
u16_t opcode;
struct eth_addr shwaddr;
struct ip_addr2 sipaddr;
struct eth_addr dhwaddr;
struct ip_addr2 dipaddr;
}
- ARP 函数
初始化所有静态ARP表项,状态为EMPTY。
首先排除广播、多播及any地址。然后,
将ipaddr及ethaddr对加入arp表项中,该表项索引由find_entry获得。
加入后,将该arp表项中还未发送的IP包(这些IP包是由etharp_ouput函数,在
处理IP包发送时,由于未找到对应ip的mac地址,由etharp_query加入到
pending arp的未发送IP包链表中。现在我们得到mac和ip对应值后,就
可以将这些IP包发送出去),发送到netif驱动。
该函数被etharp_ip_input及etharp_arp_input调用。
查询包含ipaddr的表项。
查询优先级:1. pending 2. stable 3. empty。
find_entry总是根据这些优先级查找是否由匹配项,如果有,立刻返回该项
索引。否则根据优先级产看是否有过期表项,并覆盖它。
该函数是再ip分组传上ip层之前,将ip分组的mac和ip映射到
arp表项中做更新。这样的设计好像比较浪费。完全可以加大arp
表项,去除该过程
struct eth_addr *ethaddr, struct pbuf *p);
arp分组到来,直接交给该函数处理。
无论netif的ip地址是否被配置过,都将该ARP分组的源ip和mac地址
加入到ARP表项中。如果一个ARP请求的目的ip地址是本地ip地址。
则发送response ARP分组。
该函数分开处理两种地址类型的网络层包,
1)多播及广播。直接调用netif->linkoutput发送出去,该函数为网卡驱动。
2)单播。单播的IP包又分三种处理方式。a. 目的ip在arp表项中,并且stable。
则直接构造以太头,调用网卡驱动,发送以太帧。b. 目的ip不在arp表项中,
修改arp表项状态为pending,并调用etharp_request,发送ARP REQUEST。
c. 目的ip在ARP表项中。但状态为pending(这个状态是由b条件引起的,可能
ARP RESPONSE在处理该条件时还为返回)。将待发送的IP包的缓冲区PBUF_REF
替换成PBUF_POOL或PBUF_RAM(暂时不知道为啥)。这些包将会在update_arp_input
中被发送。
- ARP 协议处理流程图
lwIP ARP协议分析相关推荐
- arp协议分析python编程实现arp欺骗抓图片
arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...
- 网络协议实验四 ARP 协议分析实验
实验四 ARP 协议分析实验 2.2 ARP 协议分析实验 1.ARP 协议介绍 ARP 是地址解析协议 (Reverse Address Resolution Protocol)的缩写,负责实现从I ...
- ARP协议分析与攻击防护(三)
ARP协议分析与攻击防护(三) 一.ARP攻击实操 1.1)ARP攻击(断网) 1.2)ARP攻击(窃取)
- ARP协议分析与攻击防护(一)
ARP协议分析与攻击防护(一) 一.广播与广播域的概述 1.1)广播与广播域 1.2)广播地址 二.ARP协议讲解 2.1)ARP地址的全名 2.2)ARP协议的作用 2.3)ARP协议的工作原理 2 ...
- 实验二ARP协议分析
"终究是玫瑰误了花期,而我也将你归还故里" 实验二ARP协议分析 1.arp命令(要用管理员启动命令行) 2.arp请求与应答 3.arp代理 4.免费arp 文中小鲨鱼是指Wir ...
- 实验三 ARP 协议分析实验
1.ARP 协议分析实验 1.ARP 协议介绍 ARP 是地址解析协议(Reverse Address Resolution Protocol)的缩写,负责实现从IP 地址到物理地址(如以太 ...
- 0x0806 ARP协议分析
一.基本概念 ARP(Address Resolution Protocol) 即地址解析协议,用于实现从IP地址到MAC地址映射. 二. ARP工作流程 2.1 同一网段ARP工作流程分析 1. ...
- 实验2 ARP协议分析
一.实验目的 1.分析ARP 协议的报文格式 2.理解ARP 协议的解析过程 3.掌握ARP 相关命令 二.实验拓扑 三.实验工具 GNS3和Wireshark抓包分析软件 四.ARP协议的封装格式 ...
- 图解ARP协议分析实例
一 ARP协议 ARP (地址解析协议) 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标I ...
最新文章
- 思科路由器怎么安装?
- vimrc-20201028重新配置
- 手把手教你玩转ARP包(四)
- lambda函数 RUNOOB python练习题49
- php 短信验证码对比,php短信验证码的3个优势,你知道是什么吗?
- JVM:我就想知道我是怎么没的
- 网页修改iPhone13在线源码 – 无需SVIP
- MySQL主键和外键使用及说明
- MySQL取每组的前N条记录
- 使用反相器的rc振荡电路
- 【直播预告】「甦:知识蓄力2020」编辑讲书智慧接力行动
- uboot 1.1.6 移植8900网卡+tftp
- 抖音数据 - 网民评论数据采集,分析
- udp广播 安卓和pc互相收不到消息
- C++获取打印系统当前时间、日期
- 用Processing制作小游戏1
- PDF如何转Word?分享几个实用办公软件给你
- 获取微信用户信息java开发_Java微信公众平台开发(十二)--微信用户信息的获取
- Beego入门简单构建, 连接MySQL实现增查操作
- 2022年重庆最新建筑施工焊工(建筑特种作业)模拟考试题库及答案解析
热门文章
- oracle个人版初始密码,不知道普通用户密码,只知道sys用户密码,不修改普通用户密码,即可登录...
- ASP.NET 例程完全代码版(5)——通过web.config配置数据库连接池
- WSFC2008R2跨群集迁移WSFC2012R2
- spring源码分析,聊聊PropertyPlaceholderConfigurer
- 嵌入式Linux系统运行流程图
- iOS 开发-文件下载原理
- Android下屏保程序的开发
- 躲开职业生涯的“甜蜜陷阱”
- Mocha BSM应用管理——J2EE应用服务器监控与管理
- ug编程内公差和外公差是什么_干货丨模具工厂CNC加工编程工艺与标准!