3.7.3、ARP协议(网际层)

news2024/10/7 14:24:20

地址解析协议 ARP

1、工作原理

在共享总线型的以太网中

为了简单起见:只有各主机所配置的 IP 地址和其网卡上固化的 MAC 地址

假设主机 B 要给主机 C 发送数据包

主机 B 知道主机 CIP 地址,但是不知道 CMAC 地址

  • 因此,主机 B 的数据链路层在封装 MAC 帧时,就无法填写目的 MAC 地址字段,进而也就无法构建出要发送的 MAC

image-20221128233800354

实际上,每台主机都会有一个 ARP 高速缓存表

  • 其中记录有 IP 地址和 MAC 地址的对应关系

  • 例如:主机 AIP 地址与 MAC 地址的对应关系

    image-20221128235912638

主机 B 要给主机 C 发送数据包时

  • 会首先在自己的 ARP 高速缓存表中查找主机 CIP 地址对应的 MAC 地址,但是未找到

    image-20221129000106588

因此,主机 B 需要发送 ARP 请求报文来获取主机 CMAC 地址

  • (通过广播来根据获取目的主机 IP 获取其 MAC 地址)

ARP 请求报文的内容:

  • 我的 IP 地址为 192.168.0.2 192.168.0.2 192.168.0.2
  • 我的 MAC 地址为 00 − E 0 − F 9 − A 3 − 43 − 77 00-E0-F9-A3-43-77 00E0F9A34377
  • 我想知道 IP 地址为 192.168.0.3 192.168.0.3 192.168.0.3 的主机的 MAC 地址

image-20221129000233049

注意

  • 这里以比较通俗的语言描述其内容,实际上 ARP 地址有具体的格式

  • ARP 请求报文封装在 MAC 帧中发送,目的地址为广播地址


主机 B 发送封装有 ARP 请求报文的广播帧

总线上的其他主机都能收到该广播帧

  • 主机 A 的网卡收到该广播帧后,将其交给上层处理

    • 上层的 ARP 进程解析 ARP 请求报文
    • 发现所询问的 IP 地址不是自己的 IP 地址,因此不予理会
  • 主机 C 的网卡收到该广播帧后,将其交给上层处理

    • 上层的 ARP 进程解析 ARP 请求报文

    • 发现所询问的 IP 地址正是自己的 IP 地址,需要进行响应

    • 主机 C 首先将 ARP 请求报文中所携带的主机 BIP 地址与 MAC 地址记录到自己的 ARP 高速缓存表中

    • 然后给主机 B 发送 ARP 响应报文,已告知自己的 MAC 地址

image-20221129001325522

ARP 响应报文的内容:

  • 我的 IP 地址为 192.168.0.3 192.168.0.3 192.168.0.3
  • 我的 MAC 地址为 00 − 0 C − C F − B 7 − 4 A − 82 00-0C-CF-B7-4A-82 000CCFB74A82

image-20221129001620207

注意

  • 这里以比较通俗的语言描述其内容,实际上 ARP 地址有具体的格式

  • ARP 响应报文封装在 MAC 帧中发送,目的地址为主机 BMAC 地址


主机 C 发送封装有 ARP 响应报文的单播帧

总线上的其他主机都能收到该单播帧

  • 主机 A 的网卡收到该单播帧后,发现其目的 MAC 地址与自己的 MAC 地址不匹配
    • 直接丢弃该帧
  • 主机 C 的网卡收到该广播帧后,发现其目的 MAC 地址就是自己的 MAC 地址(数据链路层)
    • 将其交给上层(网络层)处理
    • 上层的 ARP 进程解析 ARP 响应报文
    • 将其所包含的主机 CIP 地址与 MAC 地址记录到自己的 ARP 高速缓存表中

image-20221129002111105

主机 B 现在可以给主机 C 发送之前想发送的数据包了

