ARP协议map4(3层网络层的协议)

news2024/10/7 14:25:12

数据来源

一、广播与广播域概述

1、广播域广播域

        广播:将广播地址做为目标地址的数据帧

        广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,这样通信效率更高)

下图每个圈都是一个广播域,说明了交换机隔离不了广播域,路由器可以隔离广播域(物理隔离)

2、MAC地址广播

        广播地址为:FF-FF-FF-FF-FF-FF

3、IP地址广播

        255.255.255.255

        广播IP地址为IP地址网段的广播地址,如:192.168.1.255 /24

二、ARP协议概述

1、什么是ARP协议

        Address Resolution Protocol,地址解析协议,是一个内网协议工作在内网,跑不出当前局域网,会被路由器隔离

        作用:将一个已知的IP地址解析成MAC地址

        原理:1)发送ARP广播请求

                                ARP报文内容:我的IP是:10.1.1.1 我的MAC地址是:AA

                                                          谁是10.1.1.3 ? 你的MAC地址:?

                   2)接收ARP单播应答

                          我是10.1.1.3  我的MAC地址:BB

 2、ARP把IP解析MAC地址的过程如下(两个步骤一问一答):

1)PC1发送数据给PC2,查看缓存没有PC2的MAC地址

2)PC1发送ARP请求消息(广播)

3)所有主机收到ARP请求消息

  • PC2回复APR应答(单播)
  • 其他主机丢弃

 4)PC1将PC2的MAC地址保存到缓存中(关机就会消失),发送数据

文字详细解析:

步骤一:ARP广播请求,内网广播(通过目标ip询问目标MAC地址)

        1)如:A与B两台PC通信,A的ip是10.1.1.1,B的ip是10.1.1.3,A向B发送一条消息“老铁,今天拉屎没呀”,然后A这台PC就要把消息“老铁,今天拉屎没呀”封装成数据帧(IT的最小传输数据的单位就是帧,也只有封装成数据帧消息才能发送出去)。

        帧结构图:

        

         MAC子层(帧头)构成:目标MAC地址(6字节),源MAC地址(6字节),类型(2字节),总的大小=6+6+2 = 14 字节

        FCS(帧尾):提供了一种错误检测机制,用来验证帧在传输过程中的完整性(4个字节)

数据帧的封装过程: 

  • 5层应用层的软件输入了数据:“老铁,今天拉屎没呀”
  • 4层传输层的防火墙封装TCP/UDP头
  • 3层网络层的路由器封装IP包头
  • 2层数据链路层的网卡封装帧头和帧尾

        2)到这2层封装帧头就会卡住了数据发不出去,因为帧头包括了源MAC地址目标MAC地址,但是现在A不知道B的MAC地址(目标MAC地址),这时RP协议就站出来了,说这个问题我能解决,然后就会回到网络层(3层)的ARP协议上交给ARP协议处理。

        ARP协议处理过程:ARP协议会生成一个独立的报文(全称:ARP请求解析报文,简称:ARP请求报文)。ARP请求报文的内容就两句话1. 我是的IP的10.1.1.1,MAC地址是某某某(表名自己身份)2. 谁是10.1.1.3(目标ip),你的MAC地址是__?___(让别人填空)

        3)ARP协议生成这两句话之后(请求报文)就会发送给2层数据链路层的网卡(A的网卡),网卡收到请求报文之后说你这是请求报文是吧,我要让所有人听到你的心声!

        这时A的网卡就会给请求报文前面加帧头和帧尾帧头的源MAC地址就写自己的,目标MAC地址就写FF-FF-FF-FF-FF-FF(12个F),这时ARP请求报文就鸟枪换全地图炮变成ARP请求广播报文(帧结构)

        4)然后网卡就会把这个帧(ARP请求广播报文)传给交换机,交换机就会读取帧头的目标MAC地址,发现目标MAC地址是12个F的(MAC广播地址),就会把帧向所有的端口(和交换机连接的接口)广播出去,所有端口的设备都能收到这个帧,除了目标ip地址与本机相同的才会做出响应,其他的设备都会丢弃这个帧(黑客除外)。

