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