ARP 请求的广播帧和 ARP 响应的单播帧是不同的

  • 对于请求,每个主机都会接受并检查其 IP 地址是不是自己的 IP 地址
  • 对于响应,每个主机会根据 MAC 地址接不接收该帧

2、ARP 高速缓存表记录类型

ARP 高速缓存表中的每一条记录都有其类型

  • 动态

    • 记录是主机自动获取到的,生命周期默认为 2 2 2 分钟
    • 当生命周期结束时,该记录将自动删除
    • 原因:IP 地址与 MAC 地址的对应关系并不是永久性的
      • 例如:主机的网卡坏了,当更新新的网卡后,主机的 IP 地址并没有改变,但主机的 MAC 地址改变了
  • 静态

    • 用户或网路维护人员手工配置的,不同操作系统下的生命周期不同,
      • 例如:系统重启后不存在或系统重启后依然有效。

image-20221129003444146


3、APR 的作用范围

主机 H1 是否可以更用 ARP 协议获取到主机 H2MAC 地址?

image-20221129003003055

否定的。

  • ARP 协议只能在一段链路或一个网络上使用,而不能跨网络使用

对于本例,ARP 协议的使用是逐段链路进行的

image-20221129003225209

4、说明

ARP 请求和响应外,ARP 还有其他类型的报文

  • 例如:用于检查 IP 地址冲突的 “ 无故 ARP、免费 ARP(Gratuitous ARP) ” ;

ARP 没有安全验证机制,存在 ARP 欺骗(攻击)问题。

  • 因为其他主机给它发送 ARP 请求的广播帧时,都会接受该广播帧,然后返回给自己的 IP 地址和 MAC 地址

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

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

相关文章

使用 Bytebase 管理 Rainbond 上的应用数据库

在应用的发布过程中数据库的结构变更一直是最复杂也是风险最大的环节,而 Bytebase 可以对这一过程进行全生命周期的管理。在 Rainbond 中安装 Bytebase,轻松管理部署在 Rainbond 上的所有数据库。 Bytebase 是什么? Bytebase 是一个开源的数…

linux驱动 usb转串口ch344 改变读取缓冲区大小

开发环境 核心板:IMX6 内核版本:linux4.1.5 问题 通过USB扩展出来的串口接收数据会出现截断现象,而且每次截断的大小都一样。而核心板提供的串口UART就没有这个现象。 核心板自带串口正常的现象: 扩展串口异常现象&#xff1a…

【软件测试】8年资深测试说出来我们的心声......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 执着于手动的功能测…

VLAN划分-----计算机网络

拓扑图 LSW1与LSW2都是三层交换机,现在两台交换机分别连着两台pc。 其中: LSW1的0/0/1端口连着pc1,0/0/2连着pc2,0/0/3端口连着lsw2。 LSW2的0/0/1端口连着pc3,0/0/2连着pc4,0/0/3端口连着lsw1。 不同vlan…

pycharm opencv无法自动补全

我的环境 python 3.6.9opencv-python 4.4.0.42opencv-contrib-python 4.6.66ubuntu 18.04 LTSpycharm 2020.3.2 解决方案 首先找到cv2的site-packagespip3 show opencv-python进入到该目录, 复制so结尾文件至上级目录: cp cv2.cpython-36m-x86_64-linux-gnu.so ../等待pych…

基于粒子群算法和遗传算法优化的高速列车横向悬挂

目录 前言 1.高速列车模型 2.优化算法优化模糊PID流程 3.普通PID、优化算法模糊PID仿真对比 3.1 模糊控制器设计 3.2 仿真结果 3.2.1粒子群优化PID 3.2.2粒子群优化模糊PID 3.2.3遗传算法优化模糊PID 4.总结 前言 高速列车,是指最高行驶速度在200km/h 及以…

二、【React-Router5】路由的基本使用

文章目录1、写在前面的总结2、效果图3、项目结构4、CODE4.1、index.js4.2、App.js4.3、About.jsx4.4、Home.jsx5、Result6、路由组件与一般组件7、Link 升级 NavLink8、封装NavLink8.1、MyNavLink.jsx8.2、修改上面4.2部分代码1、写在前面的总结 明确好界面中的导航区、展示区…