步骤二 :目标ARP单播应答(收到了询问,响应MAC地址)

        5)其他设备(pc)收到数据帧的大概反应帧传到数据链路层(2层)的网卡的时候首先查看帧头(MAC子层)的目标MAC地址,发现是12个F,然后再查看帧头类型字段发现不是0800(IP协议),而是0806(ARP协议),然后网卡就明白了这个帧是ARP请求广播报文,然后就解封装(把帧头和帧尾拿掉),送到网络层(3层)的ARP协议上,ARP协议就会读取帧的内容,发现是找IP10.1.1.3的,就会进行比较我这台设备的IP是10.1.1.3?

        不是,干掉

        是(那就是来到了B这台PC),ARP协议查看报文内容,发现这是A这台PC发送过来的报文,目的是询问我的MAC地址,然后B这台PC就把自己的MAC地址(如:CC)在请求报文上填上去,传给数据链路层(2层)的网卡,网卡又开始他的骚操作,封装数据加帧头和帧尾,组成数据帧。这里帧头的源MAC地址是B自己的MAC地址,目标MAC地址是A的(A的请求报文包含里自己的MAC和IP地址)

        网卡处理完之后就把数据帧传给交换机,交换机查看帧头目标MAC地址是A这台PC的,就直接把数据转发过去,A收到了B的ARP单播应答之后就知道了目标MAC地址,然后就会把地址存储在ARP缓存内(在这之后向B发送请求,就不需要进行广播,而是读缓存),存储完成之后继续完成之前没发送出去的数据帧,数据帧就会给交换机,由交换机读取帧头的目标MAC地址把数据转发出去。

 ARP把IP解析MAC地址的过程现实中都是自动完成的,了解即可

Windows 系统中的ARP命令

       arp -a          # 查看ARP缓存命令

       arp -d         # 清除ARP缓存命令(关机也会消失,开机就会自动学习)

      arp -s          # ARP绑定

让ARP开始工作便捷的方法就是直接使用命令:ping   目标地址  

三、ARP攻击或欺骗

  • 欺骗其他所有的计算机
  • 欺骗被攻击计算机

原理:通过发送伪造虚假的ARP报文(广播或单播),来实现的攻击或欺骗。 

           攻击的报文内的MAC地址是假的,目的是为了中断通信/断网。

           欺骗的报文内的MAC地址是攻击者自己的MAC地址,目的是为了监听、窃取、篡改、控制流量,但不中断通信

        对于ARP广播发起请求这一方来说,ARP单播应答是谁后到就学习谁的,就是最后到达的才是最后能生效的,后到的ARP单播应答会不断更新掉前面到达的,所以就很容易被欺骗,我用软件随便编造一个目标MAC地址一直给他ARP单播应答,他就一直获取不到正确的地址,最后获取到的地址是我给他的,之后他的数据都会发给我的电脑,这就能实现数据监听。

攻击:

通过单播应答攻击: 

上面说的ARP把IP解析MAC地址的过程都是双方处于同一网段的情况下 ,如果我要访问外网比如www.baidu.com呢 ?

        1)PC还是会发起ARP广播发起请求,不过报文的内容有些变化:1. 我是的IP的10.1.1.1,MAC地址是某某某(表名自己身份)2. 谁是10.1.1.254(网关ip地址),你的MAC地址是__?___(让网关填空)

        2)网关收到ARP的广播请求后,把自己的MAC地址(如:BB)填到报文内,然后把这个请求报文(帧)给到交换机,交换机根据帧头的目标MAC地址单播应答转发给PC,之后PC就会把之前要发送的数据帧发送给网关,也就是路由器,PC连接外网必须通过路由器。

        3)如果这时有人使用ARP攻击,就是伪造虚假的ARP报文和虚假的MAC地址,给PC单播应答,这个虚假的帧内的目标MAC是ee,但真实网关是BB,这样以后pc的数据帧都到不了网关(路由器),都发给虚假的MAC地址ee了,这样PC就无法连接外网,就断网了(当然攻击者除外)。

通过广播报文攻击: 

        攻击方的PC发起ARP广播发起请求,报文的内容有些变化:1. 我是的IP的10.1.1.254(伪造的),MAC地址SSS(表名自己身份)2. 谁是10.1.1.10(目标ip地址),你的MAC地址是__?___

        这个时候在10.1.1.0这个网段的所有PC都会收到这个请求报文,虽然这些PC可能都不是10.1.1.254,甚至10.1.1.254可能都不存在,ip虽然匹配不上,PC不会做出响应,但是这些PC很贪婪,还是会把这个请求报文中的IP和MAC地址记录在缓存中,以后这些PC访问网关时,他们这10.1.1.0的网段的网关刚好是10.1.1.254,那他们以后发送给网关的请求都有可能发送到我伪造的MAC地址(SSS)上

欺骗:

