• wireshark:是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,是目前全世界最广泛的网络封包分析软件

什么是ARP协议

  

协议分析篇第一个要研究的就是ARP协议。ARP(Address Resolution Protocol,地址解析协议)用于将IP地址解析为物理地址(MAC地址)。这里之所以需要使用MAC地址,是因为网络中用于连接各个设备的交换机使用了内容可寻址存储器(CAM,Coment Addressable Memory)。该存储器维护的ARP表列出了它在每一个端口的所有连接设备的MAC地址

当交换机收到了一个指向特定MAC地址的网络流量,它就会使用这个表,来确定应该使用哪一个端口发送流量。如果目标MAC地址是未知的,那么这个传输设备会首先在它的缓存中查找这个地址,如果没有找到,那么这个地址就需要通过在网络上额外的通信中解析了。或者我们可以结合下图来说明这个问题:

由上图可见,OSI模型将网络分为了七层,而IP地址位于第三层,也就是网络层,MAC地址位于数据链路层,也就是第二层。那么在通过以太网发送IP数据包的时候,需要首先封装第三层和第二层的报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能直接跨越第二、三层,所以需要地址解析协议。而在使用了ARP协议后,计算机可以按照网络层IP数据包的头部信息,将硬件地址信息(MAC地址)对应起来,以保证通信的顺利进行。ARP协议的基本功能就是将一个已知的IP地址解析成MAC地址,以便主机之间可以正常地通信。

ARP协议是在RFC826中定义的。RFC(Request for Comments)是定义各种协议实现标准的官方文档,建议大家在学习网络知识的时候,应当多多参考这些资料,因为它最权威,也最全面。大家可以在RFC Editor的首页中搜索RFC文档,而在本次的课程中,我也给大家提供了RFC826文档,包括pdf格式以及txt格式,供大家学习参考。通过查看RFC826可以知道,其实ARP协议的解析过程只使用了两种数据包:一个ARP请求和一个ARP响应,如下图所示:

其详细工作原理为:

  • (1)当主机A想要给主机B发送数据时,主机A会首先在自己的本地ARP缓存表中检查与主机B相匹配的MAC地址。
  • (2)如果主机A在自己的缓存表中没找到主机B的相关条目,那么它就要想办法获取主机B的MAC地址。这就需要将ARP的请求帧广播到本地网络上的所有主机中。这个请求帧包含有主机A的IP地址和MAC地址,以及主机B的IP地址。网络中凡是收到请求帧的主机都会检查自己的IP地址是否与请求地址一致,如果不一致,则会丢弃该请求帧。对于上图来说,主机C和主机D会丢弃主机A发出的请求帧。
  • (3)主机B确定ARP请求中的IP地址和自己的IP地址一致,那么就会将主机A的IP地址和MAC地址添加到本地的缓存列表中。
  • (4)主机B将包含有自己MAC地址的ARP响应消息直接回复给主机A(单播)。
  • (5)主机A收到从主机B发来的ARP响应消息后,会将主机B的IP地址和MAC地址添加到自己的ARP缓存表中。接下来,主机A就可以向主机B发送消息了。

如果想要查看ARP缓存表,可以打开cmd,输入“arp -a”

输出的信息显示了本机接口为172.21.79.153地址的ARP缓存表。每行表示一个ARP条目。本地的缓存是有生命周期的,默认的ARP缓存表的有效期是120秒,过期后,需要重复上述过程。

可以看到,第1个数据包是一个ARP请求。我们可以通过Packet Details面板,检查以太网头部信息来确定这个数据包是不是一个真的广播数据包。

首先在Frame帧中,可以知道该数据包的大小为42个字节。

其次检查一下Ethernet部分的内容,会发现这个数据包目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,说明当前数据包会被广播到当前网段中的所有设备上。而这个数据包中以太网的源地址就是本机的MAC地址

接下来展开ARP请求的头部信息。按照顺序依次为硬件类型、协议类型、硬件地址长度、协议长度、操作码(该值为1,表示这是一个ARP请求包)、发送方的MAC和IP地址,以及接收方的IP地址。而我们想要获取的目标MAC地址还是未知的,因此就以全0的形式显示。

下面我们研究一下第二个数据包,来看看ARP的响应:

其实ARP响应的数据包和ARP请求的数据包很相像。不同之处表现在以下几点:首先,用于响应的数据包的操作码(Opcode)现在是2,表明这是一个用于响应的数据包;其次,发送方的MAC地址和IP地址变成了目标MAC地址和IP地址;最后,响应数据包中的内容都是可用的,也就是说我们已经获取了192.168.0.1主机的MAC地址,即00:13:46:0b:22:ba,那么接下来就可以正常通信了。

最后我们再讨论一个关于免费ARP(gratuitous ARP)的例子。由于网络中一个设备的IP地址是可以改变的,而MAC地址不会改变。那么一旦出现IP地址改变的情况,网络主机中缓存的IP和MAC地址映射就不再有效了。那么为了防止由于映射失败造成的通信错误,免费的ARP请求会被发送到网络中,强制所有收到它的设备使用新的IP以及MAC地址映射来更新缓存。通常,它发生在系统引导期间进行接口配置IP地址出现变化的时候。

现在来分析一个免费的arp包

