网站制作公司商丘市/百度集团股份有限公司
目录
一. 数据链路层概述
二. 以太网
2.1 以太网的概念
2.2 以太网数据帧
2.3 对于MAC地址的认识
2.4 数据碰撞问题
三. MTU和MSS
3.1 什么是MTU
3.2 MTU对UDP的影响
3.3 MTU对TCP的影响(MSS的概念)
四. ARP协议
4.1 ARP协议的作用
4.2 ARP数据报
4.3 ARP协议工作流程
五. 总结
一. 数据链路层概述
数据链路层在是计算机网络通信中,TCP/IP五层模型的倒数第二层,TCP/IP五层模型从上层到下层分别为:应用层、传输层、网络层、数据链路层和物理层。
数据链路层的基本功能为:负责设备之间数据帧的交换和识别,进行数据帧同步、冲突检测、数据校验等工作,遵循以太网、令牌环网、无线LAN等标准。工作在数据链路层的典型设备是交换机。数据链路层通过交换报文,实现将数据发送和接收到特定得网络设备中去。

二. 以太网
2.1 以太网的概念
- 以太网不是一种具体的网络,而是一种技术标准,涉及数据链路层和物理层。其规定了网络拓扑结构、访问方式和传输速率等。
- 以太网必须用到双绞线,也就是我们常说的网线。
- 以太网是应用最广泛的网络标准,与之并列的还有令牌环网、无线LAN等。
2.2 以太网数据帧
以太网数据帧包含三部分内容:报头、有效数据、CRC校验码。其中数据是指的网络层封装的IP报文数据(IP报头+数据),而以太网帧报头中的源地址和目的地址是数据链路层的MAC地址(以太网地址),这是个6字节数据,区别于4字节IP地址。
- 以太网数据帧报头位14bytes定长报头,进行解包时,直接拿掉头部的14bytes即可。
- 报头中的目的地址和源地址为MAC地址,用于在数据链路层标识主机的唯一性,与网络层的IP地址并不相同。这样做的目的,是为了在数据链路层和网络层实现解耦。
- 两位类型有3种:0800表示IP数据、0806表示ARP请求或应答、0835表示RARP请求或应答。

2.3 对于MAC地址的认识
IP地址用于在网络中表示主机的唯一性,MAC地址用于在数据链路层标识网络设备的唯一性。
如图2.2所示,假设在局域网中有 主机A ~ 主机E,假设主机A要给主机D发送数据,那么主机A会将数据封装好以太网帧报头后,放到当前所处的局域网中,当前局域网中的主机A~E都可以看到刚才主机A发送的数据。
当主机从网络中接收到一个MAC帧报文时,会从报头中提取出目的MAC地址,并在数据链路层与自身的MAC地址进行比较,如果相同就向网络层交付,不同就直接丢弃。以图2.2为例,假设 主机A~主机E 的MAC地址为 MAC_A ~ MAC_E ,那么主机A向主机E发送数据时,以太网帧报头中的源地址和目的地址分别为MAC_A和MAC_D,这样虽然主机B、C、D能够看到数据帧,但是对比MAC地址不匹配后直接丢弃数据。

2.4 数据碰撞问题
在同一个局域网中,如果两台主机同时发送数据,那么它们发送的数据可能会在局域网中发生碰撞,而如果数据之间发生了碰撞,那么数据就无效了,需要被丢弃重发。发送数据的主机是能够识别到碰撞的,如果识别到了碰撞,就要执行碰撞避免算法。
- 碰撞避免算法:发送数据的主机休眠随机时间后重发数据。
一个局域网中,如果主机数量过多,那么有两台主机同时发送数据的可能性就会大大增加,这样会导致发送数据碰撞、重新发送数据的可能性大增,从而导致网络拥塞。
为了让一个局域网中能够容纳更多的主机,并且能够保证网络不过度拥塞,交换机作为一种将局域网划分为多个子网的设备,被引入进来。
如图2.3所示,交换机将路由器组成的局域网划分为两个子网,其中主机A、B、C位于一个子网,主机D、E位于另一个子网,假设主机A要给主机D发送数据,同时主机B也向局域网中发送了数据,那么数据就会在AB所在的子网内生碰撞,交换机能够检查出碰撞,就不会将数据再向主机D、E发送了,这样就大大降低了数据发生碰撞所带来的影响。
如图2.4所示,假设主机A要给主机C发送数据,这就相当于是局域网内部通信,当交换机发现数据已经被主机C读走了,就不会继续向主机D、E发送了,这样就有效降低了局域网的负载。


