HCIA-ARP

ARP的由来

ARP这一种协议它会是在我们HCIA中第一个需要完全掌握的一个协议,不然对于数据通讯来说大家都会一直觉得很绕圈

  • 协议栈,网线,网卡,它们组成了我们最小的数据通信的小脉络
  • 注:可以了解ARP攻击(冒充访问的目的设备给你错误的mac),需要内网中的攻击防范手段(需中级高级学习)
    在这里插入图片描述
  • S-IP:源IP
  • D-IP:目的IP

对于IP协议来说是能获取到对方IP的,但是怎么拿到对方的MAC
对于E2来说我知道源MAC(自己的MAC)
假设左边的MAC是00-00-01,右边的MAC是00-00-02
源mac我是知道的S-MAC:00-00-01但目的MAC我们不知懂。对于MAC来说是全球唯一,出厂自带,烧录进网卡芯片中。那我们怎么拿到这个MAC地址
我们1.1.1.1/241.1.1.2/24发报文,我们无法通过程序或者从上层的协议感知一下。

我们可以填写成全1以一个广播的形式,在我整个广播域下找对应的设备,当我们目的mac全为1(十六进制全为F)的时候,整个网络中所有的设备都能收到这样的一个报文
我不知道怎么到达主机2但是我知道我的数据如何让你收到(发个广播)
这种方式在我们整个通信中可以接入我们一个的交换机的,未来会有很多的设备通过交换机与主机相连,通过广播的形式,会对全部相连的设备都能收到数据(默认交换机是不做配置)这样主机2确实能收到,但是其他的设备也能收到,这样的网络通讯叫多点网络通信是无法满足我们单播通讯的条件的。没有办法跟设备2进行通信。
所以对我们TCP/IP通信设计的模型来说是无法仅仅依靠二层(数据链路层)完成mac地址的查询(填写/封装),数据仅仅放在E2这里MAC地址封装不了,所以得开发个协议帮助填写我们的mac字段;无法封装mac地址数据无法发送出去(不符合我们数据整体的通信方式)出现的新的协议就是ARP

ARP协议

ARP — 地址解析协议
概念:在已知IP地址的情况下,求与之对应的MAC地址
ARP是基于数据链路层封装的2.5层协议(数据链路层之上)
3层需要提供最基础的IP寻址包括路由的功能;ARP仅在数据封装时封装在我们数据链路层之上

  1. 当我数据(PC1,1.1.1.1/24)要进行数据通讯,要去访问PC2的时候(1.1.1.2/24)首先会检测对端IP是否在同一网段(对比网络地址:自己的IP+自己的掩码,比对对方的IP+自己的掩码)若网络地址相同,就会进行第二步,不同
  2. 借用ARP协议实现获取对方IP对应的MAC
    对于ARP这个新协议来说它的数据帧是在这里插入图片描述
对于ARP而言有四个核心的参数
  1. sender-ip:发送者IP
  2. sendee-mac:发送者的MAC
  3. target-ip:目标IP
  4. target-mac:目标MAC

未来这个报文会发送到PC2上
target-mac是不能不填的,如果不填(封装)是不符合TCP/IP协议栈的封装标准(发不出去),我们不知道mac又要填MAC,其实我们可以填全0(未知)

我们不知道设备地址在哪,所以我们第一个报文包一定是广播报文(不怎么好,但是我们没有办法)

  1. E2这里的目的MAC(D-MAC)我们全填F
  2. 在接收中会有一个广播域
    广播域:指的是广播报文所传递的范围;
  • 对于交换机而言它所有的端口都处在同一个广播域(不划分VLAN的情况下)
  • 对于路由器来说所有接口都是一个广播域
  • 广播报文是无法穿透路由器的三层接口
    冲突域:在一定的范围内,我的数据在发送或者接收的范围中可能会产生数据的碰撞这样的范围就是冲突域

