网络原理(数据链路层)->以太网帧格式解

news2024/11/28 16:52:55

前言
大家好我是小帅,今天我们来了解以太网帧格式
个人主页


文章目录

  • 1.数据链路层
    • 1.1 认识以太⽹
    • 1.2 MAC地址(⽹卡的硬件地址)
      • 1.2.1 对⽐理解MAC地址和IP地址
    • 1.3 认识MTU
    • 1.4 MTU对IP协议的影响
    • 1. 5 MTU对UDP协议的影响
    • 1.6 MTU对于TCP协议的影响
    • 1.7ARP协议


1.数据链路层


1.1 认识以太⽹

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

例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等;

以太⽹是当前应⽤最⼴泛的局域⽹技术; 和以太⽹并列的还有令牌环⽹, ⽆线LAN等;

以太⽹帧格式:

在这里插入图片描述

  1. 源地址和目的地址

源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的;

  1. 帧协议类型

字段有三种值,分别对应IP、ARP、RARP;

  1. 帧末尾是CRC校验码。

1.2 MAC地址(⽹卡的硬件地址)

  1. MAC地址⽤来识别数据链路层中相连的节点,比如说,路由器和路由器间的地址。
  2. ⻓度为48位, 及6个字节. ⼀般⽤16进制数字加上冒号的形式来表⽰(例如: 08:00:27:03:fb:19)
  3. 在⽹卡出⼚时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些⽹卡⽀持⽤⼾配置mac地址)

1.2.1 对⽐理解MAC地址和IP地址

IP地址描述的是路途总体的起点和终点。

MAC地址描述的是路途上的每⼀个区间的起点和终点;

举个例子:
在这里插入图片描述


1.3 认识MTU

MTU相当于发快递时对包裹尺⼨的限制. 这个限制是不同的数据链路对应的物理层, 产⽣的限制.

  1. 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填充位;

  2. 最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;

  3. 如果⼀个数据包从以太⽹路由到拨号链路上,数据包⻓度⼤于拨号链路的MTU了,则需要对数据包进⾏分⽚(fragmentation);

  4. 不同的数据链路层标准的MTU是不同的;

1.4 MTU对IP协议的影响

由于数据链路层MTU的限制, 对于较⼤的IP数据包要进⾏分包.

我们回顾一下IP协议:

  1. 将较⼤的IP包分成多个⼩包, 并给每个⼩包打上标签,
  2. 每个⼩包IP协议头的 16位标识(id) 都是相同的;
  3. 每个⼩包的IP协议头的3位标志字段中, 第2位置为0, 表⽰允许分⽚, 第3位来表⽰结束标记(当前是否是最后⼀个⼩包, 是的话置为1, 否则置为0)
  4. 到达对端时再将这些⼩包, 会按顺序重组, 拼装到⼀起返回给传输层;
  5. ⼀旦这些⼩包中任意⼀个⼩包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;
    在这里插入图片描述
    在这里插入图片描述

1. 5 MTU对UDP协议的影响

由于数据链路层MTU的限制, 对于较⼤的IP数据包要进⾏分包.

让我们回顾⼀下UDP协议:

  1. ⼀旦UDP携带的数据超过1472(1500 - 20(IP⾸部) - 8(UDP⾸部)), 那么就会在⽹络层分成多个IP数据报.
  2. 这多个IP数据报有任意⼀个丢失, 都会引起接收端⽹络层重组失败. 那么这就意味着, 如果UDP数据报在⽹络层被分⽚, 整个数据被丢失的概率就⼤⼤增加了.

1.6 MTU对于TCP协议的影响

让我们再回顾⼀下TCP协议

  1. TCP的⼀个数据报也不能⽆限⼤, 还是受制于MTU. TCP的单个数据报的最⼤消息⻓度, 称为MSS(Max Segment Size);
  2. TCP在建⽴连接的过程中, 通信双⽅会进⾏MSS协商.
  3. 最理想的情况下, MSS的值正好是在IP不会被分⽚处理的最⼤⻓度(这个⻓度仍然是受制于数据链路层的MTU).
  4. 双⽅在发送SYN的时候会在TCP头部写⼊⾃⼰能⽀持的MSS值.
  5. 然后双⽅得知对⽅的MSS值之后, 选择较⼩的作为最终MSS.
  6. MSS的值就是在TCP⾸部的40字节变⻓选项中(kind=2);

