请记住,OSI 模型只是一个模型,现实世界并不总是如此完美地融入其中。有很多模型,但没有一个是完全遵循的。
数据链路层是 OSI 模型下的第 2 层。许多(但不是全部,仅 IEEE)LAN(第 2 层)协议使用的地址称为 MAC(媒体访问控制)地址。使用 IEEE LAN 协议(例如以太网或 Wi-Fi)的 LAN 上的主机使用 MAC 地址相互通信。
OSI 模型的一个主要问题是操作系统实际上从未实现单独的第 5、6 和 7 层。这意味着这些层实际上在应用程序层中集中在一起,这在此处是题外话。
应用层将数据发送到传输层,在传输层中将数据封装在数据报中进行传输。一些传输层协议使用源地址和目标地址。对于 TCP 和 UDP,我们将这些地址称为端口,而 TCP 数据报称为分段,因为应用程序数据流是分段的。
传输层将其数据报发送到网络层,网络层将数据报封装在称为数据包的网络层数据报中。数据包具有源地址和目标地址。
网络层将数据包发送到数据链路层,数据链路层将数据包封装成帧(MAC 功能)。IEEE 数据链路层协议在帧上使用称为 MAC 地址的源地址和目标地址。其他第 2 层协议可能使用其他寻址,或者根本不使用。
数据链路层将帧发送到物理层(硬件),以便对放置在“线路”上的帧进行编码。
接收主机将反转该过程,将线路上的位解码为帧,帧将其有效载荷发送到适当的网络层协议(LLC 功能),然后将数据包有效载荷发送到适当的传输层协议,传输层协议将有效载荷发送到适当的申请程序。
源主机上的每一层都与目的主机中的相应层通信,因此,不,同一局域网上的两台主机通信时不会跳过上层。
了解主机可以有多个网络层协议。IEEE LAN 协议决定哪个网络层协议获取帧的有效负载的方式称为 LLC。将网络数据包实际封装在帧中称为 MAC。
不要误以为全世界都在使用 IEEE 数据链路协议,尽管它们在 LAN 上占主导地位。有许多不同的数据链路协议,其中许多不使用由 IEEE 802 定义的 LLC 或 MAC。