【网络协议】精讲ARP协议工作原理!图解超赞超详细!!!

  亲爱的用户,打开微信,搜索公众号:“风云说通信”,即可免费阅读该文章~~

目录

前言

1. ARP协议介绍

1.1 ARP协议功能

1.2 ARP请求报文

1.3 ARP工作原理

2. ARP 缓存超时

2.1 RARP

3. ARP 攻击

3.1 ARP 攻击分类


前言

        首先,我们要搞明白一个问题,为什么需要ARP协议呢?

    之前在IP数据报中看到,我们需要在首部填写源地址目的地址,这两个地址是Mac地址。那什么是Mac地址呢?Mac地址又称物理地址,请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴。一般在在网卡上。

这是由于A设备给B设备发送数据报时,可能不知道B设备的mac地址,所以就需要通过ARP协议去查找。

图片

  • step1:  每台主机都会在自己的ARP缓冲区建立一个ARP列表,以表示IP地址和Mac地址的映射关系。当源主机给目的主机发送数据报,会先检查本地的ARP列表是否存在映射关系,如果有,则直接返回

  • step2:如果没有,则向本地网段发送一个ARP请求的广播包,查询改主机对应的Mac地址

  • step3:此ARP请求中包含了源主机IP地址,源主机Mac地址,目的主机IP地址。网络中的所有主机收到ARP请求后,会检查包中的IP地址是否和自己的IP地址一致,如果不相同就忽略,如果相同则记录下发送端的Mac地址和IP地址添加到自己ARP列表(如果已经存在则更新),并且给源主机发送一个ARP响应数据报,告诉对方自己是要查找的ARP地址。

  • step4: 源主机收到ARP响应后,将得到的目的主机的Mac地址添加到自己的ARP列表中,并利用此信息开始传输数据(如果没有收到ARP响应,表示ARP查询失败

1. ARP协议介绍

        ARP 协议的全称是 Address Resolution Protocol(地址解析协议),它是一个通过用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。ARP 协议在 IPv4 中极其重要。

注意:ARP 只用于 IPv4 协议中,IPv6 协议使用的是 Neighbor Discovery Protocol,译为邻居发现协议,它被纳入 ICMPv6 中。

        简而言之,ARP 就是一种解决地址问题的协议,它以 IP 地址为线索,定位下一个应该接收数据分包的主机 MAC 地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的 MAC 地址。

1.1 ARP协议功能

  • 将一个已知的IP地址解析成MAC地址

  • 重复地址检测,检测地址冲突

无故ARP: 当一台设备获取到一个Ip地址时 ,会自动发送一个无故ARP,检测是否有设备已使用了此地址。

1.2 ARP请求报文

图片

1.3 ARP工作原理

图片

  1. PC1想发送数据给PC2, 会先检查自己的ARP缓存表,只在终端设备上。

  2. 如果发现要查找的MAC地址不在表中,就会发送一个 ARP请求广播,用于发现目的地的MAC地址。ARP请求消息中包括PC1的IP地址和MAC地址以及PC2的 IP地址和目的MAC地址(此时为广播MAC地址FF-FF-FF-FF-FF-FF)

  3. 交换机收到广播后做泛洪处理,除PC1外所有主机收到 ARP请求消息,PC2以单播方式发送ARP应答, 并在自 己的ARP表中缓存PC1的IP地址和MAC地址的对应关系, 而其他主机则丢弃这个ARP请求消息。

  4. PC1在自己的ARP表中添加PC2的IP地址和MAC地址 的对应关系,以单播方式与PC2通信。

1.4 windows当中如何查看arp缓存表(静态arp和动态 arp)

  • 查看arp缓存表 :arp -a

图片

  • 不加IP清除所有 :arp -d

  • 加IP只删除改IP :arp -d [IP]

  • 删除arp静态绑定:arp -s IP MAC

动态ARP表项老化:在一段时间内(默认120s)如果表项中的ARP映射关系始终没有使用,则会被删除。通过及时删除不活跃表项,从而提升ARP响应效率。

ARP工作原理(简化):

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

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

  3. 所有主机收到ARP请求消息,PC2回复ARP应答(单播),其他主机丢弃。

  4. PC1将PC2的MAC地址保存到缓存中,发送数据。

    图片

2. ARP 缓存超时

缓存超时通常与 ARP 缓存中的项有关系,arp 命令可以允许管理员设置永不超时。ARP 把保存在高速缓存中的每一映射地址都设置生存时间,一般为 20 分钟。如果是不完整的映射,那么缓存超时时间为 3 分钟,不完整的映射通常会强制发送一条不存在主机的 ARP 请求。

2.1 RARP

与 ARP 相对的,RARP(Reverse Address Resolution Protocol) 是将 ARP 反过来,从 MAC 地址定位 IP 地址的一种协议,将打印机服务器等小型嵌入式设备接入网络时会使用到。

平常我们设置 IP 地址一般会有两种方式,手动设置 和 DHCP 动态获取

但是对于嵌入式设备来说,它没有任何输入接口,也无法通过 DHCP 获取动态地址。

在这种情况下,就要使用到 RARP 了,你需要准备一个 RARP 服务器,在这个服务器上注册设备的 MAC 地址和 IP 地址,然后将设备接入网络,设备会发出一条 IP 和 MAC 地址的查询请求给服务器,服务器会告诉设备其 IP 地址和 MAC 地址。

3. ARP 攻击

ARP 是一种非常不安全的协议,目前已经有很多涉及 ARP 的攻击,最主要的就是使用代理 ARP 功能假扮主机,对 ARP 请求作出应答,通过伪造 ARP 数据包来窃取合法用户的通信数据,造成影响网络传输速率和盗取用户隐私信息等严重危害。

3.1 ARP 攻击分类

ARP 主要攻击方式分为下面这几种

  • ARP 泛洪攻击:通过向网关发送大量 ARP 报文,导致网关无法正常响应。首先发送大量的 ARP 请求报文,然后又发送大量虚假的 ARP 响应报文,从而造成网关部分的 CPU 利用率上升难以响应正常服务请求,而且网关还会被错误的 ARP 缓存表充满导致无法更新维护正常 ARP 缓存表,消耗网络带宽资源。
  • ARP 欺骗主机攻击:ARP 欺骗主机的攻击也是 ARP 众多攻击类型中很常见的一种。攻击者通过 ARP 欺骗使得局域网内被攻击主机发送给网关的流量信息实际上都发送给攻击者。主机刷新自己的 ARP 使得在自己的ARP 缓存表中对应的 MAC 为攻击者的 MAC,这样一来其他用户要通过网关发送出去的数据流就会发往主机这里,这样就会造成用户的数据外泄。
  • 欺骗网关的攻击: 欺骗网关就是把别的主机发送给网关的数据通过欺骗网关的形式使得这些数据通过网关发送给攻击者。这种攻击目标选择的不是个人主机而是局域网的网关,这样就会攻击者源源不断的获取局域网内其他用户韵数据.造成数据的泄露,同时用户电脑中病毒的概率也会提升。
  • 中间人攻击: 中间人攻击是同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者,这样,用户与网关的数据就会泄露。
  • IP地址冲突攻击: 通过对局域网中的物理主机进行扫描,扫描出局域网中的物理主机的 MAC 地址,然后根据物理主机的 MAC 进行攻击,导致局域网内的主机产生 IP 地址冲突,影响用户的网络正常使用。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++(part2、3-Linux系统编程+数据库项目):Linux网络云盘

文章目录 一、项目需求分析1.一期:命令行解析(1)cd(用栈管理)、ls、pwd(2)puts、gets(3)mkdir、touch、rmdir、rm 2.二期:密码验证、日志、断点续传、大文件传输(1)密码验证(2)日志(3)断点续传(4)大文件传输 3.三期:用户注册、用户登录、虚拟…

生命在于学习——Python人工智能原理(4.2)

三、Python的数据类型 3.1 python的基本数据类型 特点: 表示单一的、原子性的数据。 不可再分,是语言内建的最基本的数据类型。 存储的是简单的数值、字符、布尔值等。 在内存中通常占据固定大小的空间。 Python提供了整数、浮点数和复数三种数字类型和…

JavaScript的学习之事件的简介

目录 一、事件是什么 二、如何处理事件 一、事件是什么 定义:事件就是浏览器和用户之间的交互行为。 例如:点击按钮、鼠标移动、关闭窗口等。 二、如何处理事件 我们可以在对应的事件属性中设置一些JS行为,当事件触发的时候会将这些代码执行…

QT拖放事件之三:自定义拖放操作-利用QDrag来拖动完成数据的传输

1、运行效果 1)Qt::MoveAction 2)Qt::CopyAction 2、源码 #include "Widget.h" #include "ui_Widget.h" #include "common.h"

