ARP协议(原理,特点,报文格式,具体过程),ARP缓存(有效时间,为什么),ARP欺骗(定向断网,成为中间人),RARP简单介绍

目录

ARP协议

引入

介绍

原理

arp请求/响应

特点

报文格式

硬件类型

协议类型

硬件/协议地址长度

op(操作码) 

过程

发送请求并处理

返回响应并处理

总结

arp缓存 

介绍

arp表项的有效时间

解释

arp欺骗

介绍

定向断网

基于arp的成为中间人的方式

多向欺骗

RARP

介绍


ARP协议

引入

跨网络通信时,通过不断更新mac帧,数据可以送达与目标主机相连的路由器设备上 -- 数据链路层(Mac帧,报头字段,局域网通信原理),MTU,MSS,ip报文的分包与组装(ip报头字段介绍,组装过程,判断是否被分片/收到全部分片)-CSDN博客

但是,这最后一跳没那么简单

  • 因为我们只知道目标主机的ip地址(ip报头中的目的ip),而不知道mac地址
  • 但是,局域网内的通信是需要mac地址的(因为要重新封装mac帧),如果硬件地址与本机不符,会直接在链路层丢弃

所以我们需要一个技术来解决 -- ARP协议

  • 它来将目标主机的ip地址->mac地址

介绍

ARP(Address Resolution Protocol,地址解析协议),一个介于数据链路层和网络层之间(但归属于链路层)的协议
  • 建立了主机 IP地址 和 MAC地址 的映射关系,以便数据包可以正确地发送到网络上的目标设备

原理

arp请求/响应

该路由器向目标主机所在局域网中广播一条消息(被称为ARP请求),询问具有特定ip地址的主机的mac地址

  • 以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播

因为已知ip地址

  • 所以目标主机可以收到,而其他主机会丢弃该条消息

目标主机收到后,会给源主机返回一条响应

  • 里面带着它自己的Mac地址

特点

如果 收到多次同样的应答,会以最新的为准
  • 如果在ARP缓存中已经存在了之前的应答记录,并且收到新的应答,ARP缓存会更新为最新的应答

报文格式

([下面的数字]单位是字节) 

硬件类型

指示网络类型,比如以太网的值是1

  • 它用于确定网络接口的硬件地址格式

协议类型

把哪种类型的地址->Mac地址

  • 确定上层协议类型
  • 通常是IPv4,其值为0x0800

硬件/协议地址长度

[前面字段填入的类型长度]对应的数字

  • 在以太网中,MAC地址的长度为6字节
  • 在IPv4中,IP地址的长度为4字节

op(操作码) 

指示ARP消息的类型

  • 1代表请求
  • 2代表响应

剩下的两组就是地址转换的重点(在过程中介绍) 

过程

发送请求并处理

假设我们路由器R准备发送给目标主机B:
网络层发现 目标主机与当前设备直接相连时,会先发送 arp请求,也就是先交付到 ARP协议层(记得嗷,ARP协议在网络层和MAC层之间)
构建好请求报文后,再交付给 Mac帧协议层
  • 封装好Mac帧报头后:
发送到局域网中,局域网内每台主机都能收到这个报文,每台主机收到后向上交付给Mac帧层,进行解包
  • 因为目的Mac地址是广播地址,所以需要受理,继续向上交付(因为类型是0806,所以交给arp协议层)
ARP协议层收到后解包
  • 先检查类型,发现是请求后,检查目的ip
  • 若不是发给自己的,直接丢弃

返回响应并处理

这样可以只让特定主机处理arp请求,并构建arp应答:
并向下交付( MAC层):
  • 因为此时源/目的mac地址已知,所以mac帧报头可以成功封装
封装好后,因为有确定的目的Mac地址,所以只有特定主机可以收到
  • 目标主机收到后,识别类型是arp协议

交付给arp协议层:

  • 先识别类型,确定是应答后,就知道是自己曾经请求的信息拿到了
  • 接着就提取源mac地址和源ip地址,这样就可以建立ip->mac的映射关系

总结

这个过程中,哪台主机都可能收到arp报文,并且第一件事情就是 查看报文类型
  • 如果是请求,那就查看目的ip
  • 如果是应答,就查看源ip和源mac

也就是,类型决定了要关注哪个字段

这样一来一回,就可以拿到目标主机的mac地址了,也就可以完成最后一跳了

arp缓存 

介绍

主机的ip和mac地址的映射关系,会被主机临时缓存起来
  • 当缓存关系失效时,才会触发arp机制 
  • 它也不仅仅只在最后一跳被触发,任何时候两台相连主机之间通信时,只要不知道对方的mac地址,都可以触发

arp表项的有效时间

每台主机都维护一个ARP缓存表,可以用arp -a命令查看:
缓存表中的表项有过期时间(一般为20分钟)
  • 如果一定时间内没有再次使用某个表项,则该表项失效
  • 下次在与该主机通信时,需要发ARP请求来获得目的主机的硬件地址

解释

为什么要有缓存表?

  • 减少了ARP请求的频率
  • 通过直接查询缓存表,网络设备可以更快地完成数据包的转发和处理

为什么要有过期时间?

  • 需要确保缓存表中的信息是最新的和有效的 (在网络中,设备的IP地址和MAC地址可能会变化。eg: 设备可能会断开连接、关闭、或者被重新分配IP地址 , 如果ARP缓存表中的表项一直有效,则可能导致发送到错误设备的情况发生)
  • 过期时间可以帮助清理和刷新这些表项,确保缓存表只包含有效的映射信息 (如果没有过期时间,过时的或错误的映射信息可能会长时间存在,导致数据包无法正确传输)
  • ARP缓存中的长期存在的错误或无效表项可能被攻击者利用,例如通过ARP欺骗攻击。定期过期和刷新ARP表项可以减少这种攻击的可能性

arp欺骗

介绍

是一种网络攻击方式,利用了ARP(地址解析协议)的工作机制,以欺骗网络中的设备

  • 攻击者通过伪造ARP应答来干扰正常的网络通信,从而实现数据包拦截、修改或其他恶意行为

定向断网

如果某主机A直接向某主机B发送arp应答,构建虚假的ip->mac的映射关系
  • 比如,将键值对中的mac地址修改成自己的mac地址,ip地址不变
那么以后B发出的消息都会推送给A
  • 因为其他主机直接在链路层就丢弃了报文(mac地址是B的)

如果A也丢弃掉,就会造成B的消息无法成功发送

  • 相当于断网了

基于arp的成为中间人的方式

还是上面的流程,但A不丢弃B发送给其他主机(假设是主机C)的报文,而是拦截下来并构建一条新的报文(源ip和源mac都修改成A的信息)
  • 并发送给C,这样从主机C返回的应答也会是A收到
  • 同理,A也构建新的应答给B(源ip和源mac都是C),B无法察觉到它和C之间还存在着A
  • 这样相当于A成为了B和C的中间设备

这种攻击允许主机A监视、记录甚至篡改网络通信内容

多向欺骗

一台主机可以做到,多台主机也同理

  • 将其他主机记录的映射关系中的mac地址都改成自己的mac地址,那么该局域网内所有主机的信息都一定会被自己接收 

 

RARP

介绍

逆地址解析协议
  • 也就是用mac->ip
过程更简单,可以定向发送(因为mac地址已知)
应用场景少

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

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

相关文章

有什么简单方便的cad编辑器?2024快速进行cad编辑的软件合集

有什么简单方便的cad编辑器?2024快速进行cad编辑的软件合集 在建筑、工程、设计等领域,CAD(计算机辅助设计)软件是必不可少的工具。然而,面对复杂的CAD文件,有时我们只需要简单的编辑功能,而不…

工厂模式-小记

工厂模式-小记 工厂模式简单工厂模式场景复现抽象产品接口具体产品工厂类测试方法 工厂方法模式工厂方法模式场景描述抽象工厂接口具体工厂抽象产品具体产品客户端测试 抽象工厂模式场景描述抽象工厂具体工厂抽象产品具体产品客户端测试 三者的对比 工厂模式 工厂模式提供了一…

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整思路

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ A题是数模类赛事很常见的物理类赛题,需要学习不少相关知识。此题涉及对一个动态系统的建模,模拟…

策略模式的小记