ARP欺骗演示:

  • ARP欺骗主机(同一局域网成员 )

        1)PC1发起ARP广播发起请求,报文的内容有些变化:1. 我是的IP的10.1.1.2,MAC地址CC(表名自己身份)2. 谁是10.1.1.3(目标ip地址),你的MAC地址是__?___

        2)这里设:这个局域网中10.1.1.3这个IP就是李四用的电脑,但是这时张三站出来了,他把他的IP伪造成10.1.1.3,这一过程中李四的电脑可能也回应了,但是没有用,对于ARP广播发起请求这一方来说,ARP单播应答是谁后到就学习谁的,张三的电脑一直在伪造IP和MAC地址一直在单播应答。

        3)最后PC1启用的MAC地址大概率都是张三MAC地址,PC1就会把数据都发到张三的电脑上,张三这时就可以查看这些信息过滤出有价值或直接篡改数据(原来PC1可能就发个问候语,张三就改成问候祖宗的),然后再把数据转发给数据真正的主人李四(这个过程中原来报文内的MAC地址CC,已经被改成张三的伪造的MAC,交换机转发只认MAC地址),李四会回复消息给PC1也会发送到张三的电脑上,张三又可以过滤有价值的信息,再转发给PC1,在这过程中他们都是可以正常上网的,如果没学过这方面的知识的人是很难发现他们之间的通信多出个中间人,如下图:

详细示意图 

  • ARP欺骗网关 

        甚至张三直接截取PC1获取李四的上网数据,监听他们上网都在干啥。

        实现:
                在PC1和李四寻找谁是网关的时候,张三又站出来了张三把自己的IP伪造成网关,网关的MAC是他自己,张三窃取完数据(包括他们的游戏数据还是在看视频),再转发给真正的网关。(每次PC重启ARP缓存都会清空,PC要上网就会查缓存,没找到进行ARP广播,张三的机会就来了),如下图:

总结: 

        看到这里会发现,ARP攻击和ARP欺骗原理都是一样的,都是通过发送虚假的ARP报文,但是报文内容不一样,

实战测试更新中。。。 

四、ARP协议没有验证机制

只要收到ARP报文无论是真是假,都会学习,然后都会把报文中的MAC地址存储到ARP缓存内

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通关算法题之 ⌈数组⌋ 上

滑动窗口 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 输入: s "abcabcbb" 输出: 3 这就是变简单了,连 need 和 valid 都不需要,而且更新窗口内数据也只需要简单的更新计数器 …

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P179-188)

一 准备工作 1 新建模块ssm com.atguigu.ssm 2 导入依赖 <packaging>war</packaging><properties><spring.version>5.3.1</spring.version> </properties><dependencies><dependency><groupId>org.springframew…

Day10--初步实现自定义tabBar的效果

承接上文配置信息之后。 1.添加tabBar代码文件 我的操作&#xff1a; 1》在文件区新建一个custom-tab-bar文件夹 2》并在其中新建一个index组件 3》文件区展示图 4》最终的效果图&#xff1a; **************************************************************************…

界面组件DevExpress Reporting v22.1亮点 - 报表设计器功能全面升级

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reporting v22.1版本已正式发布&am…

数据结构之二叉树(前提知识)

文章目录前言**一、树****二、树的相关概念****节点的度****叶节点****分支节点****子节点****父节点****兄弟节点****树的度****节点的层****树的高度****祖先****子孙****森林****三、树的表示****孩子表示法****左孩子右兄弟法****双亲表示法****四、树在实际中的应用****总…

iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享

AirServer是一款Mac应用程序&#xff0c;可将AirPlay / AirTunes的音频&#xff0c;视频&#xff0c;照片&#xff0c;幻灯片和镜像接收功能添加到Mac电脑。它可以实现将iPhone手机或Mac电脑上的媒体文件以及其他操作投射到Mac电脑上。使用AirServer&#xff0c;可以从Mac&…

如何利用DGL官方库中的rgcn链接预测代码跑自己的数据集(如何在DGL库的链接预测数据集模块定义自己的数据集类)

最近在忙我的省创&#xff0c;是有关于知识图谱的&#xff0c;其中有一个内容是使用rgcn的链接预测方法跑自己的数据集&#xff0c;我是用的dgl库中给出的在pytorch环境下实现rgcn的链接预测的代码&#xff0c;相关链接贴在这里&#xff1a; dgl库中关于rgcn的介绍文档 dgl库…

联盟快应用-如何进行测试?