三. MTU和MSS
3.1 什么是MTU
MTU就是数据链路层单次传输数据大小的限制,这是由数据链路层的硬件条件所限制的。不同的数据链路层,MTU的大小不同,在以太网中,MTU大小为1500bytes。
MTU数据数据链路层,如果上层的IP报文过大,那么就需要进行分片,这样数据链路层才可以对报文进行转发。如果IP报文太小(小于46bytes),那么就需要对报文进行填充,这样才可以转发。

对于MTU,我们有以下几点理解:
- 在以太网中,MTU为1500bytes,以太网一次可以发送的报文数据大小位于46bytes~1500bytes之间,对于ARP和PARP报文,由于其长度不足46bytes,因此要进行填充。
- 如果网络层IP报文过长(超过MTU),那么就要对IP报文进行分片处理,但这会大大增加丢包的概率,因此分片是一种不推荐的行为。
- 在不同的数据链路层中,MTU的长度是不同的。
3.2 MTU对UDP的影响
MTU的大小会限制单条报文最大的长度,UDP协议全程用户数据报协议,面向数据报,一条报文不能被拆分为多个,即:发送与接收是一一对应的。
UDP协议没有可靠性保证机制,如果数据在网络传输的过程中发生了丢包,那么对端主机就永远不会接收到这条报文了。那么,如果一个UDP报文携带了太多的数据(超过1472bytes:1500 - 20字节IP报头 + 8字节UDP报头),那么这条UDP报文中的数据就要在网络层被分片,这样就增加了丢包的概率,从而进一步降低UDP协议的可靠性。因此,使用UDP协议进行数据传输时,要额外注意控制单条报文的大小,尽可能的避免分片情况。
3.3 MTU对TCP的影响(MSS的概念)
- 单个TCP报文可以传输的有效数据大小受制于MTU,而TCP报文中能够传输的有效数据的最大值称为MSS,我们可以认为:MSS = MTU - IP报头长度 - TCP报头长度。
- 在通信双方三次握手建立链接时,通信双方会协商MSS,会取通信双方设备中较小的MSS为通信所使用的MSS,MSS会被写入到TCP报头中,位于TCP报头的选项字段中。
- 最理想情况下,MSS是IP报文不会被分片的、TCP报文中可以携带有效数据的最大长度。

通过ifconfig指令,可以查看当前设备的MAC地址和MTU(见图3.3)。

四. ARP协议
4.1 ARP协议的作用
当我们希望与另一台主机进行通信时,我们可以知道对端的IP地址,但是难以得知其MAC地址,ARP请求/响应,就是用于获取并缓存目的主机的MAC地址的。
ARP协议,可用于在主机内部建立IP地址与MAC地址的映射关系。当主机ARP请求/应答获取某台主机的MAC地址后,会缓存 IP地址<->MAC地址 的映射关系,并维持一段时间,之后一段时间再向这台主机发送消息就不用ARP获取MAC地址了。
- 指令arp -a:获取当前主机内部缓存的IP和MAC地址之间的映射关系。

4.2 ARP数据报
在ARP应答/请求报文格式如图4.2所示,其中每部分的含义为:
报头:
- 源MAC地址:发送报文的主机MAC地址。
- 目的MAC地址:接收报文的主机MAC地址(ARP请求填FF...FFF,表示广播地址)。
- 帧类型:该MAC帧携带的数据时IP报文、ARP请求或ARPA请求。
数据:
- 硬件类型:指数据链路层网络类型,表明是以太网、令牌环网还是无线WAN,1表示以太网。
- 协议类型:指明要转换的类型,一般设置为0x0800表示IP地址。
- 硬件地址长度:一般为MAC地址的长度,填6字节。
- 协议地址长度:一般为IP地址的长度,填4字节。
- op:操作方式,1表示ARP请求,2表示ARP应答。

4.3 ARP协议工作流程
在两台主机正式进行通信之前,发送数据的主机,要通过ARP请求,获取目的主机的MAC地址,并缓存目的主机的IP地址和MAC地址之间的映射关系:
- 发送端主机向局域网中发送ARP请求,其中目的MAC地址填写FF...FFF表示广播地址,目的IP地址就是接收数据的主机的IP地址。
- 由于目的MAC地址是广播地址,所有的主机都会收到ARP请求报文并向上交付到ARP层,对比目的IP和当前主机的IP,如果不匹配,那么就直接丢弃报文,如果匹配,那就向局域网中发送ARP响应报文。
- ARP请求报文中会携带发送端主机的MAC地址,因此接收端主机在发送ARP响应报文的时候,会将目的MAC地址填写为发送端主机的MAC地址,这样发送端主机在收到响应报文后,就可以得知目的主机的ARP地址。
- 发送端主机会将目的主机的 IP地址与MAC地址的映射关系缓存起来,以避免每次通信之前都进行ARP请求和响应,提高通信效率。

五. 总结
- 数据链路层,负责设备之间数据帧的交换和识别,进行数据帧同步、冲突检测、数据校验等工作,遵循以太网、令牌环网、无线LAN等标准。
- 以太网不是一种具体的网络,而是一种网络技术标准。
- MAC地址是在数据链路层用于标识主机唯一性的地址,区别于网络层的IP地址。
- 在局域网中如果有多台主机同时发送数据则有可能发生数据碰撞,通过交换机可以降低数据碰撞所带来的影响。
- MTU是数据链路层一次转发数据量的最大值,MSS是TCP协议在不被分片的情况下一次最多发送的数据量。UDP协议,不保证传输的可靠性,分片会大大提高丢包的概率。
- ARP协议是在两台主机正式通信之前,确定对端MAC地址的协议。
相关文章:

Linux网络编程:数据链路层
目录 一. 数据链路层概述 二. 以太网 2.1 以太网的概念 2.2 以太网数据帧 2.3 对于MAC地址的认识 2.4 数据碰撞问题 三. MTU和MSS 3.1 什么是MTU 3.2 MTU对UDP的影响 3.3 MTU对TCP的影响(MSS的概念) 四. ARP协议 4.1 ARP协议的作用 4.2 ARP数…...

python 线程 超时时间
python 线程 超时时间_mob649e815f0f18的技术博客_51CTO博客...

LeetCode:274. H 指数、275. H 指数 II(C++)
目录 274. H 指数 题目描述: 实现代码与解析: 排序暴力 275. H 指数 II 题目描述: 实现代码与解析: 二分 比较简单,不再写解析,注意二分的时候,r指针为n,含义为个数…...

多线程及锁
1.lock锁和synchronized锁的区别。 1:Synchronized 是Java的一个关键字,而Lock是java.util.concurrent.Locks 包下的一个接口; 2:Synchronized 使用过后,会自动释放锁,而Lock需要手动上锁、手动释放锁&am…...

C++ 写一个Data类的注意问题
Data类 声明和定义分离的一些问题 声明里面我们不带缺省参数,定义我们给缺省参数,如下面两段代码: Data.h#pragma once #include<iostream> using namespace std; class Data { public:Data(int year,int month,int day);private:in…...

postman做接口测试
之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看postman也可以玩…...

hdlbits系列verilog解答(always块)-29
文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 由于数字电路由用网线连接的逻辑门组成,因此任何电路都可以表示为模块和赋值语句的某种组合。然而,有时这不是描述电路的最方便方式。过程procedure(其中 always 的块就是一个示例)提供了描述电路的替代语法…...

