你在chrome浏览器地址栏中输入baidu.com回车后发生了什么

文章类别 in internet

本文目录

1.你在chrome的地址栏输入baidu.com

2.chrome通过DNS去查找baidu.com这个域名对应的IP地址

3.浏览器给baidu服务器发送一个HTTP请求

4.baidu服务器301重定向响应

5.chrome浏览器请求重定向来的地址

6.baidu服务器处理请求

7.baidu服务器返回HTML响应

8.chrome浏览器显示baidu页面

浏览器是我们上网必备的工具之一,每当我们需要查询资料的时候,我们就会通过浏览器去访问相应的网站,或者当你寂寞难耐的时候,也许会关上窗门,然后通过浏览器去访问你收藏已久的域名,打开他的在线网站…

url

emmmmmm..

回到正题,当你在chrome浏览器地址栏中输入baidu.com回车后会发生什么呢?

1.你在chrome的地址栏输入baidu.com

chrome的地址栏输入baidu.com

2.chrome通过DNS去查找baidu.com这个域名对应的IP地址

chrome通过DNS去查找baidu.com这个域名对应的IP地址

DNS的查找过程是这样的:

chrome浏览器会先查找有没有缓存的DNS记录,如果在浏览器缓存没有找到需要的记录,就会去做一个系统的调用,获取系统缓存的记录;

如果没有记录请求会继续到路由器上,路由器上有自己的DNS缓存;

如果没有记录就会到ISP的DNS缓存中查看记录;

如果没有记录就会在ISP的DNS服务器从根服务器域名服务器开始递归搜索最后得到IP地址。

3.浏览器给baidu服务器发送一个HTTP请求

浏览器给baidu服务器发送一个HTTP请求

获取到baidu的ip地址之后,就可以给baidu这个服务器发送HTTP请求了,我们通过URL地址去发送的时候是一个GET的请求,这时候会向baidu服务器发送一个header信息:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Cookie:PSTM=1506157985; BIDUPSID=DA662DF344C147D17FB4828CCD795292; ...
Host:www.baidu.com
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

其中

  • User-Agent是向baidu服务器提供浏览器的类型,操作系统版本,浏览插件,浏览器语言等信息。
  • Accept是告诉服务器说我们需要接收的类型是什么样子的
  • Connection:keep-alive 是为了后边请求不要关闭TCP连接
  • Cookie 是以文本形式存储,每次请求的时候就会发送给服务器,它可以存储用户的状态,用户名等信息

4.baidu服务器301重定向响应

baidu服务器301重定向响应

因为刚刚我们在chrome浏览器中输入的是baidu.com而不是www.baidu.com,这时候baidu服务器就会将我们的请求响应一个301永久重定向到www.baidu.com。

5.chrome浏览器请求重定向来的地址

浏览器给baidu服务器发送一个HTTP请求

这时候chrome浏览器知道www.baidu.com才是baidu希望访问的地址,那么这时候chrome浏览器就会给baidu服务器发送另一个请求。

6.baidu服务器处理请求

baidu服务器在这个时候接收到了请求,它会去查看请求它的参数还有cookie信息,然后会进行一些操作处理,例如对数据进行存储,从数据库中获取需要被请求的数据等。

7.baidu服务器返回HTML响应

baidu服务器返回HTML响应

当baidu服务器处理好之后,就会给浏览器返回数据了,这个时候会有一个Response Headers发送给浏览器:

Bdpagetype:1
Bdqid:0xddf2be49000b5995
Bduserid:0
Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Cxy_all:baidu+09720a4fa84e5493ae7506a57de6bc05
Date:Sat, 14 Oct 2017 09:39:32 GMT
Expires:Sat, 14 Oct 2017 09:39:32 GMT
Server:BWS/1.1
Set-Cookie:BDSVRTM=49; path=/
Set-Cookie:BD_HOME=0; path=/
Set-Cookie:H_PS_PSSID=1440_13551_21103_24658; path=/; domain=.baidu.com
Strict-Transport-Security:max-age=172800
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:HPHP
X-Ua-Compatible:IE=Edge,chrome=1

Response Headers说明了是否缓存这个页面,怎么去解释响应信息,cookie的设置,隐私信息等。 其中

  • Content-Encoding:gzip告诉浏览器整个响应体是用gzip算法压缩的。
  • Content-Type:text/html; charset=utf-8 告诉浏览器将响应的内容以HTML的形式呈现出来,字符集是utf-8。

8.chrome浏览器显示baidu页面

这时候chrome浏览器获得了响应内容,就开始显示baidu的HTML页面了,浏览器在显示的时候,发现需要获取其他的标签内容,比如图片、css样式表、JavaScript文件,那么浏览器就会继续对baidu服务器去发送请求这些内容,这些静态的文件baidu会把它进行缓存,利用内容分发网络(CDN)进行分发,所以这些静态文件在很多CDN数据中心都有备份,所以浏览器很快就能获取到这些静态文件。

从而进行页面吧的完整的显示:

baidu完整的显示

我的相关文章

相关资料

what-really-happens-when-you-navigate-to-a-url