pyhon模块以及常用的第三方模块

import my_info as info print(info.name) info.show()from my_info import * print(name) show() pyhon中包的导入 import admin.my_admin as ad # 包名.模块名 admin是包名,my_admin是模块名print(ad.name) print(ad.info())from admin import my_admin as ad # …

[RPI4] 树莓派4b安装istoreos及使用 -- 1. 系统安装

最近在研究家庭智能化的一些东西,其中包括网络,智能家居等一系列内容,然后看过的资料有的想再回来看的时候就找不到了,然后就想着开这么一个系列,做一些记录,先从智能家居开始吧。 1 安装istoreos系统 iStoreOS 目标是提供一个人人会用的路由兼轻 NAS 系统,不管是作为路…

【本地知识库】本地知识库+语言大模型=知域问答

本地知识库语言大模型知域问答 本项目实质为本地知识库构建及应用,内容包含: 本地知识库构建及应用相关知识的介绍离线式本地知识库构建及应用在线式本地知识库构建及应用 本地知识库构建及应用相关知识的介绍 本地知识库 本地知识库通常是指存储在…

主播美颜工具背后的技术:视频直播美颜SDK详解

美颜效果是如何实现的呢?其中的关键技术就是视频直播美颜SDK。本篇文章,笔者将详细为您解答美颜SDK的核心技术和实现原理,探讨其背后的秘密。 一、美颜SDK的基本原理 美颜SDK的这些功能依赖于图像处理和计算机视觉技术,通过对视…