uniapp实现瀑布流
首先我们要先了解什么是瀑布流: 瀑布流(Waterfall Flow)是一种常见的网页布局方式,也被称为瀑布式布局或砌砖式布局。它通常用于展示图片、博客文章、商品等多个不同大小和高度的元素。 瀑布流布局的特点是每个元素按照从上到下…...

15. 机器学习 - 支持向量机
Hi, 你好。我是茶桁。 逻辑回归预测心脏病 在本节课开始呢,我给大家一份逻辑回归的练习,利用下面这个数据集做了一次逻辑回归预测心脏病的练习。 本次练习的代码在「茶桁的AI秘籍」在Github上的代码库内,数据集的获取在文末。这样做是因为我…...

如何根据进程号查询服务的端口号
ps -ef | grep nacos ps -ef | grep nacos 命令是用于查找系统中所有包含 "nacos" 关键字的进程。这个命令的含义如下: ps: 这是一个用于显示当前正在运行的进程的命令。 -ef: 这两个选项一起使用,表示显示所有进程的详细信息。 -e 选项表示显…...

2.10、自定义量化优化过程
introduction 如何自定义量化优化过程,以及如何手动调用优化过程 code from typing import Callable, Iterableimport torch import torchvision from ppq import QuantizationSettingFactory, TargetPlatform from ppq.api import (ENABLE_CUDA_KERNEL, Quantiz…...

MySQL如何添加自定义函数
深入MySQL:学习如何添加自定义函数 MySQL 是一种流行的开源关系型数据库管理系统,它支持很多内置函数来完成各种操作。不过有时候这些内置函数无法满足我们的需求,这时候就需要自定义函数了。在 MySQL 中,可以通过编写自定义函数…...

超融合数据库:解锁全场景数据价值的钥匙
前言 近日,四维纵横对外官宣已完成上亿元 B 轮融资。作为超融合数据库理念的提出者,三年来 YMatrix 持续在超融合数据库领域中保持精进与迭代,对于超融合数据库在行业、场景中的应用和理解也更为深刻。 本篇文章,我们将基于 YMa…...

Pap.er for Mac:高清壁纸应用打造你的专属视觉盛宴
在浩瀚的互联网海洋中,你是否曾为寻找一张心仪的高清壁纸而烦恼?或者是在大量的壁纸应用中感到困扰,不知道哪一个能满足你的需求?今天,我要向你介绍的,是一款独特的5K高清壁纸应用——Pap.er for Mac。 Pa…...

AI:46-基于深度学习的垃圾邮件识别
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…...

【骑行贝丘渔场】一场与海的邂逅,一段难忘的旅程
在这个渐凉的秋日,我们校长骑行队一行人骑着自行车,从大观公园门口出发,开始了一段别开生面的海滩之旅。沿途穿越草海隧道湿地公园、迎海路、海埂公园西门(第二集合点)、宝丰湿地公园、斗南湿地公园、蓝光城࿰…...

消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)
前言 最近在学习消息中间件——RabbitMQ,打算把这个学习过程记录下来。此章主要介绍环境搭建。此次主要是单机搭建(条件有限),包括在Windows、Linux环境下的搭建,以及RabbitMQ的监控平台搭建。 环境准备 在搭建Rabb…...

Mysql 表读锁与表写锁
表读锁 加锁:lock table table_name read 释放锁:unlock tables 当事务一用表读锁锁住某张表后, 1.事务一必须释放表读锁才能访问其他表 2.期间事务2可以访问该表,但是修改事会遇到阻塞等待,只有等到事务一释放锁后…...

目标检测概述
1.是什么? 目标检测是计算机视觉领域的核心问题之一,其任务就是找出图像中所有感兴趣的目标,确定他们的类别和位置。由于各类不同物体有不同的外观,姿态,以及不同程度的遮挡,加上成像是光照等因素的干扰&a…...

10月31日星期二今日早报简报微语报早读
10月31日星期二,农历九月十七,早报微语早读分享。 1、广西官宣:做试管婴儿费用可报销; 2、港媒:4名港大学生承认“煽惑他人蓄意伤人罪”,被判监禁2年; 3、331名中国维和官兵全部获联合国勋章…...

