当前位置: 首页 > news >正文

ARP协议详解

ARP协议详解

文章目录

  • ARP协议详解
    • ARP协议介绍
    • ARP抓包
    • ARP包解析

ARP协议介绍

ARP(Address Resolution Protocol)是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议,当一个主机需要向另一个主机发送数据包时,它需要知道目标主机的MAC地址。在发送数据包之前,发送主机将发送一个ARP请求广播,询问目标主机的MAC地址。目标主机会在ARP响应中回复自己的MAC地址,发送主机就可以将数据包发送到目标主机了。

ARP抓包

  • 下载安装wireshark

  • 查看应该抓包的端口,以ubuntu18.04为例,直接发送命令进行查看当前的arp缓存

    arp -a
    

在这里插入图片描述

  • 从上面我们知道其中一个arp包发送的ip地址为192.168.1.1,其发送的网口是enp2s0f1

    所以我们可以可以手动发送一条命令来发送arp请求

    arping -c 1 -I enp2s0f1 192.168.1.1
    

在这里插入图片描述

  • 打开wireshark,根据上面命令的结果我们知道缓存的mac地址的arp包是从enp2s0f1上发送的,所以我们选择抓取enp2s0f1网口,在过滤处填写arp

在这里插入图片描述
在这里插入图片描述

  • 从上面的arp -a的结果我们知道其中一个arp包发送的ip地址为192.168.1.1,其发送的网口是enp2s0f1所以我们可以可以手动发送一条命令来发送arp请求,抓到的包如下图所示
arping -c 1 -I enp2s0f1 192.168.1.1

在这里插入图片描述
在这里插入图片描述

ARP包解析

ARP协议发送ARP包的流程是这样的,源主机广播一个ARP请求数据包,其中包含源主机的IP地址和MAC地址,以及目标主机的IP地址。该数据包会被发送到本地网络的所有主机。其他主机收到该数据包后会检查其中的目标IP地址是否为自己的IP地址,如果是,则返回一个ARP响应数据包,其中包含自己的MAC地址,发送给源主机;否则,忽略该数据包。

所以我们在源主机处抓包如果能ping通的话会抓到两个包,一个是发送出去的包,request

请添加图片描述

一个是收到回复主机的包reply

请添加图片描述

两个包的结构都一样,只是内容不一样,抓取包中常见字段意思如下

请添加图片描述

  1. Hardware Type(硬件类型):表示发送方的网络接口类型,例如以太网。
  2. Protocol Type(协议类型):表示上层协议类型,通常为IP协议。
  3. Hardware Address Length(硬件地址长度):表示硬件地址的长度,例如MAC地址长度为6个字节。
  4. Protocol Address Length(协议地址长度):表示协议地址的长度,例如IPv4地址长度为4个字节。
  5. Operation Code(操作码):表示ARP包的类型,包括ARP请求、ARP响应、RARP请求、RARP响应等。
  6. Sender Hardware Address(发送方硬件地址):表示发送方的MAC地址。
  7. Sender Protocol Address(发送方协议地址):表示发送方的IP地址。
  8. Target Hardware Address(目标硬件地址):表示目标主机的MAC地址。
  9. Target Protocol Address(目标协议地址):表示目标主机的IP地址。
http://www.lryc.cn/news/62228.html

相关文章:

  • 不同数量的预测框和Ground Truth框计算IoU
  • 偏好强化学习概述
  • 苹果笔到底有没有必要买?苹果平板电容笔排行榜
  • learn_C_deep_6 (布尔类型、布尔与“零值“、浮点型与“零值“、指针与“零值“的比较)
  • JavaScript日期库之date-fn.js
  • 五一假期出游攻略【诗与远方】
  • 怎样正确做web应用的压力测试?
  • Hibernate的持久化类
  • 【c语言】enum枚举类型的定义格式 | 基本用法
  • Python数据挖掘与机器学习
  • Java有用的书籍2
  • CTA进网测试《5G消息 终端测试方法》标准依据:YDT 3958-2021
  • [LeetCode复盘] LCCUP‘23春季赛 20230422
  • 传统燃油车的智控App远控响应速度优化方向几点思考
  • 回炉重造九---DNS服务器
  • UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)
  • 【数据库多表操作】sql语句基础及进阶
  • DPDK和RDMA的区别
  • 体验 Google Bard
  • MITA触摸屏维修WP4053米塔工控机控制屏维修
  • Nacos简介 安装 配置
  • 五、MyBatis各种查询功能
  • uni-app——picker组件的用法、时间、日期、地区选择器等
  • 什么情况需要考虑 mysql 分表
  • 系统架构师02-架构设计 20分
  • 【python视图3】networkx图操作示例
  • 网络地址转换应用
  • 强化学习-Double DQN、竞争网络结构和Rainbow(第4章)
  • Unity 性能优化锦集
  • JS之Map的基本使用