1.7ARP协议

ARP协议的作⽤:
ARP(Address Resolution Protocol,地址解析协议)的作用是将网络层的IP地址解析为数据链路层的物理地址(MAC地址)。

在以太网等局域网中,设备之间直接通信需要使用MAC地址,而不是IP地址。因此,当一个设备想要向另一个设备发送数据时,它首先需要知道目标设备的MAC地址。

ARP协议建⽴了主机 IP地址 和 MAC地址 的映射关系;
在这里插入图片描述
ARP协议的工作流程

  1. 请求:当一个设备(比如主机A)想要与同一局域网内的另一台设备(比如主机B)通信,并且只知道主机B的IP地址而不知道其MAC地址时,主机A会广播一个ARP请求报文到整个局域网。这个请求包含主机A自己的IP地址和MAC地址,以及目标主机B的IP地址。

  2. 响应:所有接收到该ARP请求的设备都会检查报文中提到的目标IP地址是否与自己匹配。只有主机B发现目标IP地址是自己的,它才会响应这个请求。主机B会发送一个ARP响应报文给主机A,其中包含了主机B的MAC地址。

  3. 缓存:一旦主机A收到了主机B的ARP响应,它就会把主机B的IP地址与MAC地址之间的对应关系记录在一个叫做ARP缓存表的地方。这样,在一段时间内,如果主机A再次需要与主机B通信,它可以直接从ARP缓存中查找对应的MAC地址,而不需要重新发起ARP请求。

  4. 通信:有了目标设备的MAC地址后,主机A就可以使用该MAC地址来封装数据帧,并通过以太网等物理网络将其发送给主机B。

好了数据链路层的理解就到在这里,感谢观看。

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

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

相关文章

隨筆 20241025 Kafka数据一致性的韭菜比喻

在Kafka中,数据一致性是通过Leader和Follower副本之间的协调来实现的。为了更容易理解这个复杂的概念,我们可以用韭菜作为比喻。 韭菜的角色 Leader韭菜:代表数据的主导者,它负责更新和维护最新的数据。Follower韭菜&#xff1a…

CNAS软件测试的好处有哪些?上海软件测试中心推荐

在进行软件测试或其他项目检测需要选择软件测试中心时,我们常常会把该公司有无资质认证考虑进去。那么CNAS认可作为检测机构或实验室的一项重要资质认证,我们可能会产生疑问:CNAS认可什么意思?CNAS软件测试又有什么好处呢? 1、CNAS认可是什…

vivo 轩辕文件系统:AI 计算平台存储性能优化实践

在早期阶段,vivo AI 计算平台使用 GlusterFS 作为底层存储基座。随着数据规模的扩大和多种业务场景的接入,开始出现性能、维护等问题。为此,vivo 转而采用了自研的轩辕文件系统,该系统是基于 JuiceFS 开源版本开发的一款分布式文件…

满足抖音视频剪辑内容要求的四款剪辑工具!!!

抖音作为短视频的主流平台,吸引了大量用户参与视频创作,视频剪辑需求也不断扩大,而市面上功能各异的视频剪辑工具也为创作者提供了丰富的选择。无论是个人分享、品牌宣传还是娱乐内容,剪辑已成为内容制作的关键。以下四款视频剪辑…

类和对象—上

目录 一、面向过程和面向对象初步认识 1.面向过程介绍 2.面向对象 二、类的引入 1.可以利用关键字struct来定义类的原因 1.1.C可以使用struct来定义类的原因是 2.利用关键字struct定义类及访问类成员的案例 3.使用关键字struct定义结构体、定义类的区别 3.1.C语言的结…

掌握机器学习中的偏差与方差:模型性能的关键

引言 在机器学习中,偏差(Bias)和方差(Variance)是两个至关重要的概念,它们共同影响了模型的性能。理解偏差与方差的本质,能够帮助我们找到模型的平衡点,提高模型的泛化能力&#xf…

简记Vue3(二)—— computed、watch、watchEffect

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

C#从零开始学习(用户界面)(unity Lab4)

