【网络原理】数据链路层

news2025/5/14 9:06:55

目录

一. 以太网

二. 以太网数据帧

三. 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服务器

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

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

相关文章

相或为K(位运算)蓝桥杯(JAVA)

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

AI汽车时代的全面赋能者:德赛西威全栈能力再升级

AI汽车未来智慧出行场景正在描绘出巨大的商业图景,德赛西威已经抢先入局。 在2025年上海车展开幕前夕,德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”,并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…

学习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硬件,具有直观的界面和丰富的功能。 功能特点 多语…

linux中常用的命令(三)

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

Java 中 AQS 的实现原理

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

『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…

鸿蒙知识总结

判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…

C++23 新特性:深入解析 std::views::join_with(P2441R2)

文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进,我们迎来了许多令人兴奋的新特性,其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器&#xff0c…

数据可视化大屏——智慧社区内网比对平台

综述分析: 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面,采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成,使用了多种图表可视化技术…

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…

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…

快速理解动态代理

什么是动态代理(Java核心技术卷1的解释) 动态代理是一种运行时生成代理对象的技术,其本质是通过字节码增强在不修改原始类代码的前提下,动态拦截并扩展目标对象的行为。它通过代理对象对原始方法的调用进行拦截,并在方法执行前后注入自定义逻…

AugmentCode 非常昂贵的新定价

AugmentCode 现在的价格比 Cursor 和 Windsurf 的总和还要贵。 AugmentCode 曾是我开发工作流程的常用工具。出乎意料的是,他们改变了定价结构,让开发者们震惊不已。 原来的30 美元月费已经增长为50 美元月费,这是一个67%的增长。 改变我看法的不仅仅是价格上涨,还有他…

前端面试2

1. 面试准备 1. 建立自己的知识体系 思维导图ProcessOn框架Vue elementUI自查 https://zh.javascript.info/ 借鉴 https://juejin.cn/post/6844904103504527374http://conardli.top/blog/article/https://github.com/mqyqingfeng/Bloghttp://47.98.159.95/my_blog/#html 2.技能…