HTTP请求的整个过程

这是这两天面试的时候的一道面试题,当时答得不好,现在总结了一下。

一次完整的 http 请求包括一下几个步骤【这仅是个人的理解】

DNS解析--->TCP 三次握手建立连接--->浏览器发送http请求--->服务器响应请求--->浏览器解析html文件--->浏览器布局渲染

1.DNS域名解析

举个例子:

Chrome浏览器输入www.baidu.com这个域名,域名解析的过程

(1)Chrome浏览器会首先搜索浏览器自身的DNS缓存,看自身的缓存中是否有www.baidu.com对应的IP映射,如果有对应的IP映射并且没有过期则停止解析,否则跳转到第(2)步;

(2)如果浏览器自身的缓存里面没有找到对应的IP映射,那么Chrome浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索并停止解析,否则跳转到第(3)步;

(3)如果在操作系统中的DNS缓存中没有找到对应的IP映射,那么会尝试读取hosts文件,查看是否有对应的IP映射,如果找到则解析成功,否则跳转第(4)步;

(4)如果在hosts文件中也没有找到对应的IP映射,浏览器会发起一个DNS的系统调用,就会像本地配置的首选的DNS服务器(一般是电信运营商提供的,也可以向Google提供的DNS服务器)发起域名解析的请求(通过的是UDP协议向DNS的53端口发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS 服务器首先会查找自身的缓存,找到对应的条目,且没有过期,则解析成功。如果没有找到对应的条目,则由运营商的DNS代我们浏览器发起迭代DNS解析请求,它首先是会找根域的IP地址(这个DNS服务器都内置13台根域的DNS的IP地址),找到根域的DNS地址,就会想其发起请求(请问www.baidu.com这个域名的IP地址是多少啊?)根域发现这是一个顶级域com域的一个域名,于是就告诉运营商的DNS我不知道这个域名的IP地址,但是我知道com域的IP地址,你去找他去,于是运营商的DNS就得到了com域的IP地址,又向com域的IP地址发起了请求(请问www.baidu.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.baidu.com这个域名的IP地址,但是我知道baidu.com这个域名的DNS地址,你去找他去,于是运营商的DNS又向baidu.com这个域名的DNS地址(这个一般就是由域名注册商提供的,像网,新网等)发起请求(请问www.baidu.com这个域名的IP地址是多少?),这个时候baidu.com域的DNS服务器一查,诶,果真在我这里,于是就把找到的结果发送给运营商的DNS服务器,这个时候运营商的DNS服务器就拿到了www.baidu.com这个域名对应的IP地址,并返回给操作系统内核,内核有吧结果返回给浏览器,终于浏览器拿到了www.baidu.com对应的IP地址。

2.TCP连接。

       TCP通过三次握手创建连接【保证数据传输的可靠性】,具体说一下三次握手的过程(此处就不细说了)。

3.客户端的浏览器向服务器发起http请求。【请求报文包括请求行、请求报头、空行、正文】在此不再详述

4.服务器对浏览器发过来的请求作以响应。【报文中 包括状态行、响应头部、空行、响应正文】在此也不详述(在这里常见的状态码要记住)

5.浏览器对HTML进行解析

       客户端的浏览器收到服务器的响应之后就按照顺序一个一个地对HTML文件进行解析,构建DOM树,当解析到外部资源文件CSS或JS文件时,会对服务器发送请求,下载资源文件,如果下载的是CSS文件,浏览器会一边下载CSS文件,一边对后面的html文件进行解析,并且构建DOM树,如果下载的是JS文件,那么浏览器就停止对后面html文件的解析,此时就会出现JS页面阻塞的问题。

6.浏览器布局进行布局和渲染。

参考:

HTTP请求报文和响应报文的格式:HTTP协议与HTTPS协议的介绍与区别_Atalanta1的博客-CSDN博客

TCP三次握手的过程详述:详述TCP三次握手和四次挥手的过程。_Atalanta1的博客-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值