这是书本中第四个unity Lab 在这次实验中,将学习如何搭建一个开始界面 分数系统 点击球,会增加分数 public void ClickOnBall(){Score;}在OneBallBehaviour类添加下列方法 void OnMouseDown(){GameController controller Camera.main.GetComponent<GameController>();…

Bug | 项目中数据库查询问题

问题描述 理论上&#xff0c;点击查询后&#xff0c;表头应当显示中文。而不是上面的在数据库中的表头【如上图示】 正常点击查询后&#xff0c;如果没有输入值&#xff0c;应当是查询所有的信息。 原因分析&#xff1a; 这里是直接使用SELECT * 导致的。例如&#xff1a; S…

Spring Task—定时任务

Spring Task 是 Spring 提供的一种轻量级定时任务调度功能&#xff0c;内置在 Spring 框架中。与 Quartz 等重量级调度框架相比&#xff0c;Spring Task 使用简便&#xff0c;无需额外依赖&#xff0c;适合在简单的调度任务场景中使用。通过注解配置方式&#xff0c;开发者可以…

学习虚幻C++开发日志——基础案例(持续更新中)

官方文档&#xff1a;虚幻引擎C编程教程 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 1.物体上下起伏并旋转 1.1第一种写法 创建一个继承于Actor的类&#xff0c;并为新的Actor命名为FloatingActor&#xff0c;然后点击Create Class 重新…

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知&#xff0c;前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护&#xff0c;这里提供我的规范&#xff0c…

主动元数据平台在企业建设 DataOps 体系中的“角色”

2018 年&#xff0c;Gartner 将 DataOps 纳入到数据管理技术的成熟度曲线之中。Gartner 认为&#xff0c;DataOps 是一种协作式数据管理实践&#xff0c;改善整个组织内数据管理者和使用者之间数据流的沟通、集成和自动化&#xff0c;通过对数据、数据模型和相关工序创建可预测…

Docker搭建基于Nextcloud的个人云盘/私有云盘/个人相册/家庭NAS

安装配置Docker 官方安装文档&#xff1a;https://docs.docker.com/engine/install/ Docker常用命令&#xff1a;https://blog.csdn.net/qq_43003203/article/details/139532097?spm1001.2014.3001.5502 Docker镜像仓库配置方法和国内常用镜像仓库地址&#xff1a; 输入&a…

安卓早期apk兼容性适配之内存读写

许多早期开发的apk放到现在的高版本安卓系统上使用就会出现报错&#xff0c;今天给大家带来的是内存读写权限适配教程。 工具 mt/np管理器 早期apk dex注入器&#xff08;自行下载&#xff09; 教程 使用mt查看apk打开AndroidManifest.xml表单 在权限上添加 <!-- 读取您共享…

C++ | Leetcode C++题解之 第508题出现次数最多的子树元素和

题目&#xff1a; 题解&#xff1a; class Solution {unordered_map<int, int> cnt;int maxCnt 0;int dfs(TreeNode *node) {if (node nullptr) {return 0;}int sum node->val dfs(node->left) dfs(node->right);maxCnt max(maxCnt, cnt[sum]);return su…

三维管线管网建模工具MagicPipe3D V3.5.3

经纬管网建模系统MagicPipe3D&#xff0c;本地离线参数化构建地下管网三维模型&#xff08;包括管道、接头、附属设施等&#xff09;&#xff0c;输出标准3DTiles、Obj模型等格式&#xff0c;支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…

【数据结构和算法】三、动态规划原理讲解与实战演练

目录 1、什么是动态规划&#xff1f; 2、动态规划实战演练 2.1 力扣题之爬楼梯问题 &#xff08;1&#xff09;解题思路1: &#xff08;2&#xff09;解题思路2: &#xff08;3&#xff09;动态规划&#xff08;DP&#xff09;&#xff1a;解题思路 &#xff08;4&#x…

PHP免杀详细讲解PHP免杀详细讲解

基础学习 可变参数 $_GET $_POST $_COOKIE $_REQUEST $_SERVER 其中的某些参数可控,如REQUESTMETHOD,QUERYSTRING,HTTPUSERAGENT等 session_id() 这个比较特殊,但是依然可以利用 $_FILE $GLOBALS getallheaders() get_defined_vars() get_defined_functions() fil…

练习LabVIEW第二十五题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十五题&#xff1a; 用顺序结构实现数值匹配&#xff1a;输入1-100之间的任意1个整数&#xff0c;然后系统随机产生1-…