策略模式 策略模式支付系统【场景再现】硬编码完成不同的支付策略使用策略模式,对比不同(1)支付策略接口(2)具体的支付策略类(3)上下文(4)客户端(5&#xff0…

vue3获取视频时长、码率、格式等视频详细信息

前言: 我们在上传视频需要视频的帧数等信息的时候,上传组件无法直接读取帧数等信息 方法:通过mediainfo.js来获取视频的帧率、总帧数和视频的总时长 mediainfo.js地址,想详细了解的可以去看看git地址:https://githu…

【生日视频制作】海上绿色摩托艇汽车艇车身AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程海上绿色摩托艇汽车艇车身AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板替换工程 怎么如何做的【生日视频制作】海上绿色摩托艇汽车艇车身AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模…

Java笔试面试题AI答之JDBC(2)

文章目录 7. 列出Java应该遵循的JDBC最佳实践?8. Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入Statement与PreparedStatement的区别什么是SQL注入如何防止SQL注入 9. JDBC如何连接数据库?1. 加载JDBC驱动程序2. 建立数…

基于FreeRTOS的STM32多功能手表

前言 项目背景 项目演示 使用到的硬件 项目原理图 目前版本实现的功能 设计到的freertos知识 实现思路 代码讲解 初始化GPIO引脚、配置时钟 蜂鸣器初始化以及软件定时器创建 系统默认创建的defaultTaskHandle 创建七个Task,代表七个功能 ShowTimeTask …

MySQL复习2

高级查询 准备 create database greatselect; use greatselect;drop table if exists class; create table class (cid int(11) not null auto_increment,caption varchar(32) not null,primary key (cid) )engine innoDB AUTO_INCREMENT5 default charset utf8;create tab…

磁盘加密工具 | VeraCrypt v1.26.15 绿色版

VeraCrypt 是一个开源项目,旨在提供强大的加密解决方案,以创建和管理加密的磁盘分区和加密容器。它继承了著名的加密软件 TrueCrypt 的特性,并在此基础上进行了扩展和改进。 主要特性 1. 高级加密算法 VeraCrypt 支持多种加密算法&#xf…

运维学习————Jenkins(1)

目录 一、项目开发周期 二、jenkins的简介和作用 三、jenkins下载 1、使用war包安装 2、初始化配置 3、工作流程图 4、Jenkins安装配置maven和git maven git 5、jenkins安装插件 6、配置maven,git,jdk jdk配置 Git配置 Maven配置 四、修改tomcat的一些配置 五…

[网络编程]TCP和UDP的比较 及 通过java用UDP实现网络编程

文章目录 一. 网络编程套接字TCP和UDP的特点有连接 vs 无连接可靠传输 vs 不可靠传输面向字节流 vs 面向数据报全双工 vs 半双工 二. java用UDP实现网络编程代码实现:运行代码:启动多个客户端别人能否使用?实现翻译功能 一. 网络编程套接字 网络编程套接字, 就是指操作系统提…

[000-01-008].Seata案例应用

业务说明:这里我们创建三个服务,一个订单服务,一个库存服务,一个账户服务。当用户下单时,会在订单服务中创建一个订单,然后通过远程调用库存服务来扣减下单商品的库存;再通过远程调用账户服务来…

AD7606工作原理以及FPGA控制验证(串行和并行模式)

文章目录 一、AD7606介绍二、AD7606采集原理2.1 AD7606功能框图2.2 AD7606管脚说明 三、AD7606并行模式时序分析以及实现3.1 并行模式时序图3.2 并行模式时序要求3.3 代码编写3.4 仿真观察 四、AD7606串行模式时序分析以及实现4.1 串行模式时序图4.2 串行模式时序要求4.3 代码编…

使用Cskin时候 遇到按钮有默认阴影问题解决

使用Cskin时候 遇到按钮有默认阴影 设置 DrawType 属性就可以了

全网最火的AI技术:GraphRag概念详解

GraphRAG是一种结合了知识图谱(Knowledge Graph)和大语言模型(LLM)的检索增强生成(Retrieval-Augmented Generation, RAG)技术,旨在通过将结构化和非结构化数据相结合来增强生成式AI的表现。它的…

[已更新问题二三matlab+python]2024数学建模国赛高教社杯C题:农作物的种植策略 思路代码文章助攻手把手保姆级

发布于9.6 10:00 有问题后续会修正!! 问题一代码展示: 问题二代码结果展示: 问题三代码展示: https://docs.qq.com/doc/DVVVlV0NmcnBDTlVJ问题一部分代码分享: #!/usr/bin/env python # coding: utf-8# In[15]:import pandas as pd# In[16]:# 读取Excel文件 file_path 附件2…

【数学建模备赛】Ep07:灰色预测模型

文章目录 一、前言🚀🚀🚀二、:灰色预测模型☀️☀️☀️1. 灰色系统引入2. 方法3. 步骤① 累加法产生新序列② 利用部分和序列相邻两项的加权平均产生序列z③ 建立关于原始数据与序列z的灰微分方程④ 利用最小二乘法确定灰微分方程…

win10添加右键菜单打开VSCode

当进入一个文件夹后,想右键直接打开我的工程,用发现没有vscode项。本文就来介绍如何右键通过vsCode打开项目。步骤1:在桌面新建一个txt文档,用文本编辑器打开 步骤2: 查看vscode所在位置 在桌面找到vscode快捷键图标&…

【大规模语言模型:从理论到实践】Transformer中PositionalEncoder详解

书籍链接:大规模语言模型:从理论到实践 第15页位置表示层代码详解 1. 构造函数 __init__() def __init__(self, d_model, max_seq_len80):super().__init__()self.d_model d_model # 嵌入的维度(embedding dimension)d_mode…