ARP协议-介于数据链路层和网络层之间的协议

news2024/11/15 15:21:42

通过上一篇 IP协议  我们知道 目标IP=目标网络 + 目标主机 

🙋‍ 也就是说 必须知道 接收方的接收方的 MAC地址 =>  没有MAC地址无法封装 MAC帧

在网络层,我们可以知道目标主机的 IP 地址, 但是 我们不知道对方的MAC地址 。

在同一个网段,需要通过目标IP,得知对方的MAC地址

----ARP协议(地址解析协议)(今天的主角登场)   

ARP协议是将IPv4地址映射到物理MAC地址的一种协议。当主机需要与其他主机进行通信时,它会发送一个ARP请求广播来查询目标主机的MAC地址。目标主机在收到ARP请求后,会发送一个ARP响应包含自己的MAC地址。然后,请求主机会将映射关系保存在本地ARP缓存表中,以便以后的通信。

📕 ARP 报文格式

⚙ ARP工作过程

1. 先广播: MAC在局域网中发送(所有主机都收到消息)

2. 确认对象 再 1V1 发送。

结论:1 . 任何主机之前向目标主机发起果ARP请求,珠峰了,未来会收到对应的ARP应答

           2. 任何一台主机,也可能别别人发起ARP请求,局域网中任何一台主机收到ARP的时候,可能是一个请求,也可能是一个应答。-->APR协议中一定有相应的标志来区别

📕 模拟ARP

ARP(Address Resolution Protocol)是一种用于在IP网络中将IP地址映射到MAC地址的协议。它用于解决在发送数据包时,需要知道目标设备的MAC地址的问题。下面是模拟ARP的基本过程:

1. 检查目标IP地址是否与本地网络的IP地址在同一子网中。如果不在同一子网中,则查找默认网关的MAC地址。
2. 检查ARP缓存中是否有目标IP地址的条目。ARP缓存是一个存储IP地址和对应MAC地址的本地缓存表。
3. 如果ARP缓存中没有目标IP地址的条目,则发送一个ARP请求广播。这个广播包含本机的MAC地址、IP地址以及要查询的目标IP地址。
4. 目标主机接收到ARP请求广播后,检查自己的IP地址是否与请求中的目标IP地址匹配。如果匹配,则向发送方回复一个ARP响应包,包含自己的MAC地址。
5. 发送方接收到ARP响应包后,将目标IP地址和对应的MAC地址添加到ARP缓存中,并使用该MAC地址发送数据包到目标主机。
6. 如果在一定时间内没有收到ARP响应包,则认为ARP请求失败。

需要注意的是,ARP协议是基于广播的,因此所有在同一广播域内的主机都能接收到ARP请求和响应。

注意: 

❓ 1. ARP看起来是至少进行一个请求,一个应答,是每次发送数据都要这样吗?

🙋‍ arp请求成功后,请求方会暂时把 IP : MAC地址的映射关系会被暂时保存下来,所以请求数可以小于应答数。

❓ 2. 是不是只会在目标最终的子网中进行ARP,其他地点会不会发生ARP呢?

🙋‍ 会。 ARP过程会在网络中随时发生。

🔪ARP欺骗

(可以去  密码学初知 看看一些小知识喔)

ARP欺骗(Address Resolution Protocol spoofing)是一种网络攻击技术,攻击者通过发送伪造的ARP响应来欺骗目标主机,使其将网络流量发送到攻击者指定的MAC地址。这样攻击者就可以截取、篡改或监视网络通信。

为了理解ARP欺骗,我们先来了解一下ARP协议。A。

而ARP欺骗则是利用了ARP协议的这个过程。攻击者发送伪造的ARP响应来欺骗目标主机,将自己的MAC地址伪装成网关或其他合法主机的MAC地址。这样目标主机就会将网络流量发送到攻击者指定的MAC地址,攻击者可以对通信进行监听、修改或丢弃。

为了防止ARP欺骗,可以采取以下措施:
1. 使用静态ARP表:将重要主机的IP地址和MAC地址手动添加到静态ARP表中,可以防止攻击者通过伪造ARP响应来欺骗主机。
2. 使用ARP防火墙:一些网络设备和防火墙提供了ARP防护功能,可以检测并阻止伪造的ARP响应。
3. 网络流量监测与分析:通过监测网络流量和分析ARP请求与响应的情况,可以检测到潜在的ARP欺骗攻击。
4. 使用网络入侵检测系统(IDS):IDS可以检测到异常的ARP活动,如大量ARP响应或不同IP地址对应同一MAC地址等,以便及时发现和阻止ARP欺骗攻击。

☁ 区域的域名解析服务

域名解析服务是将域名转换为对应的IP地址的过程。在互联网中,每个设备都需要一个唯一的IP地址才能进行通信。而域名解析服务就是帮助用户将易记的域名映射到对应的IP地址上,使得用户可以通过域名来访问特定的网站或服务。

区域的域名解析服务是指在特定的地理区域内提供域名解析服务的服务器。这些服务器通常位于不同的地理位置,并且根据用户的地理位置来选择最近的服务器进行域名解析,从而提高解析速度和准确性。

