前言
网页访问过程前段时间,小编收到有用户反馈个别小说网站无法访问的问题,经过一番问题复现跟进,发现该小说网站只有在移动运营商网络环境下才会无法访问,在WiFi和联通运营商网络环境下均可正常访问该小说网站。网页的访问竟然会与运营商有关?为了进一步定位问题的具体原因,接下来先和大家一起温习下网页访问的流程逻辑。
从用户输入url到页面加载的全过程中,包含的主干操作和整理流程如下所示:
1、DNS解析;
2、TCP连接;
3、发送HTTP Request请求;
4、服务端处理请求并返回HTTP Response 响应;
5、浏览器解析渲染页面;
6、连接结束;
问题分析
知识点补充
- 问题定位
在了解了网页访问全过程后,接下来是定位问题的原因。
1、首先,查看抓取到的请求数据,对应的测试方法有两种:
方法一:在移动运营商网络环境下,利用抓包工具抓取相关请求;
方法二:连接内网环境,将内网出口配置切换为“中国移动”,在WiFi环境下利用fiddler抓取请求。(非通用)
根据抓取到的请求结果,我们可以看到,访问网页时,客户端可以正常发送HTTP请求,只是HTTP Response 响应为504。这就说明整个网页访问的流程是通畅的,没有异常中断,这样的话我们可以排除TCP连接、浏览器解析渲染页面(返回504)、连接结束这3个环节。
2、接下来,再通过分析请求中参数字段,可以确保发送HTTP Request请求环节是OK的。那么剩下的环节就是DNS解析和服务端的请求处理响应这2个。
我们连接内网WiFi,并将内网的出口配置切换为不同运营商:“中国移动”、“中国电信”、“中国联通”等,同一WiFi环境、同一设备和同一浏览器APP中访问同一网站。对比不同网络模拟下的访问结果和抓取的请求数据,我们发现,在将网络出口切换为非“中国移动”时,网页请求返回301,进行了一次域名/IP跳转,最终可正常加载网页;网络出口为“中国移动”时,请求返回504。
至此,我们可以判定问题的原因在于第三方网站的服务器请求处理。
- 解决方案
由于为第三方网站问题,与产品沟通后,后续会做需求策略上的调整优化。
结束语
- DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例如m.sogou.com,其实不是搜狗网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的搜狗网址。所以互联网设计者需要在用户的方便性与可用性方面做一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析。它实际上充当了一个翻译的角色,实现了网址到IP地址的转换。
应用层在DNS解析的过程中,按照浏览器缓存、系统缓存、路由器缓存、ISP(Internet Service Provider,网络服务提供商)DNS缓存、根域名服务器、顶级域名服务器、主域名服务器的顺序,逐步读取缓存,直到拿到域名对应的IP地址。
当用户在前三个客户端DNS缓存中没有查找到域名对应的IP地址时,则将进入ISP(Internet Service Provider,网络服务提供商)DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找。如果以上都没有,开启查找IP的过程:如访问某个小国的新的域名,则向根域名服务器查找域名对应的IP。
以上为本次问题的定位过程及对网页访问、DNS解析的学习结果,分享共勉。
责任编辑: