对地址解析协议ARP进一步探讨
之前在讨论MAC地址和IP地址时,顺便对ARP协议做了初步的总结
(计网第三章(数据链路层)(四)(MAC地址和IP地址、ARP协议、集线器和交换机)),但是当时对ARP请求的间接交付没有进行详细探讨。
一、间接交付
简单来说直接交付就是在同一个网络里面,而间接交付不在同一个网络里。也就是必须要跨网络进行。
在前面有提到,ARP协议是不能够跨网络进行的,每个ARP缓存表只有本地局域网内的相关MAC地址。当一个主机要给另一个主机发送数据包,中间肯定是进行了多次ARP协议的。
二、间接交付具体过程
假设主机A和主机B之间只隔了一个路由器。现在主机A想要给主机B发送数据,A在自己的ARP缓存表中没有找到主机的IP地址和MAC地址的映射,在经过将B的IP地址和自己的子网掩码相与后,主机A发现主机B并不和自己在一个网络里面。
于是主机A就会先给默认网关发送一个广播ARP请求,源IP地址是自己的IP地址,目的IP地址是默认网关的IP地址,源MAC地址是自己的MAC地址,目的MAC地址是FF-FF-FF-FF-FF-FF。
默认网关收到后给主机A发送一个ARP单播响应报文,目的地址字段为主机A的目的地址字段,报文中有网关自己的IP地址和MAC地址。
这样主机A就会将默认网关的MAC地址和IP地址的映射关系存入自己的ARP缓存表中。
随后,当主机A给主机B发送数据的时候,就会将报文封装发送给默认网关。其中源IP地址是主机A的IP地址,目的IP地址应该属主机B的IP地址,源MAC地址是主机自己的MAC地址,目的MAC地址是默认网关的MAC地址。
默认网关收到后,便会先在自己的ARP表里查找是否有B的MAC地址,如果没有就发送ARP广播请求,如果有就直接转发给主机B。
我们可以看到,间接交付主机A并不知道主机B的MAC地址,它只知道默认网关的MAC地址,出现间接交付的情况时就要将报文交付给默认网关,而默认网关进行后续操作。从这也可以得到,路由器也是有ARP缓存表的。
总结
1、博主起初对主机发送广播帧给默认网关比较迷惑:路由器不是隔离广播域的吗,那么主机发送广播ARP请求帧,路由器收到后不应该就抛弃了吗?
事实上路由器对于广播帧进行的接收不转发操作,比如下图:

