【网络原理】数据链路层
目录
一. 以太网
二. 以太网数据帧
三. MAC地址
四. MTU
五. ARP协议
六. DNS
一. 以太网
以太网是一种基于有线或无线介质的计算机网络技术,定义了物理层和数据链路层的协议,用于在局域网中传输数据帧。
二. 以太网数据帧
1)目标地址
接收方的MAC地址(6个字节)
2)源地址
发送方的MAC地址(6个字节)
3)类型
现在常用的类型是DIX标准,用于标识上层协议
- IPv4:
0x0800
- ARP:
0x0806
- IPv6:
0x86DD
RARP:Ox8035
可以直接支持多种上层协议,无需额外封装。
4)数据
数据大小的范围:46~1500字节
- 最小46字节:若上层数据不足,需填充(Padding)至46字节,确保帧总长≥64字节。
- 最大1500字节:避免过长帧导致缓冲区溢出或延迟过高(称为最大传输单元MTU)。
5)校验(CRC)
循环冗余校验,判断传输的数据是否正确
三. MAC地址
MAC地址是数据链路层中用于唯一标识网络设备的物理地址,确保数据在同一局域网中准确传输到目标设备 ,类似于身份证号
- MAC地址通常使用16进制表示,字节之间使用—进行分割
- 从出厂的时候,就已经规定好了,不能进行修改,由于这种静态分配和不可变性,一般使用MAC地址作为机器唯一标识
- 全球唯一性:由IEEE统一分配,确保每个设备的MAC地址不重复
IP地址和MAC地址的区别
MAC地址的作用和IP地址类似,都是用于定位设备
MAC地址和IP地址是两个独立的地址体系
- IP地址侧重于全局的转发,从起到到终点整个转发的过程,通过路由表一直查询IP地址完成通信
- MAC地址侧重于局部的转发,两个相邻设备之间的通信
如果是公网传播,不涉及NAT机制,那么以太网数据帧的IP部分一直不回改变
但是每经过一个路由器或交换机,以太网帧头中的源MAC地址和目的MAC地址都会发生改变
四. MTU
MTU是网络通信中的一个关键参数,用于限制数据链路层可承载的网络层数据包的最大大小
在不进行分片的前提下。某一个网络接口可以传输的最大数据量,MTU对网络传输效率有显著的影响
较大的MTU可减少头部开销,提高吞吐量;较小的MTU可降低延迟,适合实时通信。
以太网数据帧对载荷部分,具有一定的要求,最小位46字节,最大是1500字节,46字节是因为ARP最小是46字节,1500字节(实际不到)是硬件设备的限制
MTU对IP协议的影响(分包)
若IP数据包大小超过路径MTU,路由器会分片(Fragmentation),接收端再重组。
注意:如果出现了小包的丢失,就会导致整个的重组失败,但是IP层不会负责重发
MTU对UDP协议的影响
UDP数据报如果携带的数据超过了1472字节(1500-20(IP首部)-8(UDP首部)),那么就会把这个数据在网络层分成多个IP数据包进行传输,如果小包丢失了,数据重组失败,但是IP层不会重发,就会导致整个数据丢包的概率增加
MTU对TCP协议的影响
这里要介绍一个新的概念:MSS
MSS:TCP协议中一次可传输的最大应用层数据量(不含TCP和IP头部)
TCP相对于UDP而言,会在建立连接的时候,进行MSS协商,在建立连接的时候,客户端发送SYN请求报文的时候,会携带MSS值,服务器会根据收到的MSS值和本端的MTU值,取其中的最小值,告知给客户端,客户端返回ACK中确认协商后的MSS值,这就是MSS协商
如果应用层的数据超过了MSS值,会在传输层进行分段,每个段的大小不会超过MSS值
由于网络传输的复杂性,这个MSS并不是一味不变,会动态调整MSS以适配路径最小MTU。
在数据链路层中,不止存在以太网协议,还存在其他协议,协议不同,MTU也是不同的
五. ARP协议
ARP协议建立了主机IP地址和MAC地址的映射关系
目的主机硬件地址的重要性
- 在网络通信中,源主机知道目的主机的IP地址和端口号,但是不知道目的主机的硬件地址
- 如果不知道目的主机的硬件地址,数据到达不了网卡,也意味着上层协议无法收到数据
- 所有在通讯前必须要知道,目的主机的硬件地址
如何得知硬件地址?(ARP协议)
源主机发送ARP请求(广播发送),广播询问这个IP地址的硬件地址是什么?
目的主机收到这个请求之后,发现这个IP地址对应的是自己,那么就会将自己的主机硬件地址发送给源主机(ARP应答包)
每台主机都维护⼀个ARP缓存表,缓存表中的表项有过期时间(⼀般为20分 钟),如果20分钟内没有再次使⽤某个表项,则该表项失效,下次还要发ARP请求来获得⽬的主机的硬件地址
六. DNS
DNS也就域名解析系统,在网络通信中,使用IP地址来标识一个网络设备的位置,一串点分十进制的数字,是不好被记忆的,就使用一些可读性好的单词(域名),来标识一个IP地址
这种从域名到IP地址的解析过程,就是DNS
- 起初域名和服务器没有这么多,使用hosts文件进行管理,每次访问时,在hosts文件中,找到这个域名对应的IP地址,然后进行访问
- 随着域名和服务器越来越多,使用hosts文件进行管理,维护起来很麻烦,于是就使用一个专门的服务器提供这个域名解析的服务,主机每次访问一个服务器之前,都要先访问一下这个DNS服务器,进行域名解析操作,然后拿着IP地址,去访问
最开始的这些DNS服务器,也称为根域名服务器(数量有限),全世界同时有这么多人同时上网,根域名服务器肯定承载不住,于是各个国家的运营商,就根据根域名服务器,搭建出非常多的镜像DNS服务器,用户一般访问的时候,是访问附近的镜像DNS服务器
相关文章:

【网络原理】数据链路层
目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术,定义了物理层和数据链路层的协议,用于在局域网中传输数据帧。 二. 以太网数据帧 1)目标地址 …...

相或为K(位运算)蓝桥杯(JAVA)
这个题是相或为k,考察相或的性质,用俩个数举例子,011001和011101后面的数不管和哪个数相或都不可能变成前面的数,所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来,看最后能不能拼起来k如果能拼起来k那…...

AI汽车时代的全面赋能者:德赛西威全栈能力再升级
AI汽车未来智慧出行场景正在描绘出巨大的商业图景,德赛西威已经抢先入局。 在2025年上海车展开幕前夕,德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”,并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…...
Python函数:从基础到进阶的完整指南
在Python编程中,函数是构建高效、可维护代码的核心工具。无论是开发Web应用、数据分析还是人工智能模型,函数都能将复杂逻辑模块化,提升代码复用率与团队协作效率。本文将从函数基础语法出发,深入探讨参数传递机制、高阶特性及最佳实践,助你掌握这一编程基石。 一、函数基…...

学习Python的第四天之网络爬虫
30岁程序员学习Python的第四天之网络爬虫的Scrapy库 Scrapy库的基本信息 Scrapy库的安装 在windows系统中通过管理员权限打开cmd。运行pip install scrapy即可安装。 通过命令scrapy -h可查看scrapy库是否安装成功. Scrapy库的基础信息 scrapy库是一种爬虫框架库 爬虫框…...

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming
76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件,提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计,支持多厂商PLC硬件,具有直观的界面和丰富的功能。 功能特点 多语…...
数据指标和数据标签
数据指标和数据标签是数据管理与分析中的两个重要概念,它们在用途、形式和应用场景上有显著区别。以下是两者的详细对比: 1. 核心定义 维度数据指标(Data Metrics)数据标签(Data Tags/Labels)定义量化衡量…...

linux中常用的命令(三)
目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名](切换文件夹) 4- touch [文件名] (如果文件不存在,新建文件) 5- mkdir[目录名] (创建目录) 6-rm[文件名]&…...

Java 中 AQS 的实现原理
AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 由类图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素࿰…...

『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
ubuntu解决matplotlit中文乱码的问题! 文章目录 simhei.ttf字体下载链接:http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…...
docker compose ps 命令
docker compose ps 命令用于列出与 Docker Compose 项目相关的容器及其状态。 docker compose ps 能显示当前项目中所有服务容器的运行状态、端口映射等信息。 语法 docker compose ps [OPTIONS] [SERVICE…] SERVICE(可选):指定要查看状态…...
redis数据结构-04 (HINCRBY、HDEL、HKEYS、HVALS)
哈希操作:HINCRBY、HDEL、HKEYS、HVALS Redis 中的哈希功能极其丰富,让您能够以类似于编程语言中对象的方式存储和检索数据。本课将深入探讨具体的哈希操作,这些操作为操作以下结构中的数据提供了强大的工具: HINCRBY 、 HDEL 、…...

