
- 🏠 博客主页:小谢同学的小破站
- ✍️ 本文由 小谢同学的小破站 原创,首发于 CSDN💻
- ☕ Java学习专栏:java
- 📗 MySQL专栏:MySQL
- 🧩 数据结构与算法:Java 数据结构与算法
- 🌐C语言专栏: C语言
- 👍 欢迎点赞👍 收藏⭐ 留言📝,发现错误欢迎指正!
- ✨ 脚踏实地,持续深耕,奔赴自己的目标✨
-- -- -- -- -- 💫分割线💫----------
标题
- [1. 认识数据链路层](#1. 认识数据链路层)
- [1.1 数据链路层的核心任务](#1.1 数据链路层的核心任务)
- [1.1.1 封装成帧](#1.1.1 封装成帧)
- [1.1.2 CRC差错检测](#1.1.2 CRC差错检测)
- [1.1.3 可靠传输机制](#1.1.3 可靠传输机制)
- [1.1 数据链路层的核心任务](#1.1 数据链路层的核心任务)
- [2. 认识以太网](#2. 认识以太网)
- [2.1 MAC地址](#2.1 MAC地址)
- [2.2 二层交换机工作原理](#2.2 二层交换机工作原理)
- [2.3 ARP协议](#2.3 ARP协议)
- [3. 高频面试题总结](#3. 高频面试题总结)
前言:
这里是小谢同学有关于数据链路层的学习记录,整理数据链路层相关知识。笔记用于自我复盘巩固,有错误欢迎大家指出,专栏还有 Java、网络、C 语言系列笔记欢迎翻阅.
1. 认识数据链路层
TCP/IP五层网络模型中,从上往下依次是:应用层 → 传输层 → 网络层 → 数据链路层 → 物理层。
- 网络层 :负责跨网络传输,找目标主机(依靠IP地址)。
- 数据链路层:负责同一个局域网内 ,把数据从一台主机送到另一台主机(主要是依靠MAC地址)。
例如:生活中的一个例子
- IP地址代表的是,详细的一个小区地址(xxx小区3栋xxx号),可以使用于跨市导航
- MAC地址代表的是,本小区里面住户的门牌号,只在当前小区内送货用。
1.1 数据链路层的核心任务
数据链路层主要的3大核心任务:封装成帧,CRC差错检测,可靠传输机制
以以太网结构为例子:

封装成帧
给网络层传下来的IP数据包,加上帧头、帧尾,组成「帧」 。
帧的作用: 物理层只能传输一串0/1比特流;数据链路层必须要划定边界,告诉设备:哪一段是一完整帧 。
封装完成之后就变成了
以太网数据帧,后续会交给物理层发送;
- 帧头中关键信息:
源MAC地址,目的MAC地址,这两者就相当于寄快递的寄件人与收件人通俗的话就是:寄快递,给快递包装起来,外层是纸盒子(
纸盒子相当于加上的帧头与帧尾)
CRC差错检测
以太网使用 CRC循环冗余校验
什么是CRC校验冗余校验?
原理:
发送方:会根据原始的数据计算出校验码,放在帧尾一起一同发送过去。
接收方:拿收到的数据 + CRC校验码会重新进行计算结果。
- 结果为0 → 说明数据没有损坏
- 结果不为0 → 说明数据出错,会直接丢弃帧
注意:差错检测只能检是否存在问题,而不能纠正错误,传输过程中发现错误会直接丢包,不会自动重传,重传的工作会交给上层TCP协议来进行处理
可靠传输机制
可靠传输字面意思上我们就能理解为:保证接收方能够接收到发送方发送的数据;
3种经典的可靠传输机制:
- 停止等待协议: 每次发送一帧数据会等待对方返回ACK,收到之后再发送下一帧,缺点就是效率比较慢
- 后退N帧(GBN): 可以连续发送多帧,如果发送过程中出现丢包问题,就会从丢包地方重新开始传递数据
- 选择重传: 出错只会重新传递出错那一处,并不会重复发送数据
以太网本身是没有实现可靠传输 的,可靠传输交给TCP来进行实现
2. 认识以太网
以太这个概念早期并不是计算机里面的一个术语,而是物理上设想的一种物质:
1887年迈克尔逊和莫雷在美国克利夫兰做的迈克尔逊-莫雷实验否定了以太的存在,以太从此退出科学领域,只成为了一种哲学上的概念。
后续在计算机层面上引用了
以太这个名词,也就是现在的以太网
以太网结构:

解释:
1.目的地址与源地址 :都是
MAC地址,对应关系属于收件人与寄件人的关系
- CRC: 校验数据是否出错,会计算出校验码
- 结果为0 → 说明数据没有损坏
- 结果不为0 → 说明数据出错,会直接丢弃帧
2.1 MAC地址
MAC地址也叫物理地址,是固化在网卡硬件上,长度为48位,用12个十六进制数字表示 。一般情况下在出产时已经固定好了,绝大部分情况下MAC地址是固定的,不允许修改
(MAC地址通常是唯一的),但是有些设备可以修改MAC地址 ;注意:
MAC地址只能在同一个局域网(广播域)内生效,不能跨局域网直接通信。这里我们可以使用一个例子: 长途旅途类比数据包跨网段传输 桂林-\>柳州-\>北海-\>南宁
- 此处的IP地址就相当于本次的起点与目的地
- MAC地址只负责管理 相邻的一跳 ,数据包每次经过一台路由器,离开当前局域网之后,旧的MAC地址就会
作废,路由器会重新封装一组全新的源MAC,目的MAC,直到最后一跳到达目标主机所在的局域网,目的的MAC地址才会更换成目标主机网卡的MAC地址。
简单口诀:IP不忘初心,MAC每跳换新
2.2 二层交换机工作原理

简单来理解:
交换机属于二层设备,只认识MAC地址,看不懂IP地址 ,工作在局域网内部。
可以把交换机类比成班级里面的"快递收发员(代购跑腿的)":
- 交换机内部会维护一张「MAC地址‑端口映射表」(代购表);
- 收到数据帧后,读取帧里面的目的MAC;
- 如果映射表里存在这条记录,就单播转发到对应的端口;(如果有人要跑腿买零食并且写了姓名,就会将零食交给对方)
- 如果没有查到记录,则执行泛洪广播,向除接收端口以外所有端口转发这条帧;(如果没有则大声询问这是谁的)
- 交换机收到任意一个进来的数据帧时,就会读取帧里的源 MAC,更新 MAC‑端口映射表。
交换机可以隔离冲突域,但是不能隔离广播域。
2.3 ARP协议
ARP协议建立了主机IP地址和MAC地址的映射关系 .
作用就是通过目标主机的IP地址,查询得到它对应的MAC地址。
工作流程:
- 当主机想要发送数据时,已经知道目标IP,但是不知道目标MAC;
- 会在局域网发送
ARP广播请求报文,询问这个IP对应的MAC地址;- 局域网内所有的主机收到请求,当IP匹配成功的主机会单播返回ARP应答,如果不匹配则丢弃广播;
- 请求方收到应答之后,把「IP‑MAC」映射关系保存到本地ARP缓存表,后续一段时间内无需再次广播查询。
ARP只适用于同一个局域网内部 ;跨网段通信时,ARP获取到的是网关路由器的MAC地址,而不是远端主机MAC地址。
3 高频面试总结
1:MAC地址能不能跨局域网通信?MAC和IP地址的区别?
MAC地址是二层链路层地址,
只能在当前局域网内生效,无法跨网段通信;IP是三层网络层地址,负责端到端的远程寻址,可以跨多个局域网传输。数据包每经过一台路由器,二层源MAC与目的MAC就会被重新改写,但是三层源IP、目的IP全程保持不变。
2:简述交换机的自学习转发流程
交换机维护一张MAC‑端口映射表。收到帧时会先读取源MAC,更新映射表;再查看目的MAC,如果表中存在记录就单播转发;不存在就泛洪广播。
3:CRC校验检测出帧出错后,链路层如何处理?
以太网链路层检测出错误帧后,会直接将帧丢弃,不会进行重传,重传的可靠性会交给上层TCP协议负责。
4:ARP协议的工作过程,跨网段时ARP拿到的是谁的MAC?
ARP通过广播请求、单播应答的方式 由IP查询MAC 。跨网段通信时ARP获取到的是网关路由器的MAC地址。
[🔙 返回目录](#🔙 返回目录)





