LwIP系列(4):ARP协详解

news2024/10/1 3:33:18

前言

对于应用程序而言,我们与其他设备、服务通信,主要通过域名、IP进行通信,而以太网底层驱动,最终是通过MAC地址来表示设备的唯一标识,即IP是逻辑地址,并不是物理地址。在上一篇文章中,我们也能看到以太网帧首部中,就包含了源、目的设备的MAC的地址。所以我们需要一种IP与MAC相互转换的协议,这种协议就是ARP和RARP.

ARP : Address Resolution Protocol, 根据IP地址获取MAC。
RARP: Reverse Address Resolution Protocol, 根据MAC地址获取IP。

ARP 帧格式

在这里插入图片描述
其中:

参数说明
硬件类型以太网默认为1
协议类型0x0800-IPv4
硬件大小MAC地址大小
协议大小IP地址长度
Op操作类型,1-ARP请求;2-ARP相应;3-RARP请求;4-RAPR相应
发送方mac
发送方IP
目的MAC
目的IP

ARP帧抓取示例

我们通过ping 指令就可以出发arp,需要先删除本地arp缓存。
测试指令:

ping 192.168.1.9

删除本地arp 缓存

我们先将本地ARP缓存表删除,命令如下:

arp -d

注意:该命令需要管理员权限。

arp 请求抓包

在这里插入图片描述

请求报文解析

ff ff ff ff ff ff 			// 目的MAC
XX XX XX XX XX XX 			// 源 mac, 隐藏
08 06 						// 协议帧: 0806:ARP	
00 01						// 硬件类型
08 00 						// 协议类型, IPv4
06							// 硬件MAC地址长度 
04 							// 协议(ip)地址长度
00 01 						// op操作类型。01-ARP请求;02-ARP相应;03-RARP请求;04-RARP响应
XX XX XX XX XX XX 			// 发送端mac, 隐藏
c0 a8 01 72					// 发送端IP
00 00 00 00 00 00 			// 目的端MAC
c0 a8 01 09					// 目的IP

arp响应抓包

响应包解析

XX XX XX XX XX XX 		// 目的MAC, 隐藏
XX XX XX XX XX XX 		// 源 mac, 隐藏
08 06 					// 协议帧: 0806:ARP	
00 01					// 硬件类型
08 00 					// 协议类型, IPv4
06 						// 硬件MAC地址长度 
04 						// 协议(ip)地址长度
00 02 					// op操作类型。01-ARP请求;02-ARP相应;03-RARP请求;04-RARP响应
XX XX XX XX XX XX 		// 发送端mac, 隐藏 
c0 a8 01 09				// 发送端IP
XX XX XX XX XX XX 		// 目的端MAC,隐藏
c0 a8 01 72 			// 目的IP
00 00 00 00 00 00
00 00 00 00

ARP在同一局域网/不同局域网运行过程

ARP在同一局域网运行过程

  1. 首先查看本地ARP缓存,若查到,则获取到对应IP的MAC,封装到以太网帧中。
  2. 如果从ARP缓存表中查不到,则设备发送1个ARP广播分组,具体内容见上述ARP请求包,在同一个局域网内的所有主机,都会收到这个广播信息,只有IP地址与ARP请求的目的IP相同时,便会以单播的形式回应给源主机,当源主机收到arp响应后,就会将目的IP与MAC地址映射写入到ARP缓存中。

ARP在不同局域网运行过程

  1. 主机将自己的IP地址与目的主机的IP进行与& 计算,判定是否在同一个子网内,如果不在同一个子网内。
  2. 主机便从ARP缓存表中,获取默认网关的MAC地址,向默认网关发送数据帧,即不在同一个局域网的,在当前网络中,是不用ARP请求的,只用网关的IP和MAC即可。
  3. 以太网帧数据运行到路由器时,路由器查询转发表,看转发表中是否有目的IP地址,如果有,则直接进行交付。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ArcGIS Pro二次开发】(45):手搓一个工具执行进度框

我在之前做的工具中,UI这部分基本没怎么深入,都是直接用的现成的控件。 其中有一个问题比较突出,就是没有工具执行的进度框提示。曾经也用过系统自带的信息提示框和进度条,但太简陋,确实不好用。于是就想抄一个进度框…

Linux 读文件 - readahead预读算法

