IP地址和网络接口的概念不属于同一层吗?

网络工程 IP地址 界面 奥西
2021-07-18 05:58:37

https://unix.stackexchange.com/a/508065/674

您混淆了堆栈设备驱动程序层IP 层

在 IP 层,127.0.0.1 只是另一个 IP 地址并被同等对待。

在驱动程序层,通过环回接口发送的数据包“简单地立即传回网络软件堆栈”,而不是发送到网卡。

这个概念不是特定于操作系统的;各种操作系统使用相同的概念。

您在 localhost (127.0.0.1) 和环回接口之间存在混淆。是的,您在网络堆栈层之间感到困惑。

在计算机网络中,比网络层低的层是数据链路层和物理层。计算机网络中的设备驱动层在哪里?

它声称这个概念不是特定于操作系统的,所以我在这里试试运气。所以我在问题中(是否不需要将环回 IP 地址分配给网络接口,以便与之通信?)我最想知道。两个站点(Unix 和网络工程)上的一些用户声称相同的问题属于另一方,这让我感到难过。

谢谢。

2个回答

蒂姆,你非常努力地将抽象概念映射到现实生活中的硬件和软件。它们没有准确映射,所以你总是会有不合适的东西。软件是模块化的,便于编码和故障排除,但模块之间的划分不符合网络层的概念。当我们谈论在这一层或那一层运行的软件(或硬件)时,我们是在抽象它们的功能。哪一段代码实际上在做这项工作取决于特定的实现。它可能更多地基于硬件功能,例如设备驱动程序。OSI 或 TCPIP 模型中没有“设备驱动程序层”。

如果ping回环地址(127.0.0.1)或网口地址,实际结果是一样的。可能正在使用操作系统软件的不同部分,但这对您来说是透明的*。

*一个区别是网络接口可以关闭(或因此完全删除),但只要操作系统正在运行,环回 IP 就会始终响应。

由于特定于主机的详细信息,您的问题在这里非常接近主题。

NIC 是一个物理接口,实现了第 1 层和第 2 层。为了在操作系统的硬件抽象层中使用它,需要一个驱动程序。该驱动程序为操作系统(或“堆栈”)提供了一个标准化的接口(“向上”)以进行通信。此外,它还包含特定于硬件的代码(“向下”),以使硬件执行操作系统告诉它的操作。

因此,驱动程序属于 OSI 堆栈中的第 2 层。“设备驱动层”是一个未连接的操作系统概念。

我不确定海报是否完全正确。非常常见的是,数据包到达驱动程序层之前操作系统堆栈中检测到本地或环回地址然而,这绝对是特定于主机的,而且是题外话。

IP 地址是网络层 L3 中的地址。

您可以查看 OSI 分层的众多问答。每一层都有其特定的目的和任务。