数据链路层及其重要协议——以太网

news2024/9/22 21:23:40

文章目录

  • 数据链路层
  • 前言
    • 1. 以太网协议
    • 2. MTU(传输的限制)
    • 3. ARP协议

数据链路层

前言

以太网: 不是一种具体的网络,而是一种技术标准。既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构,访问控制方式,传输速率等。以太网中的网线必须使用双绞线,传输速率有10M,100M,1000M等。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN等。

链路: 就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他交换结点。
数据链路: 是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
数据链路层: 主要功能就是用于两个设备(同一数据链路节点)之间进行信息传递,数据链路层以帧为单位传输和处理数据,具体介绍可以参考我的另一篇博客计算机网络模型、网络传输、封装分用的详细讲解

1. 以太网协议

以太网帧 : 目的MAC地址(6字节) + 源MAC地址(6字节) + 类型(2字节)+数据(来源于网络层)+ CRC校验
在这里插入图片描述

  1. 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。
  2. 帧协议类型字段标识网络层协议,有IP、ARP、RARP。
  3. 帧末尾是CRC校验码,校验数据链路层的数据帧是否出错。

注意: 相对于IPv4来说,MAC地址够用,并且是由网卡厂家出厂设定,不需要动态设置,每个设备的MAC地址是唯一的。目前,IP地址用于表示传输过程的起点和终点(不考虑NAT机制,一个IP数据报的源IP和目的IP是固定的),MAC地址用于表示传输过程中相邻两个节点之间的地址(一个以太网数据帧每次转发,源MAC地址和目的MAC地址都会改变。

2. MTU(传输的限制)

MTU 相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层产生的限制,取决于硬件设备。

  1. 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。
  2. 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。
  3. 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片。
  4. 不同的数据链路层标准的MTU是不同的。

MTU作为数据链路层传输的限制,同样影响着网络层传输层的协议,以下将详细介绍

MTU对于IP的影响:
由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。
6. 将较大的IP包分成多个小包,并给每个小包打上标签;
7. 每个小包IP协议头的 16位标识(id) 都是相同的;
8. 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记,是最后一个小包置为1,否则置为0;
9. 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;

注意 :一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据。

MTU对于UDP的影响:

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

MTU对于TCP的影响:

  1. TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size)。
  2. TCP在建立连接的过程中,通信双方会进行MSS协商。最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
  3. 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后,选择较小的作为最终MSS。MSS的值就是在TCP首部的40字节变长选项中。
  4. MSS:TCP中IP不分包的前提下,最多能搭载多少个载荷,MTU:取决于TCP和IP的报头。

3. ARP协议

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

ARP协议的作用:

ARP协议建立了主机IP地址和MAC地址的映射关系。

  1. 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。
  2. 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。
  3. 因此在通讯前必须获得目的主机的硬件地址,ARP就是通过IP地址得到MAC地址的一个方式。

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

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

相关文章

网络层——IP协议详细解读

文章目录 IP协议1. IP协议的报文格式2. IP协议的地址管理3. IP地址的组成4. IP协议的路由选择 IP协议 之前介绍了传输层的重点协议,TCP和UDP协议,以下将介绍网络层的重点协议IP协议。 1. IP协议的报文格式 IP地址 本质上是一个32位整数,在…

华为OD机试真题 Java 实现【不爱施肥的小布】【2023Q2】

一、题目描述 某农村主管理了一大片果园,fields[i]表示不同国林的面积,单位m2,现在要为所有的果林施肥且必须在n天之内完成,否则影响收成。小布是国林的工作人员,他每次选择一片果林进行施肥,且一片国林施…

【Linux初阶】环境变量 | 如何设置、获取环境变量?

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:讨论为什么指令作为一个可执行程序不需要加 ./运行;环境变量为什么会自己恢复;环境变量…

Acwing456. 车站分级

一条单向的铁路线上,依次有编号为 1, 2, …, n的 n 个火车站。 每个火车站都有一个级别,最低为 1 级。 现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 xx,则始发站、终点站之间…

【网络】-- 数据链路层

应用层(http、https): 数据的使用。传输层(UDP、TCP):网络通讯的细节,将数据可靠的从A主机跨网络送到B主机。网络层(IP):提供一种能力,将数据从A主…

Real-ESRGAN:Training Real-World Blind Super-Resolution with Pure Synthetic Data

https://github.com/NightmareAI/Real-ESRGAN/tree/masterhttps://github.com/NightmareAI/Real-ESRGAN/tree/master从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 - 知乎超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率…

设计模式MVC、MVP、MVVM

