在浏览器输入:http://www.baidu.com/,最后,浏览器呈现出相应网页,这个过程究竟发生了什么?

第一步,解析域名,找到主机IP

(1)浏览器会缓存DNS一段时间,一般2-30分钟不等。如果有缓存,直接返回IP,否则下一步。

(2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件。如果找到,直接返回IP,否则下一步。(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts***或破解软件。)

(3)进行了(1)(2)本地查询无果,只能借助于网络。路由器一般都会有自己的DNS缓存,ISP服务商DNS缓存,这时一般都能够得到相应的IP。如果还是无果,只能借助于DNS递归解析了。

(4)这时,ISP的DNS服务器就会开始从根域名服务器开始递归搜索,从.com顶级域名服务器,到baidu的域名服务器。

到这里,浏览器就获得了IP。在DNS解析过程中,常常会解析出不同的IP。比如,电信的是一个IP,网通的是另一个IP。这是采取了智能DNS的结果,降低运营商间访问延时,在多个运营商设置主机房,就近访问主机。电信用户返回电信主机IP,网通用户返回网通主机IP。当然,劫持DNS,也可以屏蔽掉一部分网点的访问,某防火长城也加入了这一特性。

第二部,浏览器与网站建立TCP连接

浏览器利用IP直接与网站主机通信。浏览器发出TCP(SYN标志位为1)连接请求,主机返回TCP(SYN,ACK标志位均为1)应答报文,浏览器收到应答报文发现ACK标志位为1,表示连接请求确认。浏览器返回TCP()确认报文,主机收到确认报文,三次握手,TCP链接建立完成。

第三部分,浏览器发起GET请求

浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是http://www.baidu.com/ ,还有User-Agent用户浏览器操作系统信息,编码等。值得一提的是Accep-Encoding和Cookies项。Accept-Encoding一般采用gzip,压缩之后传输html文件。Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

第四部分,显示页面或返回其他

返回状态码200 OK,表示服务器可以相应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

但是,对于大型网站存在多个主机站点,往往不会直接返回请求页面,而是重定向。返回的状态码就不是200 OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。

补充一点的就是,重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。

转载自:http://blog.csdn.net/lasercoder/article/details/41746079?utm_source=tuicool

转载于:https://www.cnblogs.com/JoannaQ/p/4343477.html

浏览器访问网页过程中发生了什么?(转)相关推荐

  1. 从输入 URL 到浏览器接收的过程中发生了什么事情

    从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU  首先是「输入 U ...

  2. 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?

    从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接 ...

  3. 从输入 URL 到浏览器接收的过程中发生了什么事情?

    写得很全面,有待进一步展开.. 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capaci ...

  4. 打开网页到我们看到页面显示的过程中发生了什么?

    1.DNS解析 2.TCP连接 3.发送HTTP Request 4.服务器处理 Request and Return Request 报文 5.浏览器解析并渲染页面 6.连接结束   1:dns(D ...

  5. Java中模拟浏览器访问网页(三)

    Java中模拟浏览器访问网页(三) 转载:https://blog.csdn.net/qq122627018/article/details/51473150 一.前言 看完上一节中浏览器访问网页的行 ...

  6. vb调用本地html,在VB中调用浏览器访问网页

    调用浏览器访问某一网址(页)是软件中常见的功能.本文总结在VB编程中调用浏览器访问网页的三种方法: Shell 函数. ShellExecute API 函数和 Automation 对象技术. Sh ...

  7. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)...

    之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...

  8. 从输入URL到显示页面的过程中发生了什么?

    概览 关于这个问题,我看过很多文章,每个人分析的方法与总结的步骤都不相同.我这里按照自己的理解把过程分为了十个部分.因为我主要学习后端,所以最后几步前端的内容略写了. 一.URL解析 二.DNS域名解 ...

  9. 课时3.浏览器访问网页原理(理解)

    浏览器访问网页原理(理解) 第一次打开IE6,发现系统自动生成了一个文件夹,所以我们可以得出这个文件夹必然和IE6有一定的关系 先删除Internet Cache下的所有文件夹,然后通过IE6打开百度 ...

最新文章

  1. 如何利用 Python 爬取 LOL 高清精美壁纸?
  2. 南大计算机考研录取,南京大学拟录取名单公示,初试最高446分,推免占比竟高达75%...
  3. 【知云】第十二期:处于风口浪尖上的直播视频网站,如何快速部署直播监管?...
  4. 计算机体系结构----常见英文缩写(待更....)
  5. Linux容器间共享内存,C++容器模板在共享内存中的使用
  6. 明晚直播丨MySQL的查询与优化
  7. 【Java从0到架构师】Zookeeper 应用 - Java 客户端操作、服务器动态感知、分布式锁业务处理
  8. html无序列表文字换行,ppwjs之bootstrap文字排版:无序列表项不换行
  9. Docker的安装和操作(虚拟机+linux系统)
  10. python2 与 python3的区别
  11. 关于阿里直播 安卓手机支付宝不支持的处理
  12. 实操教程:黑客如何瞄准和入侵网站的
  13. 连载《一个程序猿的生命周期》-《发展篇》- 17.程序猿们,收起玻璃心,给你们的忠告...
  14. 软件开发过程包括哪几个阶段?
  15. java使用jacob给word添加水印
  16. 90后歌单精选100首,我有歌,你有故事吗?
  17. leyou商城day10 MQ介绍及详情静态页
  18. 怎么安装LINUX系统
  19. STC89C52单片机
  20. 2022Q3手机配件增长榜:手机壳、数据线等供求不断增加

热门文章

  1. SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery and PGI
  2. 2022年的几个小目标
  3. 中层管理者,你到底怎样管理?
  4. 四种常见NLP框架使用总结
  5. 李飞飞最新访谈:我每天都在对AI的担忧中醒来
  6. SAP MM A工厂下的PR可以转成B工厂下的PO?
  7. 迁移学习简介(transfer learning)
  8. 干货丨史上最好记的神经网络结构速记表(经典资源,值得收藏)
  9. 2021年诺贝尔经济学奖评述:解决重大社会问题的自然实验因果框架
  10. 费米悖论的三十种解释