浏览器访问网页过程中发生了什么?(转)
在浏览器输入: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
浏览器访问网页过程中发生了什么?(转)相关推荐
- 从输入 URL 到浏览器接收的过程中发生了什么事情
从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU 首先是「输入 U ...
- 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?
从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情?
写得很全面,有待进一步展开.. 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capaci ...
- 打开网页到我们看到页面显示的过程中发生了什么?
1.DNS解析 2.TCP连接 3.发送HTTP Request 4.服务器处理 Request and Return Request 报文 5.浏览器解析并渲染页面 6.连接结束 1:dns(D ...
- Java中模拟浏览器访问网页(三)
Java中模拟浏览器访问网页(三) 转载:https://blog.csdn.net/qq122627018/article/details/51473150 一.前言 看完上一节中浏览器访问网页的行 ...
- vb调用本地html,在VB中调用浏览器访问网页
调用浏览器访问某一网址(页)是软件中常见的功能.本文总结在VB编程中调用浏览器访问网页的三种方法: Shell 函数. ShellExecute API 函数和 Automation 对象技术. Sh ...
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)...
之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...
- 从输入URL到显示页面的过程中发生了什么?
概览 关于这个问题,我看过很多文章,每个人分析的方法与总结的步骤都不相同.我这里按照自己的理解把过程分为了十个部分.因为我主要学习后端,所以最后几步前端的内容略写了. 一.URL解析 二.DNS域名解 ...
- 课时3.浏览器访问网页原理(理解)
浏览器访问网页原理(理解) 第一次打开IE6,发现系统自动生成了一个文件夹,所以我们可以得出这个文件夹必然和IE6有一定的关系 先删除Internet Cache下的所有文件夹,然后通过IE6打开百度 ...
最新文章
- 如何利用 Python 爬取 LOL 高清精美壁纸?
- 南大计算机考研录取,南京大学拟录取名单公示,初试最高446分,推免占比竟高达75%...
- 【知云】第十二期:处于风口浪尖上的直播视频网站,如何快速部署直播监管?...
- 计算机体系结构----常见英文缩写(待更....)
- Linux容器间共享内存,C++容器模板在共享内存中的使用
- 明晚直播丨MySQL的查询与优化
- 【Java从0到架构师】Zookeeper 应用 - Java 客户端操作、服务器动态感知、分布式锁业务处理
- html无序列表文字换行,ppwjs之bootstrap文字排版:无序列表项不换行
- Docker的安装和操作(虚拟机+linux系统)
- python2 与 python3的区别
- 关于阿里直播 安卓手机支付宝不支持的处理
- 实操教程:黑客如何瞄准和入侵网站的
- 连载《一个程序猿的生命周期》-《发展篇》- 17.程序猿们,收起玻璃心,给你们的忠告...
- 软件开发过程包括哪几个阶段?
- java使用jacob给word添加水印
- 90后歌单精选100首,我有歌,你有故事吗?
- leyou商城day10 MQ介绍及详情静态页
- 怎么安装LINUX系统
- STC89C52单片机
- 2022Q3手机配件增长榜:手机壳、数据线等供求不断增加