前几天,当我在家遇到间歇性的互联网连接问题时,我决定做一件我很少做的事情——我将笔记本电脑直接插入电缆调制解调器,看看出了什么问题。连接恢复后,我决定在仍然直接连接的情况下进行一些诊断,以确保一切正常。
在此测试期间:
- 我的笔记本电脑已插上电源直接地插入电缆调制解调器。
- 据我所知,这是一个“假”调制解调器 - 它不是一体式电缆调制解调器/路由器/wifi 设备。
- 我没有在网络上测试其他设备。
- 我的笔记本电脑通过 DHCP 获得了一个 IP 地址和网关,它们都是可公共路由的“A 类”地址。
如果我运行pathping
或tracert
到网关,一切都会恢复正常 - 我的笔记本电脑和网关之间似乎没有任何东西。
然而,当我在互联网上对其他目标(Google、Yahoo 等)运行相同的实用程序时,第一跳回到了 RFC 1918 地址的“A 类”范围内。此外,公共可路由的默认网关地址根本没有出现在跟踪中。
再次说明,此时我家里唯一连接的设备是我的笔记本电脑和电缆调制解调器。因此,假设任何不在我的 DHCP 分配子网中的地址的第一跳应该始终是显示为ipconfig
“默认网关”的地址。
有人能解释一下这是如何发生的吗?以及为什么会有合理的理由?
答案1
tracert
它的工作原理是发送具有较短 TTL(“生存时间”)的数据包并收集发回的讣告。也就是说,当发送数据包时,它具有数值 TTL,数据包经过的每个主机都会减少该数值。如果 TTL 达到零,数据包就会死亡。数据包死亡的主机通常会发回一条控制消息(ICMP)来声明“数据包在这里死亡”;该消息包含所述主机认为是其自身真实地址的地址。这不一定是您希望的地址:路由器在构造上具有多个地址。
例如,如果您的网关的公共地址为 66.131.127.1,但在 ISP 网络内还具有地址 10.35.184.1,则 ICMP 消息可能完美地以 10.35.184.1 的标签返回(此地址不是“公共”的,但这主要是惯例,路由器不需要知道)。
答案2
有时,提供商会使用私有地址空间进行内部路由。德国最大的互联网提供商 T-Online 甚至在 2005 年底之前都将服务器放入该地址空间。
虽然使用私有地址空间进行内部路由不会对可达性产生负面影响,但它通常被认为是不好的做法:它使使用 traceroute 追踪问题变得更加困难,并会导致支持呼叫。