添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
提高日志级别,重新跑一会程序后仔细研究了一下,发现原来 ipv6 url 已经不知不觉悄然兴起了。以微信程序为例进行分析,在接收聊天、朋友圈的图片、表情包的时候,微信会连接到其mmsns/emoji服务器请求资源。微信首先会通过ipv6 url来发送请求,完整http请求如下:
GET http://[::ffff:183.56.150.156]/wx_emoji/DIkVxibabfH8eHDibw0xNdcExNPYfGekiapG1qq8lrYWuod6JqiaxPpwPlgWhVfSF5Pia/ HTTP/1.1
Host: emoji.qpic.cn
Proxy-Connection: keep-alive
Accept: */*
User-Agent: WeChat/6.3.16.17 CFNetwork/758.5.3 Darwin/15.6.0
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Connection: keep-alive
	        如上,ipv6文本形式的url格式为http://[ipv6]:port/xxxx。实际上上图中的ipv6地址从后四个字节看仍然是个v4地址。说明微信首先会试探用户环境是否支持ipv6,如果不支持没有响应,微信的兼容性也很好,会立即切换到传统url方式,将ipv6文本形式的url替换为域名,重发http请求:
GET http://emoji.qpic.cn/wx_emoji/DIkVxibabfH8eHDibw0xNdcExNPYfGekiapG1qq8lrYWuod6JqiaxPpwPlgWhVfSF5Pia/ HTTP/1.1
Host: emoji.qpic.cn
Proxy-Connection: keep-alive
Accept: */*
User-Agent: WeChat/6.3.16.17 CFNetwork/758.5.3 Darwin/15.6.0
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Connection: keep-alive
	        互联网上网络环境迥异,存在大量不计其数的老旧的ipv4 http代理,这些代理服务器遇到ipv6 url就懵了,不能解析和支持。
	        查明bug后,捋起袖子重新写了一下对ipv6 url的解析支持。
	        相关标准文档请参考RFC2396、RFC2373。
        
本条目发布于2017-01-21, 共阅读 5517 次, 评论 3 条
属于标签: tcp/ip Failed to parse: 海东","isp":"电信"},{"ip":"119.186.198.190","port":894,"expire_time":"2018-09-24 Invalid IPv6 URL 报这种错误是什么原因? 我看您好想处理过这种问题