我跟踪了家庭网络上的一些计算机,发现它们都只有 1 跳。我预计会有 2 跳,因为我认为数据包可能需要通过路由器或网关。
当然,情况并不总是如此,对吧?没有什么可以保证使用相同 Wi-Fi 的两台任意计算机彼此在覆盖范围内——它们可能都位于不同方向的接入点覆盖范围内。
如果它们不在彼此的范围内,那么它是如何工作的?如果计算机 A 想要连接到计算机 B,A 是否首先直接尝试,如果失败,则通过接入点尝试两次跳跃?
答案1
Traceroute 位于 OSI 网络模型的第 3 层。Wifi 位于第 2 层。可能存在非常复杂的 Wifi 网络,包括桥接器、附加 AP 等。您不会在 IP 层看到它。
因此,如果您的问题是 SSID 上的所有客户端是否都通过 RF 通信直接相互连接,那么答案是否定的。
答案2
想象一下,在以太网 LAN 上,您的数据包在到达“第一跳路由器”之前可能要经过多条以太网电缆、集线器和交换机。Wi-Fi(802.11 无线以太网的另一个名称)也是如此。您的 Wi-Fi 数据包可能由多个 Wi-Fi AP 中继,经过 AP 之间的无线 WDS 回程链路,甚至经过有线以太网回程链路,然后才能到达第一跳 IP 路由器。
Traceroute 测量 IP 层(网络层,第 3 层)跳数。它完全不知道要经过多少 Wi-Fi 层(数据链路层,第 2 层)跳数才能到达第一个 IP 层路由器。
答案3
我认为需要澄清的最重要的一点是第 3 层 (L3) 和第 2 层 (L2) 数据包转发之间的区别。
在第 2 层环境(包括交换机和 AP)中,转发决策基于 MAC 地址。这意味着第 2 层设备不关心 IP 地址。
另一方面,在第 3 层环境中,转发决策是根据 IP 地址做出的。基于 IP 地址运行的网络设备称为路由器。
这路由追踪软件(请注意,traceroute 不是协议)基于这样一个事实:路由器在每 L3 跳时将 IP 数据包的 TTL(生存时间)减 1,当数据包的 TTL 等于 0 时,会向源 IP 地址(您的 traceroute 软件)发送一个“ICMP 超时”数据包。为了找到路径,软件会生成简单的 IP 数据包,其 TTL 等于 1,然后对发出的每个新数据包加 1,直到发现最后一跳。
在 L2 环境中,由于设备不关心 IP 层,因此它们不会减少 TTL。结果是,例如,您可以使用单个 L3 跳(即目标主机)遍历大量 L2 设备。