区域的域名解析服务通常由多个服务器组成,并且这些服务器之间会相互同步,以确保解析结果的一致性。当用户发送域名解析请求时,该请求会被路由到最近的解析服务器,服务器会查询域名系统(DNS)来获取相应的IP地址,并将解析结果返回给用户。

区域的域名解析服务有以下几个优势:

1. 低延迟:区域的域名解析服务可以将用户的请求定向到最近的服务器,减少了网络延迟,提高了网站的响应速度。

2. 高可靠性:区域的域名解析服务通常具有冗余的服务器架构和负载均衡机制,即使某个服务器出现故障,仍能保持服务的可用性。

3. 安全性:区域的域名解析服务可以提供安全的解析服务,包括检测和阻止恶意的网络流量、防止域名劫持等。

4. 灵活性:区域的域名解析服务可以根据业务需求进行定制化配置,包括设置不同的解析规则、添加自定义记录等。

📕 NAT技术

NAT(Network Address Translation)是一种网络技术,用于在互联网协议(IP)网络中转换IP地址。它允许多个设备共享单个公共IP地址,从而节约了IP地址资源。当内部网络中的设备要访问互联网时,NAT会将内部IP地址转换为公共IP地址,以便与外部网络通信。

NAT有三种主要类型:静态NAT、动态NAT和PAT(Port Address Translation)。

1. 静态NAT:在静态NAT中,将一个内部IP地址映射到一个固定的公共IP地址。这种映射是一对一的,所以每个内部地址都对应一个唯一的公共地址。

2. 动态NAT:在动态NAT中,内部IP地址会根据需要自动映射到可用的公共IP地址。这种映射是一对一的,但是对于每个会话或连接,会分配一个临时的公共地址。

3. PAT(Port Address Translation):PAT是一种特殊的动态NAT,它使用端口号来区分不同的连接。PAT将多个内部IP地址映射到单个公共IP地址,并使用不同的端口号来标识每个连接。

NAT技术提供了以下几个优点:
- 节省了IP地址资源,因为多个设备可以共享同一个公共IP地址。
- 增强了网络安全性,因为内部设备的IP地址对外部网络是隐藏的。
- 简化了网络配置,因为内部设备可以使用非唯一的私有IP地址。

面试开放性问题:

❓ 在浏览器输入url会发生什么?

在浏览器中输入URL后,以下步骤会依次发生:

解析URL:浏览器会解析URL,包括协议、主机名、路径等信息,确定要访问的服务器和资源。
建立TCP连接:浏览器会与服务器建立TCP连接,通过网络传输数据。这个过程涉及到三次握手来确保连接的可靠性。
服务器请求处理:浏览器向服务器发送HTTP请求,请求特定的资源。服务器接收到请求后,会进行相应的处理,并返回相应的数据。
数据渲染:在浏览器接收到服务器返回的数据包之前,它就已经开始显示页面了。浏览器根据自身的渲染机制对接收到的数据进行渲染,即将数据转换为可视化的页面。
静态文件请求:在页面渲染过程中,如果发现还有其他的静态文件需要加载,如样式文件、图片、JavaScript文件等,浏览器会重新发送请求获取这些文件。有些静态文件可以缓存到浏览器中,以提高页面加载速度。部分网站也会使用第三方CDN来托管静态文件,以提供更快的访问速度。
页面呈现和交互:渲染后的数据经过布局和样式的处理后,会在浏览器中呈现出来,并且可以与页面上的脚本进行交互,如点击按钮、填写表单等操作。
综上所述,当在浏览器中输入URL后,浏览器会解析URL,建立TCP连接,发送请求并接收服务器返回的数据,然后对数据进行渲染并呈现在页面中。同时,浏览器还会处理其他的静态文件请求,并与页面上的脚本进行交互。

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

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

相关文章

Win10安装Docker Desktop并运行Tutorial示例

背景 前段时间一个项目需要在开发环境直接使用 Docker ,为了省事便计划在本地安装 Desktop 版的 Docker 。其实安装过程比较简单,可视化安装即可,主要是对安装与初步使用时遇到的问题做个记录。 下载安装 下载地址:https://dow…

体验facechain

安装Anaconda 下载页面:https://www.anaconda.com/download/ Clone代码仓 git clone https://github.com/modelscope/facechain.git --depth 1 GIT_LFS_SKIP_SMUDGE1安装依赖 cd ./facechain pip install -r requirements.txt pip install -U openmim 运行 修改…

【C++代码】找树左下角的值,路径总和,从中序与后序遍历序列构造二叉树,从前序与中序遍历序列构造二叉树--代码随想录

题目:找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。 题解 使用 height 记录遍历到的节点的高度,curVal 记录高度在 curHeight 的最左节点的值。在深度优先搜索时&a…