官方文档&#xff1a;快应用-无需安装&#xff0c;即点即用-厂商联盟官方网站 什么是快应用&#xff1f; 可以简单理解为是另一种小程序。 快应用是一种新的应用形态&#xff0c;以往的手机端应用主要有两种方式&#xff1a;网页、原生应用&#xff1b;网页无需安装&#xff…

阻塞车间调度

阻塞车间调度 当前机器上的作业处理必须保留在该机器上&#xff0c;直到下一台机器可用于处理为止。也就是说如果该作业要执行的下一个工序的机器被使用&#xff0c;则该机器必须被占用。 n个作业必须在m个机器f个工厂上进行处理&#xff0c;在每一个工厂中连续机器之间没有缓…

Android11 framework Handler

Android11 framework Handler引言Handler工作流程MessageQueue主要函数Looper主要函数思考1.一个线程有几个handler&#xff0c;有几个looper2.为什么handler会有内存泄漏3.如果想要在子线程new Handler怎么做&#xff1f;4.子线程中的loop如果消息队列中没有消息处理的时候怎么…

深入底层学git:目录中包含的秘密

1.Git简介 Git具有最优的存储能力&#xff0c;在没有远端git服务器的情况下&#xff0c;git本地就可以独立作为版本管控系统&#xff0c;这其中.git裸仓库中起了关键作用&#xff0c;那么我们一起来看看.git下都放了哪些文件。 打开Git Bash&#xff0c;切换到项目目录&#x…

王道考研——操作系统(第二章 进程管理)(进程;线程)

一、进程的概念、组成、特征 进程的概念 进程的组成——PCB 进程的组成——程序段、数据段 知识滚雪球&#xff1a;程序是如何运行的&#xff1f; 进程的组成 进程的特征 知识回顾与重要考点 二、进程的状态与转换 进程的状态——创建态、就绪态 进程的状态——运行态 进程的…

刷题日记【第十二篇】-笔试必刷题【洗牌+MP3光标位置+年终奖+迷宫问题】

洗牌【编程题】 import java.util.*;public class Main {// 左: i --> 2*i;// 右: in --> 2*i 1;private static void playCard(int[] cards, int n, int k ) {for (int i 0; i < k; i) {//一次洗牌的顺序int[] newCards new int[cards.length];//遍历编号为0-n-1…

【Servlet】2:认识一下Web服务器——Tomcat

目录 第三章 | Tomcat 认识与配置 | 章节概述 | HTTP服务器概述 | Tomcat 安装与配置 | Tomcat 的目录结构、端口号 第四章 | Tomcat 基本使用 | 章节概述 | 本地Tomcat 静态资源网站访问 | IDEATomcat 静态资源网站访问 | IDEA中最基础web项目的目录结构 本文章属于后…

从零开始操作系统-07:APIC

这一节主要主要是APIC。 所需要的文件在Github&#xff1a;https://github.com/yongkangluo/Ubuntu20.04OS/tree/main/Files/Lec7-ExternalInterrupt 历史方法&#xff1a;PIC&#xff08;Programmable Interrupt Controller&#xff09; Intel 8259&#xff1a; APIC&#…

小侃设计模式(十三)-策略模式

1.概述 策略模式&#xff08;Strategy Pattern&#xff09;是一种比较简单的模式&#xff0c;它定义了算法家族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让算法的变化&#xff0c;不会影响到使用算法的客户。策略模式具有较强的实用性&a…

ARM学习扫盲篇(一):CPSRSPSR、LcacheDcache、w/parityw/ECC

1、CPSR&SPSR CPSR—程序状态寄存器(current program status register) SPSR—程序状态保存寄存器&#xff08;saved program status register&#xff09; Icache&Dcache icache用来缓存指令&#xff1b; dcache用来缓存数据&#xff0c;dcache用的前提是mmu要启动…

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P177-178)

目录 ContextLoaderListener 一 ContextLoaderListener 二 测试ContextLoaderListener 1 新建模块spring_listener com.atguigu 2. 导入依赖 3 .转web 4 .web.xml 5 springmvc.xml 6 .spring.xml 7 首页index.html 8 控制层 HelloController 9 service接口…

【24计算机考研】备考前必须了解的避坑小知识,建议收藏

前言 我们可能已经了解到最近两三年的考研趋势&#xff0c;疫情的原因&#xff0c;不断增加的二战三战考生&#xff0c;导致每年考研人数持续增长&#xff0c;那么&#xff0c;如何在相同的时间里&#xff0c;赶超你的竞争对手&#xff0c;避坑 绝对是很重要的。 考研将是一场…

【Spring】——9、如何指定初始化和销毁的方法?

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…