最近开发 ,用 go 的 http client 觉得十分便捷,前几天在调试过程中,突然想起很多年前用 WinHttp API 写的一个下载程序,当时看到 WinHttpConnect 顾名思义就以为调完这个 API 后应该有 TCP 连接,现在仔细思考后觉得不合理,于是打开那个代码研究一下,果然以前想当然是错的!
用 TcpView 和 Microsoft Network Monitor 抓包,都没发现 WinHttpConnect 成功之后有任何 TCP 连接。
回头去看 MSDN 的描述,果然从头到尾没提到 TCP 连接。不过意外在文档里学到了一个新知识:,其实是老知识,以前没去深挖,熟视无睹而已。所有中文域名的解析都需要转成 punycode 码,然后由 DNS 解析 punycode 码。目前所说和各种浏览器完美支持中文域名,只是浏览器软件里面主动加入了中文域名自动转码,不需要原来的再次安装中文域名转码控件来完成整个流程。