对于R1路由器,很明显它连接的两个接口分别连接一个网络,也就是说它有两个广播域,我们不能直接说路由器属于哪个广播域,只能从接口进行说明。路由器的接口0和N1属于一个广播域,接口1和N2属于一个广播域。接口实际上就是在广播域的边界上。
所以对于收到ARP请求广播帧后,路由器并不是进行转发操作,接收后向主机返回ARP响应单播帧是没有问题的。
2、上面的间接交付只是一种比较简单的情况,事实上可能还会有多个路由相连,而路由器与路由器之间一般都会用点对点PPP协议,所以在它们之间的链路上并不会用ARP协议,直接就把报文转发给下一个路由器了。
相关文章:
对地址解析协议ARP进一步探讨
之前在讨论MAC地址和IP地址时,顺便对ARP协议做了初步的总结 (计网第三章(数据链路层)(四)(MAC地址和IP地址、ARP协议、集线器和交换机)),但是当时对ARP请求的…...
java:java.util.StringTokenizer实现字符串切割
java:java.util.StringTokenizer实现字符串切割 1 前言 java.util工具包提供了字符串切割的工具类StringTokenizer,Spring等常见框架的字符串工具类(如Spring的StringUtils),常见此类使用。 例如Spring的StringUtil…...
IPV6 ND协议--源码解析【根源分析】
ND协议介绍 ND介绍请阅读上一篇文章:IPv6知识 - ND协议【一文通透】11.NDP协议分析与实践_router solicitation报文中不携带source link-layer address-CSDN博客 ND协议定义了5种ICMPv6报文类型,如下表所示: NS/NA报文主要用于地址解析RS/…...
Python学习笔记——存储容器
食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位! 列表 列表类似数组,其中可以包含不同类型的元素,写法如下: list1 [Google, Runoob, 1997, 2000] list2 [1, 2, 3, 4, 5 ] list3 ["a", …...
Android DI框架-Hilt
到底该如何理解<依赖注入> 模版代码:食之无味,弃之可惜 public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView mTextView(TextView) findVi…...
基于寄生捕食优化的BP神经网络(分类应用) - 附代码
基于寄生捕食优化的BP神经网络(分类应用) - 附代码 文章目录 基于寄生捕食优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.寄生捕食优化BP神经网络3.1 BP神经网络参数设置3.2 寄生捕食算法应用 4.测试结果…...
【Java常见的几种设计模式】
Java常见的几种设计模式 1. 单例模式(Singleton Pattern)2. 工厂模式(Factory pattern)3. 抽象工厂模式(Abstract Factory Pattern)4. 建造者模式(Builder Pattern)5. 原型模式&…...
jupyter崩溃进不去,报错module ‘mistune‘ has no attribute ‘BlockGrammar‘
是python包引起的问题 [E 2023-10-14 08:40:25.414 ServerApp] Uncaught exception GET /api/nbconvert?1697244025327 (127.0.0.1) HTTPServerRequest(protocol‘http’, host‘localhost:8090’, method‘GET’, uri‘/api/nbconvert?1697244025327’, version‘HTTP/1.1’…...
windows terminal鼠标右键打开
如果在官网上下载的是zip文件的 需要在注册表修改鼠标右键才能出来 注册表修改如下: 1.先windowsR,在命令框中输入regedit 打开注册表 2.在路径’计算机\HKEY_CLASSES_ROOT\directory\background\shell’下新建一个wt,wt下新建commond 这里…...
HTML5播放 M3U8的hls流地址
在HTML5页面上播放M3U8的hls流地址 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>视频播放</title> <script src"https://cdn.jsdelivr.net/npm/hls.jslatest"></script> &…...
leetcode:101.对称二叉树
借用二叉树是否相同的代码改动左右孩子相等对应关系,即为是否对称。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/bool isSameTree(struct TreeNode* p, struct Tr…...
UI自动化的适用场景,怎么做?
经常有人会问,什么样的项目才适合进行UI自动化测试呢?UI自动化测试相当于模拟手工测试,通过程序去操作页面上的控件。而在实际测试过程中,经常会遇到无法找到控件,或者因控件定义变更而带来的维护成本等问题。 哪些场…...
SpringFramewrok (1)
1、框架的概念与理解 在现实生活中,框架可以比喻为我们搭建房子的框架。 在框架的基础上,我们可以专注于我们自己的工作,而不用在意这些底层工作如何实现。 框架的优点包括以下几点: 1. 提高开发效率:框架提供了许多…...
电商独立站小程序开发方案
随着移动互联网的迅速发展,电商行业也逐渐向小程序平台转移。开发一款电商小程序对于拓展销售渠道、提高用户体验、增加用户忠诚度等方面都有着重要的意义。本文将围绕电商小程序的开发背景、需求分析、技术选型、开发流程、风险控制、商业模式和市场前景等方面进行…...
数据库安全运维是什么意思?数据库安全运维系统用哪家好?
我们大家都直到数据在某些情况下容易丢失或被破坏,攻击者可能通过对数据库进行破坏或勒索等手段获取利益。所以保障数据库安全至关重要。今天我们就来聊聊数据库安全运维是什么意思?数据库安全运维系统用哪家好? 数据库安全运维是什么意思&…...
小程序的console中出现:。。。不在以下 request 合法域名列表中,请参考文档:。。。的报错解决
报错效果: 其实这个报错不代表自己的代码有问题 但是本强迫症研究了一下,按照以下方法关掉就不会显示这个报错了。 点微信开发者工具中的右上角的详情。点本地设置。勾选不校验。。。HTTPS证书。 即可关闭该报错:...
计算机网络基础(三):IPv4编址方式、子网划分、IPv4通信的建立与验证及ICMP协议
**IPv4地址是一个32位长的二进制数。**而这个32位二进制数又通常会表示为4个用点隔开的十进制数。那么,这个32位二进制数要如何通过4个十进制数表示出来呢? 我们在配置IPv4地址时,同时配置的“掩码”又有何用途? 1.IPv4编址方式…...
Error: GlobalConfigUtils setMetaData Fail Cause:java.lang.NullPointerException
文章目录 1、在开发中会出现这样的错误。2、其次,再看其他错误: 1、在开发中会出现这样的错误。 完整错误:Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause…...
OpenHarmony 应用全局的 UI 状态存储:AppStorage
AppStorage 是应用全局的 UI 状态存储,是和应用的进程绑定的,由 UI 框架在应用程序启动时创建,为应用程序 UI 状态属性提供中央存储。 和 AppStorage 不同的是,LocalStorage 是页面级的,通常应用于页面内的数据共享。而…...
外置告警蜂鸣器使用小坑
告警蜂鸣器调试小坑 昨天调试新产品,由于IMO、MSC组织和IEC标准规定,不能使用带红色指示灯的蜂鸣器,于是更换了个不带灯。然而奇怪的现象出现了两次短响的程序在有的页面正常,有的页面就变成一声了。搞了一天,把各种寄…...
学术场景实战:DeepSeek-OCR-2驱动深求·墨鉴实现论文公式精准提取
学术场景实战:DeepSeek-OCR-2驱动深求墨鉴实现论文公式精准提取 1. 引言:学术研究中的公式提取痛点 如果你是一名理工科的研究生、科研工作者,或者经常需要阅读学术论文,你一定遇到过这样的场景:在PDF论文里看到一个…...
突破内容采集瓶颈:XHS-Downloader的5大行业解决方案与效率提升指南
突破内容采集瓶颈:XHS-Downloader的5大行业解决方案与效率提升指南 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、…...
终极Windows 11优化指南:Win11Debloat让你的系统重获新生
终极Windows 11优化指南:Win11Debloat让你的系统重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…...
知识获取受限?5款开源工具助你合法解锁付费内容
知识获取受限?5款开源工具助你合法解锁付费内容 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否曾在学术研究关键时刻被期刊付费墙阻挡?是否因新闻网站的…...
ai如何助力github项目管理:从智能生成readme到自动编排changelog
今天在准备一个AI图像识别工具的开源项目时,突然意识到GitHub仓库初始化其实可以很智能。以前手动创建目录、写README的日子太费时间了,现在用AI辅助开发,整个过程流畅得像有个技术助理在身边。下面记录下我的实践过程: 智能仓库…...
高性能无线基带FPGA实现:开源802.11 WiFi实时信号处理架构解析
高性能无线基带FPGA实现:开源802.11 WiFi实时信号处理架构解析 【免费下载链接】openwifi open-source IEEE 802.11 WiFi baseband FPGA (chip) design: driver, software 项目地址: https://gitcode.com/gh_mirrors/op/openwifi Openwifi是一个基于软件定义…...
Java应用内存泄漏排查实战:MAT工具从入门到精通(附常见问题解析)
Java应用内存泄漏排查实战:MAT工具从入门到精通 引言:为什么我们需要关注内存泄漏? 记得去年我们团队接手的一个电商项目吗?上线三个月后,系统开始频繁出现OOM(OutOfMemoryError)错误。每次重启…...
手把手教你用Python+Folium搭建离线地图应用(附高德瓦片下载技巧)
PythonFolium离线地图开发实战:从瓦片下载到内网部署全指南 当你在偏远山区进行地质勘探时,突然发现手机信号全无,而团队急需查看预设路线上的地形数据;或者在企业内网环境中,安全策略禁止访问外部地图服务,…...
炉石传说HsMod插件:55+功能全面优化你的游戏体验
炉石传说HsMod插件:55功能全面优化你的游戏体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架的开源炉石传说模改插件,为玩家提供超过55项实…...
Delphi网络编程实战:UDP通信与多线程网络优化详解
前两篇文章分别讲解了Delphi中基于Indy组件的TCP点对点通信、HTTP/HTTPS接口交互,覆盖了可靠连接、Web对接两大常用场景。本篇将深入讲解UDP通信,同时补充多线程网络编程、数据传输防护、常见故障排查等进阶内容,补齐Delphi网络开发的核心模块…...
