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. I2C通信基本原理及其实现

    I2C是一种总线式结构,它只需要SCL时钟信号线与SDA数据线,两根线就能将连接与总线上的设备实现数据通信,由于它的简便的构造设计,于是成为一种较为常用的通信方式. 由于I2C采用的是主从式通信方式, ...

  2. 题解-GXOI/GZOI2019 特技飞行

    Problem loj3085 bzoj不放题面差评 题意概要:给出两条竖直直线,再给出 \(n\) 架飞机的初始航线:一条接通这两条直线的线段,保证航线交点不在两条直线上.现要求安排所有飞机在航线相 ...

  3. 变分自编码器(Variational Autoencoder, VAE)通俗教程

    原文地址:http://www.dengfanxin.cn/?p=334 1. 神秘变量与数据集 现在有一个数据集DX(dataset, 也可以叫datapoints),每个数据也称为数据点.我们假定 ...

  4. Mark SDL2 Lazy Foo's Producations

    重点 初学SDL2,此处为笔记.有错误还请指出. 13)When our SDL 2 application runs, the operating system needs to be able t ...

  5. 【easy】671. Second Minimum Node In a Binary Tree

    Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ...

  6. CentOS Android Studio桌面图标的创建

    1.切换到root用户,在桌面上创建Android.Studio.desktop,如下: [Desktop Entry] Name=Android Studio Comment=Android Stu ...

  7. 使用element-ui遇到的各种小问题

    一.Dialog对话框 1.在使用嵌套Dialog的时候,会出现遮罩层在内容的上方这种错乱情况 解决办法:http://element-cn.eleme.io/#/zh-CN/component/di ...

  8. 大前端服务器渲染 发布和部署 Vue + vue(SSR)

    https://blog.csdn.net/sinat_15951543/article/details/80109521    就是到服务器dist 下面 npm run start & 然 ...

  9. http强转https websocket

    需要在httpd.conf文件最后添加即可: <Directory /> Options FollowSymLinks AllowOverride All RewriteEngine on ...

  10. VS2017 提示警告 IDE0006

    MS的错误帮助:https://github.com/dotnet/roslyn/wiki/Diagnosing-Project-System-Build-Errors 看起来好复杂- 其实嘛- 检查 ...