请问浏览器访问www.baidu.com经历了怎样的过程?
1.查找浏览器缓存
首先会查找浏览器缓存,浏览器会保存一段时间你之前访问过的网址的DNS信息,不同的浏览器保存的时长不等。
2.查找系统缓存
如果上面的步骤没有找到对应的DNS信息,这个时候浏览器会尝试调用系统缓存来继续查找这个网址对应的DNS信息。
3.查找路由器缓存
如果还是没有找到对应的IP,那么浏览器会接着发送一个请求到路由器上,然后路由器在自己的路由器缓存查找相关记录,一般路由器也存有DNS信息。
4.请求ISP DNS服务器
如果还是没有找到,那么这个请求会被发送到ISP(Internet Service Provider,即互联网服务提供商)。ISP针对DNS服务器做了修改,使得用户的浏览器自动访问到ISP已经设定好的页面上,这就是DNS污染和Http劫持,用户可以自行修改DNS来防止DNS被ISP污染,至于Http劫持,由于Http是明文通信,ISP拦截用户浏览器请求之后的Response,强行插入广告或302重定向响应来添加推广链接。用户使用Https
5.请求根域名服务器
如果在ISP的DNS服务器上还是没有找到,那么你的请求会被发向根域名服务器,根域名服务器是面向全球的顶级DNS服务器,共有A-->M13台逻辑服务器。真正的实体服务器大概有几百台,分布于全球各大洲,这些服务器拥有真正完整的DNS数据库。如果在这里还是找不到,说明了一个问题,这个域名根本不存在,或者该域名由于欠费,已经被回收了。
这也就是为什么打开一个新的页面,会有点慢的原因了。因为本地没什么缓存,需要这样一级一级的递归查询,知道DNS被解析。
域名结构:三级域名.二级域名.一级域名
6.解析过程
浏览器得到经过一系列的DNS查找之后,得到了IP。浏览器给这个IP的服务器发送了一个http请求,方式为get,这个get请求包含host、user-agent、Connection、Cookies等等
发送完请求之后,等待响应。
web服务器接收到浏览器的请求之后,开始读请求头,生成响应头和具体响应内容,响应头里有一个Status code,200、302、404等等。浏览器开始读取响应头,然后开始解析响应并开始显示页面。
如果该页面是个静态页面,基本上到这一步也就结束了,但是如果是个动态页面,在主页的框架在浏览器上加载完之后,需要继续向web服务器请求其所包含的资源,图片、视频、css样式等等。
通常来说,对于静态页面内容,浏览器通常会进行缓存。而对于动态的页面内容来说,浏览器不会缓存,缓存的内容通常也不会保存很久,因为难保网站页面不做改动。