ARP协议工作流程与抓包分析

ARP解决的问题

在现行的TCP/IP网络体系结构中,网络层中ip数据报的传递由链路层提供服务支撑,这意味着当一个结点向另一个结点发送ip数据报时,首先必须将其封装成以太帧,然后通过链路层服务,将网络层ip数据报送达目标结点。
这里涉及到一个问题是:链路层通过MAC地址传递数据,而网络层通过ip地址传递数据,发送结点仅知道目的结点的ip,不知道目的结点的MAC地址,链路层就无法确定应该将数据帧发给哪一个物理地址。
为了解决以上问题,网络层使用地址解析协议ARP(address resolution protocol)将IP地址映射为MAC的地址,才使得网络可以正常通信。

ARP工作流程

每个端系统中都有一张ARP映射表,表中每一行标识了ip地址对应的MAC地址及该条记录的更新时间,如表所示

IP地址MAC地址TTL
10.10.10.111-11-11-11-11-1109:31:00
10.10.10.222-22-22-22-22-2209:42:00

windows系统中可以使用cmd命令arp -a查看本机的arp表

这样对于网络层中的ip地址,链路层数据帧可以通过这样表查询到对应的MAC地址,插入到数据帧的目标字段中,并发送到MAC地址指定机器(或接口)上。关于这张表的更新维护下面分两种情况讨论:

1.两个结点在同一子网

当端系统A要向端系统B发送ip数据报,但是在ARP表中找不到目标ip地址对应的MAC地址时,端系统A向子网内所有端系统广播一个ARP请求分组,请求内容包括:源ip地址(即本机ip地址),源MAC地址(即本机MAC地址),目标ip地址(要寻找的ip)。子网内所有其他端系统收到请求后,将其中目标ip地址与自己的ip做对比,端系统B发现目标ip与自己ip一致,就向源MAC地址单播一个回应分组,分组内容包括:本机ip,本机mac。于是端系统A便更新ARP表,加入端系统B的ip地址与MAC地址。同时端系统B在ARP表中更新端系统A的ip地址与MAC地址。

2.两个结点在不同子网

当端系统A与端系统B不在同一子网时,端系统首先根据1.中的步骤找到网关ip对应的MAC地址,将ip数据报发送至网关路由器,路由器根据数据报中的目的ip地址决定将数据报转发到哪个接口,再在该接口运行ARP找到目的ip对应的MAC地址,最后将数据帧发送至该子网上对应mac地址的端系统(或下一跳)。

ARP数据抓包

学习了ARP的理论知识,那么在实际机器上是如何表现的呢?下面使用wiresharp抓取最基本的ARP数据包进行分析。
在这里插入图片描述

  1. 首先为抓取更清楚、纯净的数据包,将所有无关网络应用进程都关闭,只保留wireshark、cmd。

  2. 然后打开wireshark,点击开始捕获分组按钮

  3. 然后在cmd中使用命令arp -d *清空ARP表,目的是为了让机器重新执行ARP工作流程,以便获得完整的数据包。
    清空arp

  4. wireshark过滤器中输入arp,只显示ARP的网络数据包
    在这里插入图片描述

ARP数据抓包分析

在这里插入图片描述
上图显示了wireshark抓取到的6条arp数据包,并展示了第一条ARP数据的详细内容,以此为例,进行分析。
首先计算机要与其它子网上机器进行网络通信,必须要通过其网关192.168.0.1,为此需要获取网关的MAC地址。由于之前已经将ARP表清空,于是本机向子网所有机器广播一个由Ethernet II封装的ARP请求分组的以太帧。如图,Source为本机MAC,Destination:ff:ff:ff:ff:ff:ff为广播地址。而该以太帧的载荷为ARP协议数据,包括Sender MAC = 00:a0:c6:00:00:00, Sender IP=192.168.0.100, Target IP=192.168.0.1,Target MAC为6个字节的一串0,表示寻找ip为192.168.0.1的MAC地址,并希望把该MAC地址信息发回Sender MAC、Sender IP。图中第二条数据即ARP响应数据,在此不作赘述。
此时再执行arp -a,可以看到ARP表中已存在192.168.0.1的MAC地址映射。
arp表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值