ARP协议解析与实战

本文介绍了ARP协议的基本概念,解释了为何需要将IP地址解析为MAC地址。通过Wireshark抓包展示了ARP协议的工作过程,包括ARP请求和响应的报文内容。还探讨了ARP缓存表的作用及其操作,并提供了查看和管理 ARP 缓存表的命令。
摘要由CSDN通过智能技术生成

1.ARP协议概述

1.1 什么是ARP协议?

ARP是Address Resolution Protocol的简写。翻译成中文就是:地址解析协议。

那么解析什么地址呢?本质上就是把IP解析成MAC的一种协议。

1.2 为什么需要把IP解析成MAC地址?

看了ARP协议的内容,难免我们会有一个疑问,就是当前主题。

我们知道根据OSI模型,把网络工作分为七层,如下图所示(图片来自: 计算机网络-数据结构-MAC帧头-IP头-TCP头-UDP头 - 多情剑客无情剑; - 博客园  ):

以上图片右侧为:当前7层网络架构;左侧为:数据数据过程的头封装过程

最终由物理层将当前数据包发送出去时,需要将MAC头封装到最外层。

那么问题来了:应用层发送消息到对端时都是通过ip、port来发送的,那么如何获取到对端MAC地址呢?

答案就是:通过ARP协议。

下面一起来用wireshark实战下ARP协议的过程,先抓包体验下协议内容,后续再来具体分析。

2.wireshark抓包arp协议

2.1 环境准备

笔者准备两台机器,采用ping的方式来进行通讯,ping之前启动好wireshark来进行相应ip抓包

 

2.2 wireshark抓包实战

在client端执行ping 192.168.3.18命令,并提前打开wireshark,抓包如下:

 很简单的两条信息,1是发送一个广播信息(Broadcast)到子网中,

2是192.168.3.18这台机器接收到广播信息后,直接回复当前ip的Mac给client。

在这一问一答之间,arp协议就完成了ip到mac的转换。

2.3 ARP协议内容

协议内容,我们可以先通过wireshark抓包到的内容先分析下

2.3.1 ARP 请求协议内容

 Sender这两条就是发送方的信息

Target这两条就是接收方的信息(主要就是IP地址,MAC地址当前还未知)

2.3.2 ARP 响应协议内容

 

当子网中的192.168.3.18服务器接收到该广播信息,发现与自己的ip匹配,则将自己的MAC地址以arp响应的方式发送回去。

3.ARP协议报文格式

从wireshark的角度来看arp协议的请求响应体,内容并不多,我们直接看下报文格式

 

ARP 报文总长度为 28 字节,MAC 地址长度为 6 字节,IP 地址长度为 4 字节。

其中,每个字段的含义如下。

硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为 1。
协议类型:表示要映射的协议地址类型。它的值为 0x0800,表示 IP 地址。
硬件地址长度和协议长度:分别指出硬件地址和协议的长度,以字节为单位。对于以太网上 IP 地址的ARP请求或应答来说,它们的值分别为 6 和 4。
操作类型:用来表示这个报文的类型,ARP 请求为 1,ARP 响应为 2,RARP 请求为 3,RARP 响应为 4。
发送方 MAC 地址:发送方设备的硬件地址。
发送方 IP 地址:发送方设备的 IP 地址。
目标 MAC 地址:接收方设备的硬件地址。
目标 IP 地址:接收方设备的IP地址。

ARP 数据包分为请求包和响应包,对应报文中的某些字段值也有所不同。

ARP 请求包报文的操作类型(op)字段的值为 request(1),目标 MAC 地址字段的值为 Target 00:00:00_00:00:00(00:00:00:00:00:00)(广播地址)。

ARP 响应包报文中操作类型(op)字段的值为 reply(2),目标 MAC 地址字段的值为目标主机的硬件地址。

4.ARP缓存表

在局域网中的任何一台机器,都有一个ARP缓存表。这个缓存表保存了多个ARP条目。每个ARP条目都由一个ip地址和一个mac地址组成。

在这里,我们先停一下,思考下为什么会有这个缓存表?如果没有的话会怎样?

4.1 ARP缓存表操作

查看当前缓存表信息:

C:\WINDOWS\system32>arp -a

接口: 192.168.3.8 --- 0x9
  Internet 地址         物理地址              类型
  192.168.3.1           48-4c-86-16-50-f5     动态
  192.168.3.3           c2-f4-aa-fd-de-61     动态
  192.168.3.10          e0-eb-40-e9-b4-5c     动态
  192.168.3.255         ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  228.140.111.3         01-00-5e-0c-6f-03     静态
  236.102.255.2         01-00-5e-66-ff-02     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

同时,arp命令还可以执行删除添加操作,这个非本文重点,读者可以自行学习

C:\WINDOWS\system32>arp

显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            通过询问当前协议数据,显示当前 ARP 项。
                如果指定 inet_addr,则只显示指定计算机
                的 IP 地址和物理地址。如果不止一个网络
                接口使用 ARP,则显示每个 ARP 表的项。
  -g            与 -a 相同。
  -v            在详细模式下显示当前 ARP 项。所有无效项
                和环回接口上的项都将显示。
  inet_addr     指定 Internet 地址。
  -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
  -d            删除 inet_addr 指定的主机。inet_addr 可
                以是通配符 *,以删除所有主机。
  -s            添加主机并且将 Internet 地址 inet_addr
                与物理地址 eth_addr 相关联。物理地址是用
                连字符分隔的 6 个十六进制字节。该项是永久的。
  eth_addr      指定物理地址。
  if_addr       如果存在,此项指定地址转换表应修改的接口
                的 Internet 地址。如果不存在,则使用第一
                个适用的接口。
示例:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09.... 添加静态项。
  > arp -a                                  .... 显示 ARP 表。

注意:笔者使用的是Windows机器操作的arp命令,可能会出现没有权限等问题,可以参考下 ARP项添加失败:请求的操作需要提升 && ARP项添加失败:拒绝访问_再睡一夏.的博客-CSDN博客_arp项添加失败,拒绝访问 处理。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恐龙弟旺仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值