PC2收到广播报文后,首先看看报文是不是给自己的,如果是广播包PC2必须强制接收处理;其次要进行FCS/CRC校验,校验完后比对FCS字段,表示没问题交给上层。实际上我需要先把二层给拆了,是一个广播包(全F)可以看到对方mac地址给我发的一个报文(能够知道PC1的地址)看完二层就看二层之上的封装了,上层就是ARP,会看target-ip(目的IP地址)是不是我,如果是我,如果是则接下去走(想知道),如果不是则会丢弃报文

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

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

相关文章

使用Java和MyBatis获取表头与数据

使用Java和MyBatis获取表头与数据 在数据处理与展示中,经常需要将数据库查询结果中的表头(列名)与实际数据提取出来。本文将介绍如何通过Java的JDBC和MyBatis来实现这一需求。 1. 使用JDBC获取表头与数据 在JDBC中,可以使用Res…

文献解读-群体基因组第二期|《中国人群中PAX2新生突变的检测及表型分析:一项单中心研究》

关键词:应用遗传流行病学;群体测序;群体基因组;基因组变异检测; 文献简介 标题(英文):Detection of De Novo PAX2 Variants and Phenotypes in Chinese Population: A Single-Cente…

new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器

demo案例 new CCDIKSolver(OOI.kira, iks); 在使用某个特定的库或框架来创建一个逆运动学(Inverse Kinematics, IK)求解器实例。逆运动学在机器人学、动画和计算机图形学等领域中非常重要,它用于根据期望的末端执行器(如机器人的…

Compose第四弹 Compose项目

目标: 1.可供学习的Compose项目 一、官方提供项目 谷歌官方提供的Compose项目: GitHub - android/compose-samples: Official Jetpack Compose samples. 项目及主要页面展现 1.1 Reply项目 1.首页底部TAB栏 2.侧边栏菜单:拖动滑出和收起…

建设现代智能工业-智能化、数字化、自动化节能减排

建设现代智能工业-智能化节能减排 遵循“一体化”能源管理(Integrated Energy Management)的设计宗旨,集成城市各领域(如工业.交通、建筑等)的能源生产和消费信息,面向城市政府、企业、公众三类实体,提供“一体化”的综合能源管理…

uniapp h5项目切换导航栏及动态渲染按钮颜色

1.效果图 2.html,动态渲染按钮样式---三元判断 <!-- 切换栏 --><view class"statusList"><block v-for"(item,index) in list" :key"index"><view class"swiper-tab-list" :class"current item.id?activ…

CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)

注意&#xff1a;本模型继续加入 组合预测模型全家桶 中&#xff0c;之前购买的同学请及时更新下载! 往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;Transformer-BiGRU预测模…

静态加速和动态加速是啥区别

以下是两者之间的主要区别&#xff1a; 加速对象与内容&#xff1a; 静态加速&#xff1a;主要针对网页中的静态资源&#xff0c;如HTML文件、CSS文件、JavaScript文件、图片、Flash动画等。这些资源的特点是更新频率较低&#xff0c;适合通过缓存技术加速。 动态加速&#xf…

网络学习(11) |深入解析客户端缓存与服务器缓存:HTTP缓存控制头字段及优化实践

文章目录 客户端缓存与服务器缓存的区别客户端缓存浏览器缓存应用程序缓存优点缺点 服务器缓存优点缺点 HTTP缓存控制头字段Cache-ControlExpiresLast-ModifiedETag 缓存策略的优化与实践经验分享1. 使用合适的缓存头字段2. 结合使用Last-Modified和ETag3. 利用CDN进行缓存4. 实…

【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取

目录 一、Swagger 简介1. 什么是 Swagger&#xff1f;2. 如何使用 Swagger3. Springboot 中swagger的使用示例1. maven 引入安装2. java配置 二、Swagger UI存在的缺点1.不够方便直观2.请求的参数没有缓存3.不够美观4.如果是JWT 无状态登录&#xff0c;Swagger使用起来就没有那…

STL-stack的使用及其模拟实现

