【数据链路层】ARP协议

文章目录

  • 以太网
    • 以太网帧对的格式
  • MAC地址
    • 对比MAC地址和IP地址
  • MTU和MSS
  • ARP协议
    • ARP协议的工作原理
    • ARP欺骗

以太网

”以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

以太网帧对的格式

在这里插入图片描述
其中:

  • 源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址), 长度是 48 位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应 IP、ARP、RARP;
  • 帧末尾是 CRC 校验码

MAC地址

  • MAC 地址用来识别数据链路层中相连的节点;
  • 长度为 48 位, 及 6 个字节
  • 网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的

对比MAC地址和IP地址

  • IP地址是分配给网络设备的逻辑地址,用于在网络层(第3层)进行通信。它可以通过网络管理员手动配置,也可以通过动态主机配置协议(DHCP)自动分配。IP地址用于在广域网(WAN)或互联网中标识设备,支持设备之间的数据传输。IP地址是可变的,在不同的网络中其IP地址可能会不一样。
  • MAC地址是网卡的硬件地址,是网络设备的物理标识符。它是由制造商在设备生产时分配的,并且在全球范围内是唯一的。MAC地址通常用于局域网(LAN)中的数据链路层(第2层)通信,用于标识网络中的设备。
  • 简单来说,IP地址帮助我们从一个网络到另一个网络,mac地址用于在一个局域网中找到目标设备

MTU和MSS

MTU是网络中的最大传输单元,MSS是最大报文段长度

  • MTU:网络层能够发送的最大数据包大小(通常是1500字节),以字节为单位。MTU包括IP包头和数据部分,因此它定义了在网络上传输的最大数据帧的总大小。如果传输的数据包大于MTU,数据包就会被分片(fragmentation),从而分成多个较小的包传输。一旦分片就会增加丢包的概率,所以网络层的IP报文不宜设置太大。
  • MSS:传输层(TCP)能够处理的最大报文段大小,它仅指数据部分,不包括TCP包头和IP包头。MSS通常由通信双方在TCP三次握手过程中协商确定。通常,如果MTU是1500字节,那么MSS=1500-20(IP报头)-20(TCP报头)=1460字节。

为什么要设置这个MTU呢?这是为了保证网络中的性能。如果每个报文数据太大,容易导致网络拥堵。

使用ifconfig指令可以查看自己主机的MTU
在这里插入图片描述

ARP协议

ARP 不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议用于将IP地址转换为MAC地址

当一台主机给另一台主机发送数据时,必须先知道对方的MAC地址,因为报文先经过数据链路层。那么ARP协议是如何获取目标IP地址对应的MAC地址的呢?

ARP协议的工作原理

  1. 当主机A(发送方)需要向主机B(目标方)发送数据时,主机A首先检查自己的ARP缓存中是否已经有目标IP地址对应的MAC地址。如果没有,主机A就会向所在的局域网发送一个ARP请求的广播报文,即同一局域网的所有主机都会收到这个请求。这个ARP请求包含了发送方的IP地址、MAC地址以及目标IP地址。这些数据包含在ARP的报头中。
  2. 其它主机收到这个ARP请求之后,会先把ARP请求报头解包,然后发现其请求的目标IP不是自己,就丢弃这个报文不做响应。相反,如果目标IP就是自己这台主机,那么目标主机B就会发送一个ARP响应报文,告知主机A自己的mac地址。由于通过请求已经知道了主机A的mac地址,所以发送响应时就把这个mac地址作为目标mac地址直接发送给主机A。
  3. 主机A收到ARP应答之后,在数据链路层解包,获取目标主机的mac地址。然后更新自己的ARP缓存,说白了就是存下一个目标IP和mac地址的映射,下一次要找主机B的mac地址就直接往这里面拿就行了。
    在这里插入图片描述
    下面是ARP数据报的格式:
    在这里插入图片描述
    其中
  • 硬件类型指链路层网络类型,1 为以太网;
  • 协议类型指要转换的地址类型,0x0800 为 IP 地址;
  • 硬件地址长度对于以太网地址为 6 字节;
  • 协议地址长度对于和 IP 地址为 4 字节;
  • op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答

ARP欺骗

ARP协议本身没有安全机制,所以很容易受到中间人的攻击。攻击者可以发送伪造的ARP响应,导致网络中的设备将攻击者的MAC地址与某个合法IP地址关联,从而拦截或篡改数据

防御措施:为了防止ARP欺骗攻击,网络管理员可以使用静态ARP表ARP防火墙或使用更高级的网络安全协议(如IPsec)来保护网络通信的完整性。

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

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

相关文章

nuxt3实战:完整的 nuxt3 + vue3 项目创建与useFetch请求封装

一. 安装 pnpm dlx nuxilatest init <project-name>// ornpx nuxilatest init <project-name>如遇到报错 手动安装&#xff1a; 浏览器访问报错https请求地址&#xff1a; 点击tar(项目初始文件的下载地址)对应地址,下载starter-3.tar.gz 包到本地 本地创建项…

AskYourDatabase v1.1.83 使用人工智能连接您的数据库并与您的数据聊天

AskYourDatabase 是一个创新的 平台 它允许用户直接连接到您的数据库并与您的数据聊天 。这个革命性的工具使用人工智能来提供答案和分析&#xff0c;日常开发中可以用来帮助开发者编写sql脚本&#xff0c;分析数据结构等。支持市面上流行的数据库。后端数据库开发的又一利器&a…

Go语言加Vue3零基础入门全栈班15 gin+gorm+vue3用户管理系统实战录播课 2024年08月04日 课程笔记

