一台主机A如果要向目标主机B发送数据,无论主机B在本网段还是在远程网络,这些需要发出去的数据包中需要四样必不可少的地址,那就是源IP地址和源MAC地址,以及目标IP地址和目标MAC地址,当主机B在封装数据包时,自己的IP地址和MAC地址可以正确地,轻易地封装进去,目标IP自己也知道,可以封装进去,可是,关键就在目标MAC该如何得来,由于主机A曾经和主机B发生过通信,曾经通过ARP得到过目标主机的MAC地址,那么它就会把主机B的IP地址和MAC对应地记录下来,放在缓存表中,以备下一次再使用,但要说明的是,因为考虑到主机B有更换网卡的可能,所以无论何时当主机A再次收到关于主机B的MAC地址更新信息,它都将刷新自己的ARP缓存表,将新收到的MAC地址和主机B的IP地址对应起来,正因为主机A在任何时候收到ARP数据包,都将再次更新ARP缓存,所以导致了另外一个令人头疼的事情发生:

如果现在一台不怀好意的主机C想要窃取网络中的数据或者其它目的,那么这时它就可能向A发送一个ARP数据包,数据包中声称主机B的MAC地址已经改变,当主机A收到后,得知此消息,就立刻更新原来主机B的MAC地址,当它要和主机B进行通信时,就会在数据包中封装新的MAC地址,如果这个MAC地址是前面主机C的,那么主机A就会把本来要发给主机B的数据错误地发给了主机C,被主机C窃取成功,而主机C为了掩人耳目,“看”过数据后,再发给主机B,从而不影响主机A和主机B之间的正常通信,但如果前面主机C发给主机A的ARP更新包中的MAC地址不是自己的,而是伪造的根本不存在的MAC地址,那么这时主机A和主机B之间就不可能再正常通信了,这就是ARP病毒对PC主机在网络间通信造成的严重威胁和后果,造成数据被窃听或网络不通的惨局!

虽然局域网之间通信是主机与主机之间直接通信,但是,如果要与外网的主机通信,这时,还需要用到网关或路由器(很多情况下一个局域网的路由器就直接充当网关的角色),当局域网内的某台主机A想要与外网的主机通信,那么这时,它在对数据包进行封装时,目标MAC地址需要写成网关的MAC地址,再交由网关代为转发,发到网外去,如果这台主机A在使用ARP数据包请求网关的MAC地址时,出现一台不怀好意的主机向主机A回应了一个ARP回应报,数据包中就将这台病毒主机或者根本不存在的MAC地址告诉主机A,那么这时,主机A发给远程网络的数据由于经过不怀好意的主机“中转”了一下,造成数据被窃听,或因为错误的目标MAC,而最终没有网关给数据进行转发,导致与外网不能能正常通信,这就是ARP病毒不仅能够从主机下手来影响局域网内的通信,也能影响局域网与外网的通信,既然ARP病毒可以从主机的下手影响局域网与外网通信,那么它同样又可以从网关和路由器下手来影响网络间的通信,(多数时候路由器直接充当网关),那么ARP病毒是在什么时候来让路由器或网关的ARP缓存产生混乱的呢?那么请先回想一下,局域网内的主机向外网发送数据时,要通过ARP来得到网关或路由器的MAC,就有可能遭到ARP欺骗,然后,当网关或路由器收到来自外网的数据包要发到本地网络时,那么它同样要把这些数据包的目标MAC地址改写成最终接收PC主机的MAC地址,它首先是查自己的ARP缓存表,如果存在它需要的条目,就直接封装进数据发出去,如果缓存表里没有该怎么办呢?不错,还是使用老方法,用ARP广播来请求目标的MAC地址,所以这时又会出现什么情况呢,那就是遭到不怀好意的主机发来的错误的ARP回应,让网关路由器在数据包中封装了错误的目标MAC地址,从而造成数据包没有能够正确到达目的地,从而达到这台不怀好意的主机窃取数据和影响网络通信的目的,因为路由器随时收到主机发来的ARP更新包,都会再次把新的MAC和原来的IP地址对应起来,写入缓存表。到这里为止,可以得知,ARP病毒可以通过回应错误的ARP数据包来让主机和路由器的ARP错误,也可以通过随时发送错误的ARP更新包来让主机和路由器的ARP缓存错误,这些错误导致网络的数据被窃听和丢失,都是针对主机和路由器下手的,那么有人应该会问,交换机会不会因为ARP病毒而产生错误呢?那么我可以郑重地告诉大家,ARP病毒所产生的错误与交换机无任何关系,也对交换机不能造成任何后果,理由如下:

无论交换机在收到主机或者路由器发过来的数据时,都有责任对这些数据进行转发,当它从某个端口收到数据包后,读取数据包中的源MAC地址,从而就得到了此端口和MAC地址的映射表,当它在映射表中还找不到目标MAC地址来确定应该将数据发向哪个端口时,它就会在除源端口之外的其它所有端口进行泛洪(类似广播),这时,因为是泛洪,所以真正的目标主机能够收到这些数据包,也因为交换机在转发数据包的时候,即使ARP缓存表是空的,它也不需要发ARP广播来请求MAC地址,所以也根本不存在ARP欺骗,如果下面继续有其它端口的数据要转发,交换机再使用上面同样的方法,来学习到每个端口对应的MAC地址,就是因为通过这样向其它端口泛洪来学习到端口和MAC地址的映射表,所以交换机从来没有收到过任何关于MAC地址到IP地址的ARP数据包,况且交换机也从来不读取数据包中的IP地址,在这里可以为交换机总结出:1,交换机任何时候都不关心IP地址,因为交换机是二层设备,(三层交换机除外,三层交换机就当路由器来对待了)。2,交换机中的ARP缓存是端口号到MAC地址的映射,与IP地址无关。3,交换机中的ARP缓存表是通过在转发数据包时读取源端口和源MAC时记录下来的,而不是通过ARP广播去询问的。4当交换机的缓存表不能反应出目标MAC和端口的映射时,就会向除源端口外的每个端口发一份(泛洪),以保证真正的目标主机能够收到数据。5因为ARP缓存中找不到端口号和MAC地址的映射时,就会泛洪,所以人工地绑定端口和MAC地址只是解决泛洪,让交换机不要因为找不到目标MAC地址而向每个端口都复制数据,这种方法与解决ARP欺骗没有任何关系!