首先我们可以看到这个数据包是以广播的形式发出的,这样一来,网络上的所有主机都能收到它。接下来我们可以发现,发送方的IP地址和接收方的IP地址是一致的。网络中的其它主机收到这个数据包之后,它会让这些主机使用新的IP和MAC地址映射关系来更新它们的ARP表。由于这个ARP数据包是源主机未经请求主动发出的,并导致了目标主机更新了ARP缓存,所以称之为免费的ARP。 当然也以进行rpc欺骗 发送虚假mac 信息

从零开始学安全(四十二)●利用Wireshark分析ARP协议数据包的更多相关文章

  1. 从零开始学安全(四十四)●TCP三次握手四次挥手

    wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...

  2. 从零开始学安全(四十五)●browser_autopwn2漏洞利用配合Ettercap工具实施DNS欺骗攻击

    系统:kali 2019  工具Ettercap,Metasploit 环境内网地址 首先 cd /etc/ettercap/ 移动在ettercap 文件下 在用vim 打开编辑 etter.dns ...

  3. 从零开始学安全(四十六)●sqli-labs 1-4关 涉及的知识点

    Less-1 到Less-4  基础知识注入 我们可以在 http://127.0.0.1/sqllib/Less-1/?id=1 后面直接添加一个 ‘ ,来看一下效果: 从上述错误当中,我们可以看到 ...

  4. 从零开始学安全(四十)●上传文件MIME类型绕过漏洞防御

    MIME检测原理 服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的. php示例代码: if($_FILES['userfile']['type' ...

  5. 从零开始学安全(三十六)●利用python 爆破form表单

    import sys import requests from requests.auth import HTTPBasicAuth def Brute_Force_Web(postData): re ...

  6. 四十二:数据库之SQLAlchemy之数据查询懒加载技术

    懒加载在一对多,或者多对多的时候,如果要获取多的这一部分的数据的时候,通过一个relationship定义好对应关系就可以全部获取,此时获取到的数据是list,但是有时候不想获取全部数据,如果要进行数 ...

  7. 从零开始学安全(四十一)●初识Wireshark

    wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...

  8. NeHe OpenGL教程 第四十二课:多重视口

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. 网站开发进阶(四十二)巧用clear:both

    网站开发进阶(四十二)巧用clear:both 前言 我们在制作网页中用div+css或者称xhtml+css都会遇到一些很诡异的情况,明明布局正确,但是整个画面却混乱起来了,有时候在IE6下看的很正 ...

随机推荐

  1. c语言最大公约数及最小公倍数的详解

    今天我打算把,学习到的一些知识整理一下,方便给以后的学弟学妹做一个参考! 这一次是关于最大公约数和最小公倍数的知识:这是百度关于最大公约数的介绍 感谢我的一位学姐的博文,让我能够更快的明白! 求最小公 ...

  2. 再谈ERP选型

    这几天收到老友的消息,谈及他们公司ERP选型的结果,基本上确定了使用Oracle EBS,因此闹了接近一年的选SAP还是选Oracle的纷争落下帷幕. 这家企业我去年曾去交流过,跟他们聊了一下ERP行 ...

  3. CSS 圣杯布局 / 双飞翼布局的实现

    工作的越久,有些基础知识我们可能就逐渐淡忘了,今天我们来回顾一下css的圣杯布局和双飞翼布局, 这两个名词你可能不熟, 那三栏布局你肯定就非常熟悉了, 就是两边定宽, 中间自适应 的 布局 1 , 圣 ...

  4. Altium Designer快速调整丝印

    Altium Designer快速调整丝印 今天我为大家讲的内容是altium designer快速调整丝印,这是我们做完PCB设计布线完成后的下一个步,很多朋友都是非常熟悉的.但是我们很多人只会用a ...

  5. mysql 服务【安装】【启动】【停止】【卸载】【重置密码】

    windows安装:一.一机安装多个服务时,重复步骤,修改服务名即可: 1.mysqld install mysql_12336 --defaults-file="MYSQL_HOME\my ...

  6. 如何优雅的使用 参数 is null而不导致全表扫描(破坏索引)

    相信大家在很多实际业务中(特别是后台系统)会使用到各种筛选条件来筛选结果集 首先添加测试数据 ), Age INT) go CREATE INDEX idx_age ON TempList (Age) ...

  7. SQLServer之附加数据库

    附加数据库注意事项 必须首先分离数据库. 尝试附加未分离的数据库将返回错误. 附加数据库时,所有数据文件(MDF 文件和 LDF 文件)都必须可用. 如果任何数据文件的路径不同于首次创建数据库或上次附 ...

  8. WPF软件开发系统之三——自助购票取票、自助选座系统

    本系统使用.Net WPF开发,运行于Windows操作系统,电脑或者触摸屏设备(包括竖屏). 本系统开发背景:景点.影院.或商场的自助购票.取票系统. 图书馆.自习室的选座.占座系统. 功能包括:选 ...

  9. HDP 2.6 requires libtirpc-devel

    HDP 2.6 requires libtirpc-devel 个问题,截止 Mustafa Kemal MAYUK 2017年06月30日 06:30 hadoopPowerSystems Hell ...

  10. 多标签分类的结果评估---macro-average和micro-average介绍

    一,多分类的混淆矩阵 多分类混淆矩阵是二分类混淆矩阵的扩展 祭出代码,画线的那两行就是关键啦: 二,查看多分类的评估报告 祭出代码,使用了classicfication_report() 三,宏平均与 ...