HTTP请求过程分析

详解一次HTTP请求过程

基础知识

HTTP协议发展与进展

在这里插入图片描述

HTTP/0.9版本只允许客户端发送GET请求,不支持请求头,只支持纯文本一种内容,服务器只能返回HTML格式的字符串,里面不能插入图片。 具有典型的无状态性,每个事务独立运行,运行完之后就关闭连接。

HTTP/1.0版本任何合适的文件都可以发送。除了GET,还有POST,HEAD方法。支持长连接,但是必须指定keep-alive。增加了头信息。还增加了状态码,多字符集,多部分发送,权限,缓存,内容编码支持。

HTTP/1.1版本keep-alive被默认支持。支持的方法更多。POST请求支持验证请求,100-continue。头部增加host字段,拓展虚拟技术的发展。。

HTTP/2.0版本支持多路复用,一个连接可以发送发个request。支持对header进行压缩。服务器会把一些静态资源推送到客户端,免得再去服务器下载。

常见状态码

1xx(临时响应)
100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分
101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换
2xx (成功)
200(成功) 服务器已成功处理了请求
201(已创建) 请求成功并且服务器创建了新的资源
204(无内容) 服务器成功处理了请求,但没有返回任何内容
206(部分内容) 服务器成功处理了部分 GET 请求
3xx (重定向)
301 Moved Permanently 永久重定向,表示请求的资源已经永久的搬到了其他位置
302 Found 临时重定向,表示请求的资源临时搬到了其他位
303 See Other 表示请求资源存在另一个URI,应使用GET定向获取请求资源
304 Not Modified 虽然304被划分在3XX,但和重定向一毛钱关系都没有
4xx(客户端请求错误)
400(参数语法错误) 服务器不理解请求的语法
401(未授权) 请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应
403(禁止) 服务器拒绝请求
404(未找到)服务器找不到请求的网页
5xx(服务器错误)
500(服务器内部错误) 服务器遇到错误,无法完成请求
502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应
503 Service Unavailable 表示服务器超负载或正停机维护,无法处理请求

HTTP的一次请求过程

一次HTTP的请求可以分为:
域名解析->发起TCP3次握手连接->发起HTTP请求->回复响应请求->浏览器解析HTML代码,下载CSS, JS, image文件->渲染给用户

域名解析

在这里插入图片描述
域名解析过程就是找到对应IP地址的过程。

  1. 先搜索自身浏览器缓存,如果发现没有过期,解析到此结束。否则下一步:
  2. 搜索操作系统的缓存。Linux默认没有,但是可以使用nscd来缓存。如果没有找到下一步:
  3. 到本地的hosts文件里面去找。如果没有就下一步:
  4. 到resolv.conf 找到nameserver对应本地域名服务器的IP地址。继续下一步:
  5. 到根域名服务器去查找
  6. 到com域的顶级域名服务器查找
  7. 到baidu.com权限域名服务器请求,得到IP
  8. 返回给操作系统,缓存起来,返回给浏览器

TCP三次握手

在这里插入图片描述
6个状态位的定义:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号
acknowledge number(确认号)
在这里插入图片描述

  1. A发送SYN要求建立连接,并且处于SYN_SENT状态,等待B的确认回复。
  2. B收到SYN包,发挥小ack=x+1,大ACK=1,seq=y,并且设置自己的状态为SYN_RECV
  3. A收到B的确认包,回复ACK=1,ack=y+1,之后 A和B同时进入ESTABLISHED状态

发起HTTP请求

在这里插入图片描述

应答HTTP请求

在这里插入图片描述

浏览器渲染

在这里插入图片描述

  1. 浏览器解析HTML代码,遇到JS, CSS, image去下载
  2. 解析HTML文件构成DOM树
  3. 解析CSS文件构成渲染树
  4. 浏览器通过reflow(回流)和repain(重绘)布局渲染树并把它绘制到屏幕上

捐献

如果觉得文章对你有帮助,请捐助一二,我将继续完善文章。。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值