获取文件最后修改时间

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Java源码 public void testGetFileTime() {try {String string "E://test.txt";File file new File(string);Path path file.toPath();BasicFileAttributes ba…

第P6周—好莱坞明星识别(2)

五、模型训练 # 训练循环def train(dataloader, model, loss_fn, optimizer):size len(dataloader.dataset) # 训练集的大小num_batches len(dataloader) # 批次数目train_loss, train_acc 0, 0 # 初始化训练损失和正确率for X, y in dataloader: # 获取图片及其标签X…

定制化精准推送与用户分组策略:数智营销的硬技能

对于移动应用开发者和运营者而言,推送是保持良好客户互动,实现用户裂变增长的重要方式,在实际推送服务设计中,往往会根据不同的需求和应用场景,针对性的选取特定对象发送特定内容的推送。具体而言,主流的智…

【C刷题】day3

一、选择题 1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) A: fun(c,&d); B: fun(c,d); C: fun(&c,&d); D: fun(&c,d); 【答案…

大模型应用发展的方向|代理 Agent 的兴起及其未来(下)

“ 借助LLM作为代理大脑的优势,探讨了单一代理、多代理系统和人机协作等应用场景,探讨了代理的社会行为、心理活动以及在模拟社会环境中观察新兴社会现象和人类洞见的可能性。” 01 — 造福人类:代理实践 LLM型智能代理是一种新兴的方向&…

【51单片机实验笔记】LED篇(二)多色LED的基本控制

目录 前言硬件介绍双色LED三色LED七彩自动闪烁LED 接线图面包板介绍直插电阻介绍色环解析 双色LED实际接线图三色LED实际接线图七彩自动闪烁LED实际接线图 软件实现双色LED交替闪烁三色LED灯交替闪烁 总结 前言 本节内容我们学习了解一些多色LED的显示原理及驱动方式。 本节涉…

Pytorch---空间特征金字塔SPP模块的实现

文章目录 一、SPP模块二、使用pytorch实现 一、SPP模块 SPP模块是指定空间特征金字塔模块,是由何凯明在2014年的论文中所提出的。 论文地址如下: 论文地址 该模块的主要作用是:在分类网络中,通过分类器之后,与全连接…

stack与queue的简单封装

前言: stack与queue即栈和队列,先进后出/先进先出的特性我们早已了然于心, 在学习数据结构时,我们利用c语言实现栈与队列,从结构体写起,利用数组或指针表示他们的数据成员,之后再一个个实现他们…

Linux 故障定位手段之保存某个时间段内的top结果

在Linux中对故障原因进行定位时,除了查看对应的软体运行日志、OS运行日之外,还可以查看 top 的资源消耗结果。 参考语句: 以CPU为基准列进行排序记录TOP结果 nohup top -d 1 -b -o %CPU | tee -a /tmp/cpu.txt & 语句含义:每…

etc目录下的profile.d文件目录设置环境变量和全局脚本

一、设置环境变量 etc目录下的profile.d文件目录 /etc/profile.d 1、编写 vi test.sh文件内容 # jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile …

34.CSS魔线图标的悬停效果

效果 源码 index.html <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Icon Fill Hover Effects</title> <link rel="stylesheet" h…

【深度学习实验】前馈神经网络(final):final

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集&#xff08;IrisDataset&#xff09; 2. 构建模型&#xff08;FeedForward&#xff09; a. __init__(初始化) b. forward(前向传播) 3.整合训练、评估…

Mojo:新型AI语言中的7个令人惊叹的Python升级,用简单的英语解释人工智能

Mojo&#xff1a;新型AI语言中的7个令人惊叹的Python升级 编程之美 用简单的英语解释人工智能 编程之美 由Coding Beauty设计的图像&#xff0c;使用Mojo标志和Python标志。 它比C更快&#xff0c;与Python一样简单&#xff0c;但速度提高了35000倍。 进入Mojo&#xff1a;一种…

冒泡排序与选择排序(最low的两兄弟)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 在我们的生活中&#xff0c;无处不在用到排序&#xff0c;比如说成绩的排名&#xff0c;淘宝&#xff0c;京东等等商品在各个方面的排序&#xff0c;这样看来一个好的算 法很重要&#xff0c;接下来我们要先…

深度学习自学笔记四:浅层神经网络(一)

一、神经网络概述 神经网络是一种模仿人脑神经系统结构和功能的计算模型。它由大量相互连接的人工神经元组成&#xff0c;并通过这些神经元之间的信息传递来进行计算和学习。 神经网络的基本组成单元是神经元&#xff0c;也称为节点或单元。每个神经元接收来自其他神经元的输…

第一百五十二回 自定义组件综合实例:游戏摇杆三

文章目录 内容回顾优化性能示例代码我们在上一章回中介绍了 如何实现游戏摇杆相关的内容,本章回中将继续介绍这方面的知识.闲话休提,让我们一起Talk Flutter吧。 内容回顾 我们在前面章回中介绍了游戏摇杆的概念以及实现方法,并且通过示例代码演示了实现游戏摇杆的整个过程…

取消github向邮箱推送邮件及修改密码

取消或者说禁止github向邮箱推送邮件&#xff0c;因为量太大了&#xff0c;没多久就上万封邮件&#xff0c;于是取消订阅或者推送。 1、登录github 2、点击右上角头像&#xff0c;然后点击Settings 3、点击Notifications&#xff08;通知&#xff09; 4、取消各种推送&#x…