MVC、MVP和MVVM是什么? MVC:Model-View-Controller,是一种分层解偶的框架,Model层提供本地数据和网络请求,View层处理视图,Controller处理逻辑,存在问题是Controller层和View层的划分不明显&am…

SpringBoot+@Validate+全局异常拦截实现自定义规则参数校验(校验get请求参数不能为空且在指定枚举类型中)

场景 SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例: SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例_validated 怎么设置boolean类型非空_霸道流氓气质的博客-…

Elasticsearch02

目录 Elasticsearch02DSL查询文档查询所有全文检索查询精确查询地理查询复合查询 搜索结果处理排序分页高亮 DSL总结RestClient查询文档快速入门:match_all查询match查询精确查询布尔查询排序、分页高亮 实战案例HotelControllerIHotelServiceHotelMapperHotelHotelDocPageResu…

Google SEO优化的10大误区

以下是 Google SEO 优化的十大误区: 1、关键词堆砌: 过度使用关键词,使得内容不自然,难以阅读,同时也会被搜索引擎认为是垃圾信息,影响网站排名。 2、内容质量差: 质量差的内容会降低用户的体…

矩池云上配置FusionGan环境

1、租赁环境 2、vscode 连接 矩池云 教程:https://www.matpool.com/supports/doc-vscode-connect-matpool/ 3、进入mnt文件夹 cd ../mnt 4、克隆代码 git clone https://github.com/jiayi-ma/FusionGAN.git 如果克隆不下来,就自己下载,…

ESP32 DW1000 UWB 室内定位系统

相关软件代码下载》》 概述 在这个项目中,我们将制作一个基于 ESP32 DW1000 UWB 的室内定位系统。为此,我们将使用 2 个 UWB 锚点和 1 个 UWB 标签。当标签移动时,UWB 标签的实时位置可以使用Python 程序在PC 上以图形方式显示。 工业环境中的室内跟踪通常需要非常精确的…

C++引用的相关定义以及使用场景与指针之前的区别

一、引用的定义与特性 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 引用的特性: 引用在定义时必须初始化一个变量可以有多个引用引用一旦引用…

电脑技巧:宽带怎么设置教程笔记,看完你就会了

宽带的设置是指将计算机连接到互联网的过程。一般来说,宽带的设置是非常简单的,只需要按照提供商的要求,正确地连接硬件和软件就可以了。下面将详细介绍如何设置宽带。 硬件设置:首先,需要连接计算机和调制解调器&…

sharding-jdbc读写分离实战

一、读写分离介绍 Sharding-JDBC读写分离则是根据SQL语义的分析,将读操作和写操作分别路由至主库与从库。它提供透明化读写分离,让使用方尽量像使用一个数据库一样使用主从数据库集群。 为了实现Sharding-JDBC的读写分离,首先,要…

Leetcode2404. 出现最频繁的偶数元素

Every day a Leetcode 题目来源&#xff1a;2404. 出现最频繁的偶数元素 解法1&#xff1a;哈希 我们构建一个这样的哈希表 unordered_map<int, int> umap&#xff1a; key&#xff1a;偶数数组元素 nums[i]value&#xff1a;nums[i]的出现次数 count 我们遍历一次数…

算法之路--快速排序算法

由于冒泡算法算法之路--冒泡算法&#xff08;算法之路--冒泡算法&#xff09;每轮都要进行从头到落位之前的每个元素的比较&#xff0c;在执行效率上需要提升&#xff0c;快速排序算法就是对冒泡算法的一种效率上的提升。 算法思路 快速排序是基于冒泡的改进&#xff0c;所以基…

力扣回溯算法专题(二)- 切割 子集问题 131.分割回文串、93. 复原IP地址、78. 子集、90. 子集Ⅱ、491.递增子序列 思路 C++实现 总结

文章目录 切割问题子集问题回溯法模板与伪代码131. 分割回文串三要素及思路回文字符串判断代码 93. 复原IP地址三要素及思路验证子串是否合法代码 78. 子集三要素及思路代码 90. 子集Ⅱ三要素及思路三种去重方式代码 491.递增子序列三要素及思路去重方式及去重优化代码 总结1. …

Django框架004:orm对mysql的增删改查

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

TypeScript 配置简述

TypeScript 配置简述 初始化项目的过程为&#xff1a; 新建一个项目 这里使用 yarn init -y 去创建一个 node 项目&#xff0c;随后使用 yarn add typescript 下载 TS 的依赖 新建一个 ts 文件 console.log(test);随意 log 一点东西进行测试 使用 tsc 编译 ts 文件 ❯ yarn …