【网络原理】数据链路层
目录
一. 以太网
二. 以太网数据帧
三. 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服务器