在C标准库中&#xff0c;stack是一种容器适配器&#xff0c;它以后进先出的方式组织数据&#xff0c;其删除只能从容器的栈顶进行元素的插入与取出操作。 stack的使用 stack的构造函数 stack的成员函数 empty&#xff1a;判断栈是否为空back&#xff1a;返回当前栈中元素的数量…

docker之自制django镜像

一&#xff0c;安装docker&#xff08;本作者往期文章有docker安装 &#xff0c;或者更详细的有关docker安装&#xff09; 二&#xff0c;拉取centos7镜像 docker pull centos:7 三&#xff0c;创建容器 docker run -id -v /root/docker/soft:/soft -p 8000:8000 --name djang…

Redis实践记录与总结

最近生产环境缓存数据库数据过大&#xff08;如何搭建单服务redis缓存数据库&#xff1f;以及可视化工具Another Redis Desktop Manager使用&#xff09;&#xff0c;导致在对数据库做rdb快照备份时消耗内存过大&#xff0c;缓存数据库宕机一小时。基础运维通过增加虚拟机内存暂…

spark相关知识

1.Spark的特点 Spark的设计遵循“一个软件栈满足不同应用场景”的理念&#xff0c;逐渐形成了一套完整的生态系统&#xff0c;既能够提供内存计算框架&#xff0c;也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。 运行速度快&#xff0c;易使用&#xff0c;强大的技…

kube-prometheus-stack 识别 k8s 集群内所有的 ServiceMonitor 和 PrometheusRule

默认情况下&#xff0c;kube-prometheus-stack 只自己创建的 ServiceMonitor&#xff0c;如果 k8s 集群内有多个非 kube-prometheus-stack 创建的 ServiceMonitor&#xff0c;不会被识别到。PrometheusRule 同理。 要识别所有的 ServiceMonitor 和 PrometheusRule &#xff0c;…

推荐一个 Java 开源企业级新能源汽车智能共享充电桩管理平台

文末可获取 Orise 平台源码 01 Orise 智能充电桩管理平台 奥升( Orise ) 新能源汽车充电桩管理 Saas 云平台是一个集充电设备管理、用户充电管理、线上小程序内容管理于一体的综合管理平台。Orise充电桩平台支持高并发业务、业务动态伸缩、桩通信负载均衡&#xff0c;通过Docke…

关于 kubernetes 的9个核心问题解答

本文通过提问题的方式对在 Kubernetes 集群建设中&#xff0c;不同的网络组件、存储方案、CI/CD工具、监控系统、网关服务以及服务网格&#xff08;如 Istio&#xff09;等选择给出一定的参考解答&#xff1b;但在实际工作中需要紧密结合业务规模、系统性能需求、安全性要求以及…

Golang项目代码组织架构实践

Golang在项目结构上没有强制性规范&#xff0c;虽然这给了开发者很大的自由度&#xff0c;但也需要自己沉淀一套可行的架构。本文介绍了一种项目布局&#xff0c;可以以此为参考设计适合自己的 Golang 项目组织模式。原文: Golang Project Layout Go 有很多强制的或是约定俗成的…

收藏:六款好用的企业防泄密软件推荐

企业数据如同企业的生命线&#xff0c;保护数据安全免遭泄露变得至关重要。 面对日益复杂的网络安全威胁&#xff0c;一套高效的企业防泄密软件成为企业安全架构的基石。 以下是精心挑选的六款企业防泄密软件&#xff0c;它们在数据加密、访问控制、行为监控等方面表现出色&am…

lua vm 常识一: attempt to yield across a C-call boundary 的原因分析

使用 lua 的时候有时候会遇到这样的报错&#xff1a;“attempt to yield across a C-call boundary”。 1. 网络上的解释 可以在网上找到一些关于这个问题的解释。 1.1 解释一 这个 issue&#xff1a;一个关于 yield across a C-call boundary 的问题&#xff0c;云风的解释是…