Java 8 Date and Time API

Java 8引入了新的日期和时间API,位于java.time包下,旨在替代旧的java.util.Date和java.util.Calendar类。新API更为简洁,易于使用,并且与Joda-Time库的一些理念相吻合。以下是Java 8 Date and Time API中几个核心类的简要概述&…

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库 打开【服务器01】的文章项目 导入新UI系统 点击2D 双击输入栏位置 修改输入框尺寸及位置 放大字体 修改默认输入文字 发现中文字变成了口口口口 原因是新UI系统不支持中文,解决这个问题需要更换字体 并且修改输入时字体大小 我们取电脑中找Fon…

劳易测合作伙伴Pizzato P-KUBE Lite安全把手新品来袭!

劳易测合作伙伴Pizzato全新 P-KUBE 系列再添新成员!——P-KUBE Lite安全把手,进一步拓展了应用范围。新产品采用高聚酯材质制成,具备卓越的抗冲击性能,确保在严苛环境下把手的耐用性。把手的设计既符合人体工程学又兼具功能性&…

linux中的调试工具gdb

目录 1.背景知识补充 2.使用 知识补充 1.背景知识补充 1.gcc下编译默认是release方式发布的,无法直接进行调试 如果要以debug方式发布,需要携带-g 可以使用grep查询 因为携带debug信息,其文件体积要大一些 2.使用 1.gdb 可执行程序 …

elementplus el-table(行列互换)转置

Element Plus v2.4.0, repl v3.4.0 <template> <div><el-table :data"tableData" style"width: 100%"><el-table-column prop"name" label"名字" width"180" /><el-table-column prop"wei…

【ajax基础03】常用ajax请求方法和数据提交以及axios错误处理

目录 一&#xff1a;请求方法 什么是请求方法&#xff1a; 常见请求方法如下 二&#xff1a;axios中应用 语法格式&#xff1a; 案例&#xff1a; axios错误处理 三&#xff1a;如何赚钱 一&#xff1a;请求方法 什么是请求方法&#xff1a; 浏览器对服务器资源&…

Android Media Framework(八)OMXNodeInstance - Ⅰ

OpenMAX框架的学习有两大难点&#xff0c;一是组件的状态切换与buffer的流转过程&#xff0c;这部分内容我们已经在IL Spec中学习过了&#xff1b;二是OMX组件使用的buffer类型与buffer分配过程&#xff0c;这一节我们来重点剖析OMX组件使用的buffer类型。 1、引言 在实际应用…

提取图像主色调

依赖 Pillow 库。 提取图像主色调&#xff0c;直接上代码&#xff1a; from PIL import Imagedef extract_main_color(img_path: str, delta_h: float 0.3) -> str:"""获取图像主色调Args:img_path: 输入图像的路径delta_h: 像素色相和平均色相做减法的绝…

17.RedHat认证-Ansible自动化运维(下)

17.RedHat认证-Ansible自动化运维(下) 这个章节讲ansible的变量&#xff0c;包括变量的定义、变量的规则、变量范围、变量优先级、变量练习等。 以及对于tasks的控制&#xff0c;主要有loop循环作业、条件判断等 变量 介绍 Ansible支持变量功能&#xff0c;能将value存储到…

记录react实现选择框一二级联动出现的问题

需求&#xff1a;用户在选择第一个选择框的选项后&#xff0c;第二个选择框的选项会根据第一个选择框的选择动态更新。如图所示 出现的问题 一级分类选择之后二级分类没有数据&#xff0c;第二次重新选择一级分类的时候&#xff0c;二级分类就会有值。 第一次点击截图&#x…

MongoDB数据库的安装和删除

MongoDB数据库的删除和安装 1、删除MongoDB数据库2、下载MongoDB数据库1)、自定义安装2)、注意可视化可以取消勾选 1、删除MongoDB数据库 没有下载过的&#xff0c;可以直接跳到下面的安装过程↓ 我们电脑中如果有下载过MongoDB数据库&#xff0c;要更换版本的话&#xff0c;其…

IntelliJ IDEA2024 for Mac Java代码编辑器

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…