鸿蒙知识总结
判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…...
Ubuntu 22虚拟机【网络故障】快速解决指南
Ubuntu22虚拟机突然无法连接网络了,以下是故障排除步骤记录。 Ubuntu 22虚拟机网络故障快速解决指南 当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达 和 ping: www.baidu.com: 域名解析出现暂时性错误的报错时,通常意味着虚拟机无法…...

C++23 新特性:深入解析 std::views::join_with(P2441R2)
文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进,我们迎来了许多令人兴奋的新特性,其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器,…...
购物车构件示例
通用购物车构件设计 注:代码仅用于演示原理,不可用于生产环境。 一、设计目标 设计一个高度可复用的购物车构件,具备以下特点: 与具体业务系统解耦支持多种应用场景(商城、积分系统等)提供标准化接口易于集成和扩展二、核心架构设计 1. 分层架构 ┌─────────…...

数据可视化大屏——智慧社区内网比对平台
综述分析: 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面,采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成,使用了多种图表可视化技术…...
详解SLAM中的李群和李代数(中)
1 概述 在上一篇文章《详解SLAM中的李群和李代数(上)》中,我们已经通过对李群求导引出了李代数。在这篇文章中,我们就系统总结一下李代数的相关知识。 2 李代数 2.1 定义 李代数是一个向量空间 g \mathfrak{g} g与一个二元运算…...

Jenkins企业级实战
目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包(JDK) Jenkins是基于Java的应用程序,因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…...

uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)
1、概述 已经通过好几个篇幅来说明商家信息,包括logo、商家名称,地址,电话以及商家简介。通过表单组件和标签,以及我们的文件上传标签,都做了说明。(logo上传,用的文件上传组件是上传到公共的数…...

MySQL 索引设计宝典:原理、原则与实战案例深度解析
目录 前言第一章:索引设计的基础原则 (知其然,更要知其所以然)第二章:实战案例:电商订单系统的索引设计第三章:索引设计的实践流程总结结语 🌟我的其他文章也讲解的比较有趣😁,如果喜…...

C#上传文件到腾讯云的COS
测试环境: vs2022 .net 6控制台应用程序 测试步骤如下: 1 添加子用户,目前是为了拿到secretId和secretKey,打开添加子用户界面链接:https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…...
java的Stream流处理
Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…...

C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理
目录 1.动态内存分配 1.1 malloc 函数 1.2 calloc 函数 1.3 realloc 函数 1.4 free 函数 1.5常见错误 1.6综合例题 2.C语言的内存结构 3.存储类别 3.1作用域(Scope) 3.2链接(Linkage) 3.3存储期(Storage Du…...

作业...
基础配置 RI R2 R3 R4 R5 例如R1 BGP配置 1,R1和R2之间使用直连接口IP地址来建立EBGP对等体关系 2、R2、R3、R4之间配置OSPF协议,保证各设备之间的网络互通,且通过重发布的方式发布路由 查看R2、R3、R4的OSPF路由表: \ R2、R3、R4使用环…...

IC ATE集成电路测试学习——电流测试的原理和方法
电流测试 我们可以通过电流来判断芯片的工作状态时,首先先了解下芯片的电流是如何产生的。 静态电流 理论上,CMOS结构的芯片静态时几乎不耗电 CMOS基本结构:Pmos Nmos 串联当逻辑电平稳定时: ➜ 要么Pmos导通,Nmo…...
redis数据结构-03 (HMSET、HGET、HGETALL)
Redis 哈希介绍:HMSET、HGET、HGETALL Redis 哈希是一种强大的数据结构,允许您在单个键内存储字段值对的集合。它们对于表示对象、配置或任何可以自然分组到字段中的数据非常有用。本课将向您介绍使用 Redis 哈希的基本命令: HMSET 、 HGET …...
2025年01月09日德美医疗前端面试
目录 vue2 的双向绑定的原理vue3 的双向绑定原理vue 的生命周期vue 子组件为何不能修改父组件的值js delete 删除数组的某一个值会怎么样vue 和 react 的 diff 算法什么是闭包原型链this指向 vue2 的双向绑定的原理 以下是 Vue 2 双向绑定的原理: 1. 核心概念 …...

快速理解动态代理
什么是动态代理(Java核心技术卷1的解释) 动态代理是一种运行时生成代理对象的技术,其本质是通过字节码增强在不修改原始类代码的前提下,动态拦截并扩展目标对象的行为。它通过代理对象对原始方法的调用进行拦截,并在方法执行前后注入自定义逻…...
实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API
实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API 理论千遍,不如动手一遍!在前面几篇文章中,我们了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。现在,是时候把这些知识运用起来,亲手构建一个简单但完整的 Serverless 应用了。 …...