8. 链路层

TCP/IP 模型中的链路层是基础层,负责在本地网络段上的通信。该层与硬件相关,直接处理网卡和物理寻址。

帧与链路层头部

链路层,来自网络层的数据包被封装成一个称为“帧”的结构。此过程中至关重要的一步是添加链路层头部。此头部包含主机源和目的地的 MAC 地址、用于错误检测的校验和以及数据包分隔符,这些分隔符允许接收设备识别一个帧在哪里结束,下一个帧从哪里开始。

为了构建链路层头部,系统需要源 MAC 地址和目的 MAC 地址。虽然源 MAC 地址是已知的,但同一本地网络上某个 IP 的目的 MAC 地址需要被发现。这就是地址解析协议 (ARP) 发挥作用的地方。

ARP(地址解析协议)

ARP 是一种链路层协议,用于查找同一网络内与特定 IP 地址关联的 MAC 地址。如果目的主机位于不同的网络上,数据包将被发送到默认网关(路由器),然后使用 ARP 来查找路由器的 MAC 地址。

系统首先会查阅其 ARP 查找表,该表缓存了已知的 IP 到 MAC 地址的映射。如果所需地址不在缓存中,系统会向整个网络广播一个 ARP 请求。此特殊消息询问哪个主机拥有特定的 IP 地址,例如 10.10.1.4。拥有该 IP 地址的主机将发送一个 ARP 答复,其中包含其 IP 和 MAC 地址。

拥有所有必要的 IP 和 MAC 地址后,链路层现在可以通过网卡转发帧。数据包的旅程是一个多步骤的封装和解封装过程,它在发送端和接收端的 TCP/IP 协议栈中上下移动。

数据包遍历

以下是数据包从发送方(Pete)到接收方(Patty)的逐步分解过程:

  1. Pete 发送一封电子邮件给 Patty。这些数据被发送到传输层。
  2. 传输层将数据封装到 TCP 或 UDP 头部中,形成一个段。它附加目的端口和源端口,然后将该段发送到网络层。
  3. 网络层将该段封装到 IP 数据包中,并附加源 IP 地址和目的 IP 地址。然后它将数据包路由到链路层
  4. 数据包到达链路层,在此处被封装成一个帧。包含源 MAC 地址和目的 MAC 地址的链路层头部被添加。
  5. Patty 通过其物理层接收到此数据帧,检查帧以确保数据完整性,然后对其进行解封装,并将 IP 数据包发送到其网络层。
  6. 网络层读取数据包以查找源 IP 地址和目的 IP 地址。它确认目的 IP 与其自身匹配,解封装数据包,并将该段发送到传输层。
  7. 传输层解封装该段,检查 TCP 或 UDP 端口号,并根据这些端口连接到应用层。
  8. 应用层从传输层接收指定端口上的数据,并将其作为最终电子邮件消息呈现给 Patty。

登录以保存您的学习进度

登录

练习

熟能生巧!以下是一些实践实验,以加强您对链路层、MAC 地址和 ARP 的理解:

  1. 在 Linux 中识别 MAC 和 IP 地址 - 练习使用 ip a 命令来识别 Linux 系统上的网络寻址信息,包括 MAC 地址。
  2. 在 Linux 中使用 ping 和 arp 探索网络层交互 - 学习 pingarp 命令如何协同工作以将 IP 地址解析为 MAC 地址,并理解网络层交互。
  3. 使用 tcpdump 在 Linux 中分析以太网帧 - 获得捕获和检查以太网帧(包括 MAC 地址)的实践经验,以理解底层网络通信。

这些实验将帮助您在实际场景中应用这些概念,并增强您对链路层网络基础知识的信心。

测验

用于查找同一本地网络上主机的 MAC 地址的协议是什么?(请用大写的英文字母缩写回答)。