预览 登录页面&#xff1a; 首页&#xff1a; 用户列表&#xff1a; 新增用户&#xff1a; 删除用户&#xff1a; 暗黑模式&#xff1a; 概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 01 Golang零基础入门课_20240726_149元02 Golang面向对象…

Open3D 三维重建-Poisson Surface Reconstruction (泊松曲面重建)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.1.1函数代码 2.1.2参数详解 2.1.3名词解释 2.2完整代码 三、实现效果 3.1原始点云 3.2重建后点云 3.3去除低密度点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点…

Linux快速切换/完善内核

看到标题就晓得是为啥而写的吧&#xff0c;没错&#xff0c;它就是记录Linux的内核切换的一些常见问题&#xff0c;尽可能把平时一些经验和真实有效的心得写下来&#xff0c;同时也希望可以给需要切换内核版本的大伙带来方便&#xff0c;感受到"小小内核切换"竟然如此…

某赛通电子文档安全管理系统 CDGAuthoriseTempletService1 SQL注入漏洞复现(XVE-2024-19611)

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

高效的编程学习方法和技巧

编程小白如何成为大神&#xff1f;大学新生的最佳入门攻略 编程已成为当代大学生的必备技能&#xff0c;但面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&…

关于区块链的公共医疗应用开发

区块链的养老保险平台应用开发 任务一:环境准备 1.编译区块链网络 目录:/root/xuperchain/ 在区块链网络目录下执行make命令,编译网络,编译成功后输出compile done! 启动区块链网络 2.创建钱包账户 创建普通钱包账户userTest,命令如下 bin/xchain-cli account newke…

【linux|001】Unix和Linux的关系 及 它们的发展历史

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

win7系统postman11.7错误:无法定位程序输入点DiscardVirtualMemory于动态链接库KERNEL32.dlI 上

目录 前言&#xff1a;环境描述 一、问题描述 二、问题定位 三、解决方案 1、卸载最新版&#xff0c;安装原来可用的旧版 2、postman禁止自动更新 四、错误的解决方案 1、重启电脑 2、以为是 KERNEL32.dlI 丢失 3、注册 kernel32.dll 4、使用Windows自带的系统文件检…

PPT免费图片素材网站分享

一、Pixabay 网址&#xff1a;https://pixabay.com/ 图片类型&#xff1a;高清、免费、商用 使用方法&#xff1a;找到想要的图片之后&#xff0c;右键复制之后粘贴到PPT即可使用。同时&#xff0c;点击下载可以找到不同尺寸的PPT素材 二、花瓣网 网址&#xff1a;https://…

mysql事务与索引

1.事务 &#xff08;1&#xff09;提出背景&#xff1a; 在日常开发环境中&#xff0c;有一些场景是需要“一气呵成”完成某一个操作。 eg&#xff1a;银行转账的场景&#xff1a;张三&#xff08;手里有1000&#xff09;现要给李四&#xff08;手里有500&#xff09;转500&…

零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…

Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎

前言 在软件项目开发中&#xff0c;我们都会接触到流程审批的需要业务&#xff0c;我们以往用的最多就是如下图这种流程编辑引擎插件&#xff1a; 以上截图中的流程工具是不是大家常见的呀&#xff01;感觉很丑拿不出手呀&#xff01;在当前行业内卷及竞争激烈情况下&#xff…

Docker Compse单机编排

一.Docker Compse 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;你可以使用 YAML 文件来配置应用程序的服务、网络和卷&#xff0c;然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程…

鸿蒙(API 12 Beta3版)【AVCodec Kit简介】 音视频编码服务

AVCodec kit&#xff08;Audio & Video Codec Kit&#xff0c;音视频编解码&#xff0c;封装解封装原子能力&#xff09;是媒体系统中的音视频的编解码、媒体文件的解析、封装、媒体数据输入等原子能力。 能力范围 媒体数据输入&#xff1a;媒体应用可以传入文件fd、或者…

TM1652段码屏芯片全解析——概况,性能,MCU连接,样例代码

首先&#xff0c;作为四年前就有的LED段码控制芯片&#xff0c;相关的资料及样例程序少的可怜。硬件驱动 作为固定使用的 软件资源&#xff0c;其共享性远低于软件领域的驱动库。人的才智不应浪费在这种不具创造性的重复实验上。 要点总结&#xff1a; TM1652概述&#xff1a…

【网络层】IP报文解析和网段划分

文章目录 网络层的作用IP协议协议报头格式网段划分DHCPCIDR划分方案 IP地址的数量限制私有IP地址和公网IP地址LAN和WAN 路由 网络层的作用 前面学习了应用层和传输层&#xff0c;应用层的作用是为用户和应用程序提供网络服务&#xff0c;传输层的作用是提供端口到端口的通信服…

数据结构与算法--二叉树的遍历及应用

文章目录 回顾二叉树的五个重要性质 提要二叉树的遍历二叉树遍历流程图前序遍历流程图&#xff08;根左右&#xff09;中序遍历流程图&#xff08;左根右&#xff09;后序遍历流程图&#xff08;左右根&#xff09; 二叉树遍历的示例根据遍历序列确定二叉树的形态确定方法 二叉…

界面组件Kendo UI for Vue 2024 Q2亮点 - 发布一系列新组件

随着最新的2024年第二季度发布&#xff0c;Kendo UI for Vue为应用程序开发设定了标准&#xff0c;包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示&#xff0c;从设计到代码的生产力增强、可访问性改…