顺序读场景 intmain{charc[ 4096];intin -1;in open( "news.txt", O_RDONLY);intindex 0;while(read(in, &c, 4096) 4096){printf( "index: %d,len: %ld.\n",index, strlen(c));memset(c, 0, sizeof(c));index;} 数据结构 /** Track a single fi…

CentOS7 静默方式安装 Oracle19C

CentOS7 静默方式安装 Oracle19C 操作系统:CentOS7 Oracle: 19C 安装常用工具和依赖 yum -y install vim tar net-tools wget perl python3 readline* deltarpm python-deltarpm \zip unzip bc compat-libcap1* compat-libcap* binutils compat-libstdc…

最近的感悟与总结

目录 一、判别填鸭、与被填鸭的思考讲解人:听者: 二、最近感悟:三、再来三道数学题吧:四、总结 一、判别填鸭、与被填鸭的思考 讲解人: 1.是否在讲解过程中增加了知识认识的维度?(具体是什么,…

08_Linux按键输入

目录 Linux下按键驱动原理 修改设备树文件 添加KEY设备节点 按键驱动程序编写 编写测试APP 运行测试 Linux下按键驱动原理 按键驱动和LED驱动原理上来讲基本都是一样的,都是操作GPIO,只不过一个是读取GPIO 的高低电平,一个是从GPIO输出高低电平。实现按键输入,在驱动程序…

nginx的安装与自启动配置

1. nginx源码下载 nginx源码下载 2. nginx编译安装 2.1 解压安装包 tar -zxvf nginx-1.24.0.tar.gz2.2 编译安装 cd nginx-1.24.0 ./configure make make install执行./configure时可能出现如下的error,需要安装依赖库: 缺少pcre库 下载pcre安装包…

链码的安装、实例化、查询、调用

目录 1、首先保证网络已经处于启动状态 2、进入CLI容器 3、检查当前节点已经加入到哪些通道中(刚进来,默认是 peer0.example.com) 链码的安装 1、检查通道名称是否设置正确 2、使用install安装链码 3、实例化链码 4、查詢链码 发起交易 …

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二 引言🍉句1: And that is when it dawned on me that I didn’t have to be 5,5 ft. anymore.成分划分弱读连读爆破语调 🍉句2: I could be as tall as I wanted, or as short as I wanted …

【电子学会】2023年05月图形化三级 -- 躲避陨石

文章目录 躲避陨石1. 准备工作2. 功能实现3. 设计思路与实现(1)角色、舞台背景设置a. 角色设置b. 舞台背景设置 (2)脚本编写a. 角色:Rocketshipb. 角色:Ball 4. 评分标准5. 知识块 躲避陨石 飞船在陨石乱飞…

MySQL数据库第一课 ---------安装

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com 目录 虚拟环境虚拟环境 安装虚拟机 自主安装 简易安装 ———————————————————————————————————————— 虚拟环境虚拟环境 我们现在运行代码的环境是在 PyCharm…

大型语言模型作为属性化训练数据生成器

大型语言模型作为属性化训练数据生成器,提出一种使用多样化属性提示的数据生成方法,可以生成具有多样性和属性的训练数据,从而提高了模型的性能和数据生成的效率。 动机:大型语言模型(LLM)最近被用作各种自然语言处理(NLP)任务的…

从零开始——腾讯云服务器安装运行部署教程

一、腾讯云 1、购买腾讯云服务器 现在腾讯云服务器有优惠活动(大家可以在网上搜索各个服务器的优惠活动,有很多) 活动链接:上云精选_云服务器秒杀_开发者上云推荐-腾讯云 (tencent.com) 这里我选2G/2核/4M/50G轻量级服务器 这…

Linux基础服务6——Apache

文章目录 一、基本了解1.1 自带工具1.2 服务配置文件1.3 访问控制法则1.4 web相关的命令1.4.1 curl命令1.4.2 httpd命令 二、安装配置2.1 安装服务2.2 访问网页2.3 虚拟主机配置2.3.1 相同ip,不同端口2.3.2 相同端口,不同ip2.3.3 域名访问 三、https3.1 …

深度剖析 Linux 伙伴系统的设计与实现

目录 伙伴系统的核心数据结构 总结: 到底什么是伙伴 伙伴系统的内存分配原理 伙伴系统的内存回收原理 伙伴系统的实现 从 CPU 高速缓存列表中获取内存页 伙伴系统的核心数据结构 如上图所示,内核会为 NUMA 节点中的每个物理内存区域 zone 分配一个…

《计算机网络--自顶向下方法》第四章--网络层:数据平面

4.1网络层概述 每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报;控制平面的主要作用是协调这些本地路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径进行端到端传送 路由器具有截断的协议栈,即没有网络层…

[RISC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

大数据Doris(五十四):BACKUP数据备份原理和语法

文章目录 BACKUP数据备份原理和语法 一、BACKUP数据备份原理 1、快照及快照上传 2、元数据准备及上传 二、BACKUP数据备份语法 BACKUP数据备份原理和语法 通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份,除了export方式之外,Doris 还…

高压线路零序电流方向保护程序逻辑原理(二)

二、零序电流方向保护的采样中断服务程序 零序电流方向保护与其他微机保护的采样中断服务程序相同,均有电压求和自检和电流求和自检及相电流差突变量起动元件DI1。零序电流方向保护的采样中断服务程序中最突出的问题是通过3U。突变量元件来实现闭锁保护&#xff0c…

使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误问题总结

目录 1、问题描述 2、分析软件问题的常用分析工具 3、使用Dependency Walker排查启动程序时报找不到ucrtbase.dll、vcruntime140.dll等运行时库的问题 3.1、使用Dependency Walker查看exe程序的库依赖关系,排查找不到ucrtbase.dll、vcruntime140.dll库问题 3.2…

华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

一、题目描述 相对开音节构成的结构为辅音元音(aeiou)辅音(r除外)e,常见的单词有life,time,woke,coke,joke,note,nose,communicate,use,gate,same,late等。 给定一个字符串,以空格…