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样式等等。

  通常来说,对于静态页面内容,浏览器通常会进行缓存。而对于动态的页面内容来说,浏览器不会缓存,缓存的内容通常也不会保存很久,因为难保网站页面不做改动。

请问浏览器访问www.baidu.com经历了怎样的过程?的更多相关文章

  1. 浏览器访问 www.baidu.com 的过程

    浏览器访问 www.baidu.com 的过程 1 先要解析出www.baidu.com DNS域名解析为服务器 IP 2 得到 IP地址后,客户端会发起TCP请求,以及3次握手建立连接 3 建立连接 ...

  2. 用户从手机的浏览器访问www.baidu.com,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。

    手机的网速问题.屏幕大小.内存.CPU等.通过不同设备的特征,实现不同的网页展现或输出效果.根据useragent.屏幕大小信息.IP.网速.css media Query等原理,实现前端或后端的特征 ...

  3. Selenium 3 + BrowserMobProxy 2.1.4 模拟浏览器访问 (含趟坑)

    背景 Selenium 是一个Web自动化测试的组件,可基于WebDriver去控制弹出浏览器去做一系列Web点击或行为测试(当然也可以去做一些邪恶的事..),减少重复人工网页测试的开销.Browse ...

  4. nginx只允许移动端访问( 判断拦截pc浏览器访问)

    set $mobile_request '0'; if ($http_user_agent ~* (Android|webOS|iPhone|iPod|BlackBerry)) { set $mobi ...

  5. [转]用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面

    FROM : http://blog.csdn.net/gavin_luo/article/details/40620217 现在很流行微信网页小游戏,用html5制作的小游戏移过来,可以放到微信浏览 ...

  6. Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)

    一:抓取简单的页面: 用Python来做爬虫抓取网站这个功能很强大,今天试着抓取了一下百度的首页,很成功,来看一下步骤吧 首先需要准备工具: 1.python:自己比较喜欢用新的东西,所以用的是Pyt ...

  7. 浏览器访问Servlet

    浏览器访问Servlet1.指定一个Servlet路径(                     在web.xml :              <servlet>             ...

  8. 用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面

    现在很流行微信网页小游戏,用html5制作的小游戏移过来,可以放到微信浏览器中打开,关键是可以做成微信分享朋友圈的形式,大大提高游戏的传播,增强好友的游戏互动. 微信浏览器中打开网页游戏效果还不错,对 ...

  9. 解决使用IIS5.0配置的FTP服务器,客户端浏览器访问时无法获取目录列表的问题。

    我在windows xp sp3下利用iis构架了FTP服务器,允许且只允许匿名用户登陆.但刚开始配置好后,不管是使用命令行模式还是使用浏览器都发现无法访问. 于是怀疑防火墙屏蔽端口所致,果不其然,在 ...

随机推荐

  1. EOCS框架概述和剖析

    什么是EOCS? EOCS(Enterprise Operation Cross System),是一个基于eosio底层框架实现的企业级跨链操作系统,旨在实现和EOS主链通信的并行链,是真正意义的跨 ...

  2. 《NFC开发实战详解》笔记

    地点:30教 5楼 男厕对面 * 时间:下午三点 * 天气:中雨 * 状态:3    * ******************************************************* ...

  3. 读spring源码(一)-ClassPathXmlApplicationContext-初始化

    工作来几乎所有的项目都用到了spring,却一直没有系统的读下源码,从头开始系统的读下吧,分章也不那么明确,读到哪里记到哪里,仅仅作为个笔记吧. 先看ClassPathXmlApplicationCo ...

  4. 项目Alpha冲剂(3/10)

    1.项目燃尽图 2.今日进度描述 项目进展 完成数据库和服务器的连接部分,完成了一些应用的基本功能. 问题困难 完成了服务器的成功配置,同时实现了客户端与服务器的连接 心得体会 进度有明显的变化,成员 ...

  5. Virtual Machine

    之前说到可以使用Assembly language来实现程序编写,把程序通过一个Assembler就可以得到计算机可以操作的二进制文件. 但是Assembly language依旧不适于编程,但怎么将 ...

  6. SVG初尝试(一)

    SVG简介 SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics).其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它 ...

  7. 算法工程师<编程题>

    <编程题> 1.[Maximum Product Subarray 求最大子数组乘积] 这个求最大子数组乘积问题是由最大子数组之和问题演变而来,但是却比求最大子数组之和要复杂,因为在求和的 ...

  8. spring 报错

    一. java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 解决方案: 1. ...

  9. 关于Integer比较问题

    public class Test { public static void main(String[] args) { Integer a=127; Integer b=127; System.ou ...

  10. golang自动构建脚本

    #!/bin/sh #代码分支 branch_c=$ branch_p=$ #服务器 server=$ #构建版本 version=$ case $server in test1) echo &quo ...