数据链路层

数据链路层是OSI七层模型中的第二层,位于物理层之上、网络层之下,主要负责在直接相连的两个设备(如相邻的路由器、交换机与主机)之间,通过物理链路可靠地传输数据帧,是实现“点到点”数据传输的关键层次。

常见协议与技术

  • 以太网(Ethernet):最广泛的有线局域网协议,定义了帧结构、MAC地址格式和CSMA/CD访问控制方式。
  •  PPP(点对点协议):用于拨号链路、专线等点对点连接,支持差错控制和链路协商。
  • Wi-Fi(802.11系列):无线局域网协议,使用CSMA/CA和无线信道管理。
  • MAC地址:数据链路层的设备标识(6字节,全球唯一),如 00:1A:2B:3C:4D:5E ,用于帧的寻址。与IP对比,IP地址描述的是路途总体的起点和终点,MAC地址描述的是路途上的每一个区间的起点和终点。

认识以太网

“以太网”不是一种具体的网络,而是一种技术标准,包括了数据链路层的内容和物理层的内容。以太网的网线必须使用双绞线,以太网是当前应用最广泛的局域网技术。

以太网帧格式

  • 源地址和目的地址是指网卡的硬件地址(MAC地址),长度是48位,是网卡出厂时固化;
  • 帧协议类型字段有三种值,分别是IP(位于OSI模型的网络层,负责将数据从源设备通过网络路由到目标设备),ARP(数据链路层的一个重要协议,用于将网络层的IP地址映射到数据链路层的MAC地址),RARP(通过设备的MAC地址获取对应的IP地址);
  • 帧末尾是CRC校验码。

认识MTU

  • MTU就相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对于的物理层产生的限制。
  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。
  • 最大值1500被称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU。
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片。
  • 不同的数据链路层标准的MTU是不同的。
MTU对IP协议的影响——分片与重组

IP协议是MTU的直接应对者,当IP数据报(含首部)大小超过链路MTU时:将较大的IP包分成多个小包,并给每个小包打上标签🏷,每个小包IP协议头的16位标识都是相同的,每个小包的IP协议头的3位标志字段中,第二位置为0,表示允许分片,第三位来表示结束标记(是否当前的为最后一个小包,是的话置为1,否则置为0).达到对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是IP层不会再重新传输数据。

若是IP首部设置不分片(DF)标志,超过MTU的数据报就会被丢弃,且返回“需要分片”的ICMP差错报文。

MTU对UDP协议的影响——易丢包、无重传

UDP是无连接、不可靠协议,本身不处理分片,完全依赖IP层,一旦UDP携带的数据超过1572(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分成多个IP数据报,这多个IP数据报如果有任意一个丢失,都会引起接收端网络层重组失败。因此,UDP数据报如果在网络层被分片,整个数据被丢失的概率就大大增加了。

MTU对TCP协议的影响——主动规避分片,提升效率

TCP是面向连接、可靠的协议,通过机制主动适配MTU,减少分片。

MASS(TCP的单个数据报的最大消息长度)协商

TCP建立连接时,双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,然后双方得知对方的MSS值之后,会选择较小的作为最终MSS,MSS的值就是在TCP首部的40字节变长选项中。MSS通常为“MTU - IP首部(20) - TCP首部(20)”,如以太网中MSS=1460字节,确保TCP段+首部不超过MTU,避免IP分片。若TCP段因分片丢失导致传输失败,TCP会重传整个段(而非分片),可靠性比UDP更高。

总结
  • IP:直接处理分片与重组,是MTU限制的“执行者”;
  • ​UDP:被动依赖IP分片,分片丢失影响大,需主动控制包大小;
  • TCP:通过MSS和PMTU主动适配MTU,规避分片,提升可靠性和效率。

认识ARP协议

​ARP(Address Resolution Protocol,地址解析协议)是数据链路层的关键协议,作用是将网络层的IP地址映射为数据链路层的MAC地址,但是ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议。

ARP协议的作用

在网络通讯时,源主机的应用程序知道目的主机和IP地址和端口号,去不知道目的主机的硬件地址,数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃,因此在通讯前必须获得目的主机的硬件地址。ARP就解决了“知道目标IP却不知道其物理地址,无法直接发送数据帧”的问题,是局域网内通信的基础。

ARP协议的工作流程
  • 发送ARP请求(广播),源主机A发出ARP请求帧,其中包含​:

发送端信息:自己的IP(192.168.1.2)和MAC(AA:AA:AA:AA:AA:AA);
目标端信息:目标IP(192.168.1.3),目标MAC暂为 00:00:00:00:00:00 (待查询)。
该帧以广播形式发送(目标MAC为 FF:FF:FF:FF:FF:FF ),局域网内所有设备均可接收。

  • 接收与筛选

局域网内所有设备收到请求后,会比对目标IP是否与自身IP一致:
非目标设备(如IP为192.168.1.4的设备)忽略该请求;
目标主机B(IP:192.168.1.3)识别到自身IP,准备响应。

  • 返回ARP响应(单播)

主机B向主机A单播发送ARP响应帧,包含自己的MAC地址(如BB:BB:BB:BB:BB:BB),明确“192.168.1.3对应的MAC是BB:BB:BB:BB:BB:BB”。

  • 缓存映射关系

主机A收到响应后,将“IP→MAC”的映射存入本地ARP缓存表,可以用arp-a命令查看。ARP缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发来ARP请求来获得目的主机的硬件地址。

简单说,ARP是局域网中的“地址翻译器”,让基于IP的通信能最终通过物理地址(MAC)在链路层实现准确投递,是IP协议在局域网内正常工作的必要支撑。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