浏览器输入URL后发生了什么

(转自: 点击打开链接
我们经常在浏览器中输入一个网址,但是在输入这个网址后,发生了什么?今天我们来分析一下!

通常,在输入一个网址后,发生的事情分为六步:DNS域名解析,TCP连接,HTTP请求,接收响应结果,浏览器解析HTML,浏览器布局渲染。

1. 查找域名的IP地址

我们在浏览器中输入一个网址(URL),首先,浏览器会根据输入的网址找到对应的IP地址。那么,怎样找到对应的IP地址呢?接下来我们就来看一下。

(1)URL的格式

一个URL包括协议,网络地址,资源路径;

协议,最常用的比如HTTP(超文本传输协议),FTP(文件传输协议);

网络地址,可以是域名或IP地址,包括端口号,如果没有端口号,默认为80;

资源路径,可以是多种多样的。

(2)DNS域名解析

浏览器发现输入的网址不是IP地址,便向操作系统发送请求IP地址,操作系统启动DNS域名解析协议,接下来就开始DNS查询了。

第一步:先在各种缓存信息中查找

 浏览器缓存——浏览器会缓存DNS一段时间,但是操作系统不会告诉浏览器缓存多长时间,这个缓存时间完全由浏览器自己决定。

系统缓存——如果在浏览器中没有找到,浏览器会做一个系统调用,获得系统缓存中的记录。

路由器缓存——接着会将请求发给路由器,路由器一般也有自己的DNS缓存。

如果在缓存信息中都没有查找到,则转第二步。

第二步:DNS服务器查找

全球所有的DNS服务器组成了一个DNS域名解析系统,在这个系统中,包含了全球所有的主机和IP地址的映射。所以,先在和它直接相连的DNS服务器中查找,一般情况下,在这个DNS服务器中都可以找到,但是也不排除特殊情况。

如果在和本地相连的服务器上没有找到想要的IP地址,则进行递归查找。本地服务器请求比他高一级的服务器或者根服务器,根服务器查询自己的数据库,如果知道对应的IP地址,则返回信息给本地服务器,本地服务器再将信息返回给浏览器;如果没有直接找到对应的IP地址,则告诉本地服务器应该在另外的哪一个服务器上询问,然后将询问到的信息返回给浏览器。(在根服务器上一定可以找到对应的IP地址)。

2. TCP连接

在知道对应的IP地址后,接下来我们就可以进行TCP连接请求了。TCP向服务器端发送SYN连接请求,经过TCP三次连接成功后,浏览器就和服务器端建立好连接了,就可以相互发送数据了。

TCP三次连接可以参考点击打开链接

3. 浏览器发起web服务器 HTTP请求

根据HTTP协议的要求,组织一个HTTP数据包,HTTP请求的报头有请求行和报文,请求行包括三部分,请求方法,URL(服务器上的资源),版本。报文有一些其他信息,比如请求正文的有效载荷长度(Content_Length),缓存信息(Cache_Control),Cookie等。

                              

(1)常见的请求方法

                                                                          

(2)常见的HTTP版本

有两种,为HTTP/1.1和HTTP/1.0,HTTP/1.1默认的连接方式为长连接(Connection:keep-alive),而HTTP/1.0默认的连接方式为短连接(Connection:close)。

注:HTTP报头在结束时,会向下留下空行,这个空行也是将报头和正文分开的依据。

4. HTTP响应

在通过HTTP请求服务后,服务器会向浏览器返回一个应答信息——HTTP响应。HTTP响应的报头包括三部分——版本,状态码,状态码描述。

                                        

常见的状态和状态码

                              

注:如果服务器返回的响应信息为3XX,此时要转到第五步。

5. 浏览器跟踪重定向地址

现在浏览器知道了真正要访问的目标服务器在哪里,便向此目标服务器发送和第三步相同的报文,请求响应。

6. 服务器处理请求

服务器接收到获取请求,然后处理并返回一个响应。

这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西:

  • Web 服务器软件
    web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY...)。
  • 请求处理
    请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。

7. 浏览器解析HTML

就像我们平常请求网页一样,浏览器会一个一个的响应出用户请求的页面,这个页面里面有表格,有图片,有文字,也可能有视频等等。

浏览器按顺序解析html文件,构建DOM树,在解析到外部的css和js文件时,向服务器发起请求下载资源,若是下载css文件,则解析器会在下载的同时继续解析后面的html来构建DOM树,则在下载js文件和执行它时,解析器会停止对html的解析。

8. 浏览器布局渲染

  • 布局:通过计算得到每个渲染对象在可视区域中的具体位置信息(大小和位置),这是一个递归的过程。
  • 绘制:将计算好的每个像素点信息绘制在屏幕。

9. TCP断开连接

在完成所有的工作后,客户端就要发送断开连接请求了,TCP释放连接需要四次挥手。

TCP四次挥手的工作可以参考点击打开链接

猜你喜欢

转载自blog.csdn.net/baidu_37964071/article/details/80514402