【Linux】虚拟机项目部署与发布
目录 一、Linux部署单机项目 1.1 优缺点 1.2 将项目共享到虚拟机 1.3 解压后将war包放入tomcat 1.4 数据库导入脚本 1.5 Tomcat启动项目 二、部署前后端分离项目 2.1 准备工作 2.2 部署SPA项目 2.2.1 nginx反向代理 2.2.2 SPA项目宿主机访问 一、Linux部署单机项目…...

边缘计算技术的崭新篇章:赋能未来智能系统
边缘计算是近年来云计算和物联网技术发展的重要趋势。通过将数据处理和分析从云端迁移到设备边缘,边缘计算能够实现更低的延迟和更高的数据安全。本文将探索边缘计算技术的最新进展及其在不同行业中的应用场景。 1. 实时数据处理与决策 在需要快速响应的场景中&…...

Mac/Linux类虚拟机_CrossOver虚拟机CrossOver 23.6正式发布2024全新功能解析
CodeWeivers 公司于今年 10 月发布了 CrossOver 23.6 测试版,重点添加了对 DirectX 12 支持,从而在 Mac 上更好地模拟运行 Windows 游戏。 该公司今天发布新闻稿,表示正式发布 CrossOver 23 稳定版,在诸多新增功能中,最…...

RabbitMQ 运维 扩展
1、集群管理与配置 1.1、集群搭建 关于Rabbitmq 集群的搭建,详见以下文章。简单说来就是将多个单机rabbitmq服务,通过给到一致的密钥(.erlang.cookie)并且开放rabbitmq服务的 25672 端口,允许多节点间进行互相通讯&am…...

[量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图
在前面两个笔记: PythonTDengine从零开始搭建量化分析平台-数据存储 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 中有提到使用 Grafana 画图,不过画的都是均线。除了均线,Grafana 非常人性的提供了 K线图模块 搭配 TDeng…...

前端接口请求支持内容缓存和过期时间
前端接口请求支持内容缓存和过期时间 支持用户自定义缓存时间,在规则时间内读取缓存内容,超出时间后重新请求接口 首先封装一下 axios,这一步可做可不做。但是在实际开发场景中都会对 axios 做二次封装,我们在二次封装的 axios …...

【计算机网络】数据链路层——以太网
文章目录 前言什么是以太网以太网帧格式6位目的地址和源地址2位类型数据长度CRC 校验和 数据在数据链路层是如何转发的 前言 前面我们学习了关于应用层——自定义协议、传输层——UDP、TCP协议、网络层——IP协议,今天我将为大家分享关于数据链路层——以太网方面的…...

【Spring】Spring MVC请求响应
文章目录 1. 请求1.1 传递单个参数1.2 传递多个参数1.3 传递对象1.4 后端参数重命名1.5 传递数组1.6 传递集合1.7 传递JSON对象1.8 获取URL中参数1.9 上传⽂件1.10 获得Cookie1.11 获得Session1.12 获得Header 2. 响应2.1 返回静态界面2.2 返回数据2.3 返回HTML代码片段2.4 返回…...

程序设计与算法(二)算法基础(北京大学MOOC)
一、枚举 1、完美立方 /* 完美立方a^3b^3c^3d^3// a大于b c d// b<c<d*/ #include <iostream> int main() {int a,b,c,d; int N 24;//scanf("%d", &N );for(a2; a<N; a ) //a的范围 [2,N]{for(b2; b<a; b){ //b的范围[2…...

【MedusaSTears】正则表达式搜索心得
文章目录 心得体会1.懒惰匹配最少字符 .?2.前瞻: 字符串后边 包括/不包括 某个单词/字母2-1.包含某单词: start(?.?hello)2-2.不包含某单词: start(?!.?hello) 心得体会 前情回顾: 【MedusaSTears】正则?不要太简单!—正则表达式个人学习心得总结: 正则说白了是对字符串…...