启动 Wireshark。将 IE9 指向本地不可路由的 IP 地址。您将看到一个 TCP SYN 数据包尝试连接到主机。
现在将 IE9 指向远程可路由的 IP 地址。您将看到 2 个几乎同时发出的 TCP SNY 数据包。
为什么 Web 浏览器在尝试获取可路由 IP 地址时会表现出不同行为?
编辑1
这是该问题的 wireshark 捕获。
Pkt 1 是针对不可路由 IP 地址的 SYN。3 秒后,它会重试。6 秒后,它会再次尝试。在 Pkt 4 处,IE9 放弃了第一个 TCP 套接字并打开了另一个(源端口已更改)。3 秒和 6 秒后会重试。
Pkt 7 是发往可路由 IP 地址的 SYN。Pkt 8 是发往同一 IP 地址的另一个 SYN。这是第二个 TCP 套接字(源端口不同)。
编辑 2 这里有一张更好的图片来查看文字:
答案1
您确实需要查看下面的 HTTP 流才能找出发生了什么。如果您没有从本地 IP 和面向互联网的 IP 获取完全相同的 HTML 文档,那么您就在此处的调查中引入了其他变量。
我首先想到的是,您的浏览器向 google.com 请求 favicon.ico 和 index.html。这将是两个单独的 HTTP 请求。考虑到 AJAX 和此类 Javascript 也可能参与其中。
答案2
IE 使用区域模型,根据网站所属的区域对其进行不同的处理。如果您的不可路由 IP 被视为内联网区域的一部分,则预计会受到不同的处理。这不仅会影响安全设置;即使内联网站点具有 HTML5 文档类型,它们也可能使用史前的渲染标准进行渲染。(注意:您的测试 IP 可能会或可能不会被视为内联网,具体取决于您的配置。)
由于内部网中的站点通常具有非常低的往返延迟和高可靠性,因此保持较少的并行连接是有意义的。IE 也可能以不同的方式执行其他操作(例如准备加载某些资源、获取网站图标等)。
我找不到任何文档明确说明此类行为因区域而异,但当涉及到奇怪的 IE 行为时,这没什么意义。我提到的一些差异得到了解释这里和这个文件提到缓存对于区域来说是分开的。
即使您没有启用 Intranet 区域,如果 IE 对不可路由的 IP 地址有一些特殊处理,我也不会感到惊讶(毫无意义的“如果在 Intranet 区域,则忽略 HTML5 文档类型”显示了 IE 会出现什么奇怪的事情)。
还请注意屏幕截图中奇怪的时间戳。也许截图或你对截图的解读有问题。
TL;DR:不要使用 IE。如果你使用 IE,它出现奇怪的事情也不要感到惊讶。