请仔细理解交换机的工作原理:交换机是根据自己的ARP缓存表来提供数据转发的,ARP缓存中记录着端口号对应的MAC地址,当收到数据需要转发时,先读取数据中的源MAC地址,再看来自哪个端口,然后记录下来写入ARP缓存表,最后交换机查找ARP缓存表以确定该把数据发向哪个端口,如果ARP缓存中没有找到答应,那么这时交换机便决定把数据向除了向源端口之外其它所有端口都复制一份,这样便可以万无一失地把数据送到目的地,除非根本没有这个目的地,所以交换机的ARP缓存表是通过读取需要转发的数据的源MAC和源端口来学习到的,不是通过ARP询问来更新的!

ARP欺骗原理详细介绍相关推荐

  1. ARP欺骗原理与模拟

    ARP欺骗原理与模拟 本文只是协议学习中的心得,所示范的试验方法仅用作学习的目的,请大家不要恶意使用 一 什么是ARP协议? ARP协议是"Address Resolution Protoc ...

  2. 网络安全—arp欺骗原理数据包分析

    网络安全-arp欺骗原理&数据包分析 提要:arp欺骗虽然比较简单,但是在日常面试中也是会被经常问到的问题,本文将通过kali中的arpspoof工具进行arp攻击,同时使用wireshark ...

  3. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

  4. 局域网 ARP 欺骗原理详解

    局域网 ARP 欺骗原理详解 ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的 ...

  5. ARP欺骗原理及实验

    ARP欺骗原理 遵守我国网络安全法,此文章仅用于网络安全学习 ARP协议是地址解析协议,其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,ARP协议将已知IP地址转换为MAC地址 交 ...

  6. ARP欺骗原理及复现

    免责声明:本文章所涉及到的内容仅可用于学习交流,严禁利用文中技术进行违法行为,否则后果自负! 前置条件: 1.kali linux 2.ettercap工具 3.一个具有收发功能的网卡 4.我们的老伙 ...

  7. ARP欺骗原理及实现

    目录 一.ARP协议原理 二.ARP协议的报文字段以及字段含义 三.ARP攻击与欺骗 1.ARP攻击原理 2.ARP欺骗原理 四.ARP攻击与欺骗演示 五.Windows使用ARP命令 六.ARP攻击 ...

  8. java编程实现arp欺骗_局域网 ARP 欺骗原理详解

    局域网 ARP 欺骗原理详解 ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的 ...

  9. [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及防御机理

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了一个phpMyAdmin 4.8.1版本的文件包含漏洞,从配置到原理, ...

最新文章

  1. Android LayoutInflater详解(转)
  2. Oracle数据库分组函数详解
  3. C# Httpclient编程
  4. 【Redis学习】Redis的安装、管理、适用场合以及使用
  5. 触发键盘_雷蛇这款光轴机械键盘开箱评测,光速触发,颜值爆表
  6. Java编程学习并不难,有坚持的动力与良好的心态尤为重要
  7. 洪筱楠(1996-),女,对外经济贸易大学国际经济贸易学院经济学荣誉学士实验班本科生。...
  8. 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
  9. matlab dicom图像异常,用Matlab处理Dicom图像
  10. word20161219
  11. 數位照片的最佳夥伴 - Picasa2
  12. 安装Ubuntu后必须要做的几件事(一)--基础应用篇
  13. 全国大学生数学竞赛备考——高数上(极限、导数、微分、积分、级数)
  14. 基于微信小程序的相关管理系统设计与实现开题报告的思路及方法
  15. thinkphp系列
  16. lol8月7号服务器维护,LOL8月7日更新了什么内容 8.15新版本更新维护公告
  17. 消费金融加速内卷,地推要求硕士起步…
  18. [K8S]error execution phase preflight: couldn‘t validate the identity of the API Server
  19. linux 通过ssh上传文件
  20. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)

热门文章

  1. AE牛顿动力学插件:Motion Boutique Newton 3 Mac(支持ae2021)
  2. Nifty File Lists for Mac(文件列表创建工具)
  3. macOS Big Sur正式版发布!Big Sur安装失败?更新时卡住了怎么办?
  4. 计算机采用二进制形式的表示,计算机部信息的表示及存储往往采用二进制形式,采用这种形式的最主要原因是...
  5. 1.9 编程基础之顺序查找 09 直方图 9分 python
  6. 1.5编程基础之循环控制 01 求平均年龄
  7. pythongui界面复选框数值选择并求和_如何使用Python从图像中分离复选框按钮和复......
  8. 怎么把图片四角去掉_端午“粽子”怎么做,有哪几种包法,嘉兴粽子闻名全国,软糯可口...
  9. BootStrap笔记-文字排版
  10. Python笔记-获取某贴吧页面所有的贴吧id