当前位置: 首页 > news >正文

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录

4.1 引言

4.2 一个例子

4.3 ARP缓存

4.4 ARP帧格式

4.5 ARP例子

4.6 ARP缓存超时

4.7 代理ARP

4.8 免费ARP和地址冲突检测

4.9 ARP命令

4.10 使用ARP设置嵌入式设备IPv4地址

4.11 与ARP相关攻击

4.12 总结


4.1 引言

地址解析:

        IPv4:ARP(仅用于广播网络)。

        IPv6:NDP邻居发现协议。

NDP有两个报文:

        邻居发现请求报文:NS

        邻居发现应答报文:NA

NDP属于ICMPv6一部分。

PC收到包的目的MAC不是自己则丢弃。

而交换机端口不具有MAC地址。交换机的端口检查收到包目的MAC,而是查找MAC地址表,获得转发端口。

路由查找:

        如果查找到的路由表网关,则继续转发。

        如果查找到的路由表网关为空,说明已抵达终点,不转发。

如果主机发现收到的ARP中请求的IP地址与自己的IP地址不匹配,将丢弃ARP请求。

如过IP地址匹配,则将ARP请求报文的源IP地址和源MAC地址映射添加到本地ARP缓存中。

4.2 一个例子

PPP链路不使用ARP,因为不涉及MAC地址,不需要地址解析。

4.3 ARP缓存

老化时间:默认20分钟。

ARP条目中Flags:

        C(Complete,已完成):表示该ARP条目已完成地址解析过程,存储在ARP缓存中。

        M(Permanent,永久):表示该ARP条目是永久性,通常是手动添加的。

        P(Published,已发布): 表示该条目已被广播到其他设备。

4.4 ARP帧格式

ARP请求:目的以太网地址ff:ff:ff:ff:ff:ff (广播)

硬件类型:值为1,表示以太网。

协议类型:值为0x800,表示IPv4。

硬件大小:值为6,表示地址长度。

协议大小: 值为4,表示协议地址长度。

Op操作有:

        ARP请求 ARP应答

        RARP请求 RARP应答

4.5 ARP例子

4.6 ARP缓存超时

大部分实现中complete ARP条目默认为20分钟,非complete ARP条目默认3分钟。

complete ARP:通过动态学习得到ARP条目。

4.7 代理ARP

如果目标主机位于不同子网时,ARP请求会失败。此时可使用代理ARP。

网关配置代理ARP后:

        网关收到ARP请求后,如果本地ARP缓存有目标主机IP地址映射,会伪装成目标主机响应ARP请求,并将自己MAC地址作为目标主机MAC地址返回给源主机。

        源主机想与目标主机通信时,先将数据发送到网关MAC地址,网关在转发到目标主机。

可隐藏真实主机,也存在安全隐患。ARP代理不常见,尽量避免使用。

