这是为什么
几乎立即失效,而
是否需要更多时间才会失败?
如果这些端口上没有服务器,则两个请求都应经历相同的过程,并且应花费相同的时间才会失败。有什么不同?
答案1
谷歌做保持服务器在端口 443 上运行。如果您浏览到https://www.google.com或者https://www.google.com:443,您将通过 SSL 获得正常的 Google 搜索页面。
当您使用 URL 时http://www.google.com:443,您告诉浏览器通过端口 443 发出请求,但使用非加密 HTTP。Google 已将其服务器配置为拒绝此请求并关闭连接,因为它只希望通过该端口使用 HTTPS。
然而,谷歌的服务器不是监听8080端口。当你向8080端口发出请求时,你的浏览器必须等待超时才能判定请求失败。
你可以通过打开到 www.google.com:443 的 telnet 会话并尝试与其进行未加密的 HTTP 通信来证明这一切:
[~]$ telnet www.google.com 443
Trying 66.102.7.104...
Connected to www.l.google.com.
GET / HTTP/1.0
Connection closed by foreign host.
如果你尝试以下命令,你会发现根本无法连接到端口 8080,并且需要很长时间才能超时:
[~]$ telnet www.google.com 8080
Trying 66.102.7.104...
telnet: connect to address 66.102.7.104: Operation timed out