为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 网络协议抓包分析——ARP地址...

网络协议抓包分析——ARP地址解析协议

2019.01.10 22:01 1782浏览

前言

计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样。这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址、硬件地址)。
计算机发送的信息最终都是被转换成比特流在物理层上传输,所以我们一定要知道的目的主机的MAC地址,最终信息才可以被发送给目的主机。但是我们一般只拥有目标主机的IP地址(假设之前没有与该目的主机通信过),那么在向目的主机发送数据包之前,我们要先获取到目标主机的MAC地址。ARP(Address Resolution Protocol)协议便是解决这个问题而存在的,ARP的功能就是将IP地址解析成MAC地址。下面将介绍ARP的工作流程以及抓包分析ARP协议。

回到目录

ARP工作流程

通信主机依据在同一网段和不同网段可以分为两种情况,两种情况的工作过程都包括请求过程和响应过程。

相互通信主机在同一网段

主机A与主机B通信,知道主机B的IP地址后,还要得到主机B的MAC地址。通过将子网掩码与主机B的IP地址相与发现目的主机与自己在同一网段中,于是主机A获取主机B的MAC地址将按以下过程进行。

  • 主机A首先在自己的ARP缓存表中检查主机B匹配的MAC地址,若有,则封装数据包填写好主机B的MAC地址,然后发送数据包;否则,向所在网段广播ARP请求,执行下面将的流程。

5c374f830001f14106460624.jpg

  • 同网段上的所有主机都会收到主机A的ARP请求并且检查请求的IP地址是否与自己的IP地址匹配。若是不匹配,则求其该ARP请求

  • 主机B发现自己的IP地址与请求的IP地址匹配,则将主机A的IP地址与MAC地址(映射关系)添加到自己ARP缓存表。

  • 主机B将包含其MAC地址的ARP响应消息单播发送给主机A

  • 主机A收到来自主机B的响应消息后,就会把主机B的IP地址与MAC地址的映射关系存入本地ARP缓存表中。该映射记录的有效时限默认是120s,当超时后,若在与主机B通信则重复请求过程。得到主机B的MAC地址后,就可以与主机B正常通信了。

相互通信的主机在不同网段

5c374f840001977208140358.jpg

5c374f8500018bfb06990204.jpg

不同层次、不同区间的源地址和目的地址的转换
  • 当主机A与主机B不在同一网段时,主机A就需要通过网关将信息发送出去。主机A会按照第一种情况得到网关的MAC地址,然后封装数据,将封装好的数据发送给网关。在封装数据包时,源IP地址和源MAC地址填的就是主机A的IP和MAC地址,目的IP填为主机B的IP地址,目的MAC地址填网关(信息是通过网关再传出去)。

  • 网关收到该数据包后,发现目标MAC地址是自己,但是目标IP确实其他主机,所以它不再继续向上处理这个数据包。而是将数据包发送给下一跳路由(查路由表得出下一跳路由),发送前修改数据包的目的MAC地址为下一跳路由器的MAC地址(此地址由ARP请求获得)。

  • 直到到某一路由器时,该路由器发现,该数据包的目的IP地址在自己所连的网段中,便先获取到主机B的MAC地址,然后修改数据包的目的MAC地址,就可以将数据包发送给主机B。由此实现不同网段的主机A和B的通信。

得出的几点结论

  • 需要注意ARP是解决

    同一局域网

    上的主机或路由器的IP地址和硬件地址映射问题。

  • 当源主机和目的主机不在不同一网段上时,数据包就会经过路由转发,数据包的目的MAC地址也将不断变化,但是源IP和目的IP是不会变的。在同一网段,源主机就会直接使用ARP请求得到目的主机的MAC地址。

  • 总的来说ARP请求过程可以概括为:

    广播请求,单播回应

回到目录

ARP缓存表

ARP缓存包含一个或多个表,这些表被称为ARP缓存表,是用于存储IP地址与其对应的MAC地址。为什么要把这些映射关系存储起来呢?目的就是为了提高工作效率。将访问的主机的MAC地址记下来,下一次访问时就不必在启用ARP协议(当然,映射记录是由生存期限的)。

回到目录

可以提高ARP效率的方法

ARP缓存是一种提高ARP效率的方法。还可以有:

  • 收到ARP请求的所有主机都缓存其中的IP/MAC,而不是直接丢弃

  • 主机入网时,主动广播它的IP/MAC地址对

回到目录

ARP抓包分析

ARP帧格式

请查看上一篇文章了解:https://www.cnblogs.com/myworld7/p/8430223.html#_label2

ARP请求包

广播发送

5c374f8600017afb06350505.jpg

ARP响应包

单播发送

5c374f870001d9a406660547.jpg

无偿ARP/免费ARP

广播发送

5c374f880001997507180537.jpg

回到目录

小结

要想多了解协议,还是的抓包慢慢分析才得行。

参考:https://www.cnblogs.com/chengsheng/p/5628319.html

原文出处:https://www.cnblogs.com/myworld7/p/10227148.html 

作者:SakuraOne  

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
100
获赞与收藏
361

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消