使能方法:echo 1 > /proc/sys/net/ipv4/conf/*/proxy_arp

4.8 免费ARP和地址冲突检测

免费ARP:ARP请求寻找自己地址。

使用场景:接口启动时,且被配置为上行。

可知:发送方协议地址和目的协议地址相同。

免费ARP作用:

        1. 检测是否IPv4地址冲突(只能检测,无法解决)

        2. 如果改变硬件地址,发送该帧,使其他主机更新ARP条目。

ACD(Address Conflict Detection,地址冲突检测)

IPv4 ACD类似免费ARP,包括:

        ARP探测报文:与免费ARP区别是,发送发协议地址为0,这样对方不会缓存该ARP。

        ARP通告报文:表明正使用该地址,让对方更新ARP。

IPv6 ACD地址冲突检测步骤:

        地址配置:当IPv6接口启动时,使用SLAAC、DHCPv6等地址配置方式获取IPv6地址。

        地址检查:接口获取到IPv6地址后,它会发送多播Neighbor Solicitation(NS)消息,询问该IPv6地址是否已被其他节点使用。

        地址确认:如果该IPv6地址已被某节点使用,它会发送多播的Neighbor Advertisement(NA)消息作为响应,告知其他节点该IPv6地址已被使用。

        地址处理:如果没有收到其他节点响应,那么该接口可继续使用该IPv6地址。

4.9 ARP命令

显示ARP条目:

        arp -a

        arp -n

添加ARP条目:

        arp -s

删除ARP条目:

        arp -d

4.10 使用ARP设置嵌入式设备IPv4地址

设置IPv4地址方式:

        DHCP

        ARP(不常见):手动设置一个ARP映射,然后向该IP发送分组。 对方收到该IP分组后,设置IP

4.11 与ARP相关攻击

使用代理ARP假扮真实主机,应答。

/proc/sys/net/ipv4/conf/eth0/arp_filter:

        作用:用于控制 ARP 报文过滤,比如:

                若ARP请求接口,与发送应答接口不一致,则应答抑制。

                如果接收的ARP请求目标IP不在本地子网上,不会响应ARP请求。

4.12 总结

相关文章:

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析: IPv4:AR…...

如何在pgAdmin中用替换的值更新jsonb列?

我有一个名为files的PostgreSQL表,其中包括一个名为formats的jsonb表。虽然有些行是[null],但其他行具有此结构的对象: {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…...

冯诺依曼体系结构 计算机组成的金字塔

01 冯诺依曼体系结构:计算机组成的金字塔 学习计算机组成原理,到底是在学些什么呢?这个事儿,一两句话还真说不清楚。不过没关系,我们先从“装电脑”这个看起来没有什么技术含量的事情说起,来弄清楚计算机到…...

AWS安全组是什么?有什么用?

最近看到小伙伴在问,AWS安全组是什么?有什么用?今天我们大家就来简单聊聊,仅供参考哦! AWS安全组是什么?有什么用? 【回答】:AWS安全组是一种虚拟防火墙,用于控制进出…...

SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示

目录 前言 一、加入DWZ J-UI框架 二、实现登录页面 三、实现主页面菜单显示 前言 大家好!写文章之前先列出几篇相关文章。本文内容也在其项目中接续实现。 一. SSM项目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式&#xff…...

【MySQL】如何理解MySQL的锁(图文并茂,一网打尽)

一、锁的介绍 锁是计算机协调多个进程或者线程并发访问某一资源的机制。那么如何保证数据并发访问的一致性、有效性是数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,所以数据库中锁的应用极为重要,其复杂度也更…...

【设计模式】01-装饰器模式Decorator

作用:在不修改对象外观和功能的情况下添加或者删除对象功能,即给一个对象动态附加职能 装饰器模式主要包含以下角色。 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08…...

【Python笔记-设计模式】原型模式

一、说明 原型模式是一种创建型设计模式, 用于创建重复的对象,同时又能保证性能。 使一个原型实例指定了要创建的对象的种类,并且通过拷贝这个原型来创建新的对象。 (一) 解决问题 主要解决了对象的创建与复制过程中的性能问题。主要针对…...

启动node服务报错Error: listen EACCES: permission denied 0.0.0.0:5000

启动node服务报错: 解决方案: 将监听端口改成3000或者其他 修改后结果: 参考原文: Error: listen EACCES: permission denied_error when starting dev server: error: listen eacc-CSDN博客...

onlyoffice api开发

编写代码 按照https://api.onlyoffice.com/editors/basic编写代码 <html> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scal…...

设计模式-工厂方法模式(C++)

工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;但将实际的对象创建过程延迟到子类中。这种模式解耦了具体产品的创建过程&#xff0c;使得系统更加灵活和可扩展。 下面是一个使用 C…...

ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒

文章目录 几何体的顶点position、法向量normal及uv坐标UV映射UV坐标系UV坐标与顶点坐标设置UV坐标案例1&#xff1a;使用PlaneGeometry创建平面缓存几何体案例2&#xff1a;使用BufferGeometry创建平面缓存几何体 法向量 - 顶点法向量光照计算案例1&#xff1a;不设置顶点法向量…...

基于SpringBoot的家教管理系统

基于SpringBootVue的家教管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 家教 个人中心 管理员界面 摘要 本文介绍了基于SpringBoot框架开发的家…...

简单mock server模拟用户请求给小程序提供数据

整理小程序代码时发现一此小程序离开了mock-server基本上没有办法显示了,因此用node,express来满足给小程序提供演示数据的功能 const express require(express); const { createCanvas, Image } require(canvas); const fs require(fs); const path require(path);…...

【MATLAB】 EWT信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 EWT分解算法 EWT分解算法是一种基于小波变换的信号分解算法&#xff0c;它可以将信号分解为一系列具有不同频率特性的小波分量。该算法的基本思想是将信号分解为多个不同尺度的小波分量&#xff0c;并对…...

MATLAB中,如何捕获和处理异常?如何在MATLAB中自定义错误消息?在MATLAB中,error函数和warning函数有什么区别?

MATLAB中&#xff0c;如何捕获和处理异常&#xff1f; 在MATLAB中&#xff0c;捕获和处理异常通常使用try-catch语句。try块包含可能引发异常的代码&#xff0c;而catch块则包含当异常发生时执行的代码。以下是如何在MATLAB中捕获和处理异常的基本步骤&#xff1a; 使用try关键…...

【算法与数据结构】127、LeetCode单词接龙

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;示例1为例&#xff0c;hit到达cog的路线不止一条&#xff0c;如何找到最短是关键。广度优先搜索是一圈…...

CAN——创建一个数据库DBC文件

一、创建一个工程 file——new——can 500kbaud1ch 得到一个工程文件.cfg 二、实现两个节点通讯 can networks 三、创建数据库DBC tool——candbeditor——file——creatdatabase——cantemplate.dbc 1.建数值表 view——value tables——空白处右击add—— definition 定…...

(十三)【Jmeter】线程(Threads(Users))之tearDown 线程组

简述 操作路径如下: 作用:在正式测试结束后执行清理操作,如关闭连接、释放资源等。配置:设置清理操作的采样器、执行顺序等参数。使用场景:确保在测试结束后应用程序恢复到正常状态,避免资源泄漏或对其他测试的影响。优点:提供清理操作,确保测试环境的整洁和可重复性…...

MySQL数据库基础(十三):关系型数据库三范式介绍

文章目录 关系型数据库三范式介绍 一、什么是三范式 二、数据冗余 三、范式的划分 四、一范式 五、二范式 六、三范式 七、总结 关系型数据库三范式介绍 一、什么是三范式 设计关系数据库时&#xff0c;遵从不同的规范要求&#xff0c;设计出合理的关系型数据库&…...

告别手动更新!用Python+Pandas快速解析通达信tnf文件,构建本地股票代码库

用PythonPandas高效解析通达信TNF文件&#xff1a;打造自动化股票代码库 每次手动更新股票代码库时&#xff0c;那些重复性操作总让我想起学生时代抄写课文的场景——机械、耗时且容易出错。作为量化研究员&#xff0c;我们真正需要的是把时间花在策略优化上&#xff0c;而不是…...

别再只用L1/L2了!用PyTorch实战图像修复的5种高阶损失函数(含VGG19感知损失代码)

超越L1/L2&#xff1a;PyTorch图像修复中5种高阶损失函数的工程实践 当你在深夜调试一个图像超分辨率模型时&#xff0c;发现生成的图片虽然PSNR值很高&#xff0c;但总感觉缺少那种"真实感"——边缘不够锐利&#xff0c;纹理略显模糊。这时候&#xff0c;L1/L2损失函…...

应用篇,在Silverlight中使用Virtual Earth地图服务

ilverlight应用中使用地图服务是否能够得心应手呢&#xff1f; 答案是肯定的&#xff0c;我们操作Earth服务只需执行简单的服务调用&#xff0c;就可完成坐地日行八万里的壮举了&#xff0c;而这一切是由VIEWs组件封装了Javascript脚本来完成的&#xff0c;通过对Virtual Eart…...

Delphi MVC框架ActiveRecord中间件多连接配置详细解析[特殊字符]

1. 数组长度必须一致1234567// 错误示例 - 会抛出异常TMVCActiveRecordMiddleware.Create(MainDB,[LogDB, CacheDB], // 2个元素[LogDB_Def], // 1个元素 ← 错误&#xff01;MultiConnections.ini);2. 连接名命名规范1234567// 建议使用有意义的命…...

迈瑞医疗营收超330亿,国际业务持续发力未来何在?

最近的财报季&#xff0c;各家上市公司的财报都牵动着每个人的心&#xff0c;就在最近迈瑞医疗的成绩单公布&#xff0c;营收超330亿&#xff0c;国际业务持续向好&#xff0c;这样的成绩单我们到底该怎么看待呢&#xff1f;一、迈瑞医疗业绩稳健向好据每日经济新闻的报道&…...

鸿蒙应用开发实战:手把手教你封装一个可复用的音乐播放器管理类(ArkTS版)

鸿蒙应用开发实战&#xff1a;构建高可复用的音乐播放器管理类&#xff08;ArkTS版&#xff09; 在鸿蒙应用开发中&#xff0c;音频播放功能是许多应用的核心需求。本文将深入探讨如何设计一个健壮、可复用的音乐播放器管理类&#xff0c;采用ArkTS语言实现&#xff0c;帮助开发…...

ComfyUI翻译节点终极指南:如何选择最适合你的AI创作翻译工具

ComfyUI翻译节点终极指南&#xff1a;如何选择最适合你的AI创作翻译工具 【免费下载链接】ComfyUI_Custom_Nodes_AlekPet Custom nodes that extend the capabilities of Comfyui 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_Custom_Nodes_AlekPet 在AI图像生…...

颠覆传统投资分析:TradingAgents-CN智能交易系统零门槛部署指南

颠覆传统投资分析&#xff1a;TradingAgents-CN智能交易系统零门槛部署指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在金融科技迅猛发展的…...

【王阳明】《泛海》

王阳明《泛海》&#xff1a;证道诗与心学宣言原诗险夷原不滞胸中&#xff0c; 何异浮云过太空&#xff1f; 夜静海涛三万里&#xff0c; 月明飞锡下天风。一、创作背景&#xff1a;九死一生的逃亡 这首诗写于王阳明人生最险峻的时刻&#xff0c;背景远比字面所呈现的更为惊心动…...

如何通过技术优化提升Element Plus开发效率

如何通过技术优化提升Element Plus开发效率 【免费下载链接】element-plus &#x1f389; A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus 在前端开发过程中&#xff0c;Element Plus作为一款基于Vue.js 3…...