4

如果我运行 2 个应用程序通过 TCP 环回使用套接字发送/接收数据,那么数据的实际路径是什么?这些数据会通过 Windows 网络驱动程序和/或 NIC 硬件吗?

编辑。请考虑这不是 Windows 的“环回”,而是在 NIC 上进行的物理环回,其中 2 个端口通过电缆相互连接,使其成为物理环回。

4

1 回答 1

4

Loopback 是一个虚拟接口,没有与之对应的硬件。数据复制发生在内核内部,甚至在驱动程序级别之上。

编辑0:

您正在混合两种不同的东西 - TCP/IP 中的环回是一个虚拟网络接口127/8,通常在子网中有一个特殊地址127.0.0.1,默认情况下为您创建,以太网交叉电缆在同一台机器上的两张卡之间循环。

我在最初的回答中提到了第一个案例。

第二种情况下 TCP/IP 堆栈的行为取决于实现和传输选项。对于 TCP 连接和单播 UDP,内核可能刚刚意识到源地址和目标地址都是机器本地的,并且通过内存进行短路数据传输。您会发现大多数现代网络堆栈都以这种方式运行。对于广播或多播 UDP,没有其他选择,只能通过物理卡发送数据包,因为网络上可能有其他侦听器。

于 2012-06-18T13:29:09.087 回答