火山引擎数智平台:CDP产品要能与多方联动

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 CDP(Customer Data Platform,客户数据平台)市场将迎来新一轮的高速增长。 国际数据公司(以下简称“IDC”&#xff0…

[附源码]Python计算机毕业设计SSM流浪猫狗救助站(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ofxTimeMeasurements——OpenFrameworks插件,可以轻松测量C++代码任何部分的执行时间

一、简介 ofxTimeMeasurements是一款用于OpenFrameworks 开源C框架的插件,可以让使用者轻松测量C代码任何部分的执行时间。其优势在于以图形化的方式显示代码执行时间。效果如下: 只是它必须依赖OpenFrameworks,所以如果你不用这个框架&…

《Head First HTML5 javascript》第10章 自定义对象

2022.11.23 第10章 自定义对象 面向对象OOP(Object Oriented Programming) 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)对象是存储在单个分组中的相关功能的集合。在 JavaScript 中&…

第二证券|多只公募基金损失惨重;储能板块低开高走

今天早盘,A股大幅低开,上证50指数直接跳空跌破2500点,最多跌逾3%,创业板指亦跌破2300点整数关口。 盘面上,酒店餐饮、旅游、储能、ST等板块逆势活跃,酿酒、工程机械、互联网、证券等板块跌幅居前。北上资金…

【LeetCode每日一题:1758. 生成交替二进制字符串的最少操作数~~~模拟+遍历+计数】

题目描述 给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符…

KVM虚拟机热扩容

创建一个虚拟机用于练习在线扩容 virt-install --name centos8-3 --memory 4096,currentMemory1024 --vcpus 2,maxvcpus8 --disk /var/lib/libvirt/images/centos8-3.qcow2,busvirtio,formatqcow2 --import --os-variant rhel8.0 --graphics vnc --network networkdefault…

Docker-JenKins安装及配置!

Jenkins官网:Jenkins 安装主机配置(官方): 最低: 256 MB 内存 1 GB 的驱动器空间(尽管如果将 Jenkins 作为 Docker 容器运行,则建议至少 10 GB) 小团队推荐: 4 GB …

针对支付宝-当面付实现的个人支付

测试地址 项目背景 为什么想做这个 一是工作中也接触到了支付宝,微信支付方面,二是自己也想弄个收费服务,比如之后做的程序想收费可以直接让用户扫码支付,而不用微信交流了。 了解什么支付适合个人支付 微信支付:需要…

基于SpringBoot的实习管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#…

Unity与IOS⭐Xcode打包,上架TestFlight的完整教程

文章目录 🟥 本章注意事项1️⃣ 证书及Archive2️⃣ 更新版本及加密规则🟧 Xcode打包出ipa文件🟨 将ipa上传到App Store Connect🟥 本章注意事项 1️⃣ 证书及Archive 上架TestFlight需要苹果企业版证书,而不是个人版证书。Archive时必须插上手机,否则会失败。2️⃣…

Prometheus 采集rabbitmq监控数据

Prometheus采集主机监控参考部署下载,图形生成 系统安装Grafana downloadWindows参考图形生成参考win_exporterLinux参考node_exporterMysql参考Mysql_exporterSQL Server参考SQL exporterRedis 参考Redis_exportercadvisor参考cadvisorrabbitmq参考参考rabbitmq s…

众多互联网公司都在用的Elasticsearch还不会?熬夜整理基于 Elasticsearch 7.x 版本的核心知识学习手册,值得拥有!

简介 简单来说 ElasticSearch 就是一个搜索框架。对于搜索这个词我们并不陌生,当我们输入关键词后,返回含有该关键词的所有信息结果。 在我们平时用到最多的便是数据库搜索: SELECT * FROM USE WHERE NAME LIKE %小菜%但是用数据库做搜索存…