HTTP各版本简介

本文概述了HTTP从0.9到2.0的版本改进,包括HTTP1.0的请求方法、缺点及GET与POST的区别,HTTP1.1的长连接与头部优化,HTTP2.0的头部压缩和多路复用。此外,还详细介绍了HTTPS的建立过程、与HTTP的安全性差异,强调了HTTPS在数据加密和身份验证上的重要性。

HTTP0.9

只支持GET请求,不支持请求头

HTTP1.0

1. 请求方法

GET,POST,HEAD

2. 缺点
  1. 无状态:服务器不会记录上一次请求的任何内容,会出现类似于重复验证身份的情况。(可通过cookie, session, token解决)
  2. 短连接:每个http请求都需要建立一次TCP连接,多次TCP连接握手耗时。
  3. 不安全:数据以明文传输,容易被窃取;没有对访问对象进行身份验证,容易出现假网站情况;报文完整性难以验证,容易出现被插入恶意广告等情况。
3. GET vs. POST
  1. GET 主要用于从服务器获取资源;POST 主要是利用服务器上的一段代码来做处理,并获取处理结果。
  2. 从格式上看,GET请求参数在URL上,一般有长度限制(长度限制是来自于浏览器,HTTP协议本身无限制。大部分为2K);POST请求参数在Body中,一般无长度限制。
  3. GET不会修改服务器上的数据,且是等幂方法(多次发起同一GET请求,请求结果一致);POST可能会修改服务器上的数据,且是非等幂方法(多次发起同一POST请求获得的结果一般不同)。
  4. GET在请求资源时效率较POST高。
  5. POST安全性较GET高,GET将请求参数直接置于URL中,用户可以在浏览器历史记录的URL中直接获取类似于账号密码等数据。

HTTP1.1

1. 改进
  1. 新增请求方法 PUT,PATCH,DELETE,OPTIONS,TRACE,CONNECT
  2. 新增头部(Cache-Control、ETag、If-None-Match…)以优化缓存策略
  3. 带宽优化:新增Range头部,允许请求资源的某一部分(响应码206, Partial Content)。断点续传
  4. 支持长连接:新增Connection:keep-alive头部,使得一个TCP连接允许进行多次http请求。(注意长连接不会一直保持,服务器会限制连接时间、最大请求次数等;客户端在判定传输数据完成后会主动断开连接(利用Range判断))
  5. Pipelining 数据的管道运输方案(串行数据请求-响应):
    非流水线:客户端需等待上一次请求响应完成后才可发起下一次请求;
    流水线:客户端可以连续按顺序发起多次请求,服务端也会按顺序连续响应(每次请求可节省一个RTT);但会出现队头堵塞的情况
  6. Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
  7. 新增一些响应码。

HTTP2.0

1. 改进
  1. 头部压缩:对于多个相似请求,可以在客户端与服务器端做一个约定:共同维护一张Header字段的索引映射表,使用索引值来代替Header字段,进而实现头部的压缩。
  2. 多路复用并行数据请求-响应)
    客户端可以并行发起多个请求,服务器也会并行响应,服务器会对每个请求使用类似时间片的方式处理,这样可以避免HTTP1.1中的队头堵塞情况。
  3. 数据统一使用二进制编码
  4. 每个请求/响应的数据包会有相应的编码并且不会再连续发送,可以通过设置优先级使得某些请求/响应数据包优先处理。
  5. 支持服务器推送

HTTPS

https就是安全的http,在传输层与应用层中间对http数据包新增SSL/TLS安全处理,对http传输数据进行安全加密以及所访问服务器进行身份验证。HTTPS使用新特定端口443

1. 过程

一、建立TCP连接
二、协商加密方法
在这里插入图片描述

  1. 客户端向服务器(443端口)发起HTTPS请求,携带客户端支持的加密算法列表等。
  2. 服务器选择好合适的加密算法,并携带服务器的CA认证证书(含非对称加密公钥),发送给客户端。
  3. 客户端验证CA证书,随机生成一个对称加密私钥并使用证书的公钥进行非对称加密,发送给服务器。
  4. 服务器使用与CA证书公钥配套的私钥对数据进行解密(非对称),得到对称加密私钥,对数据进行对称加密并发送给客户端。

三、数据传输。此后,客户端与服务器使用对此加密私钥来加密数据,进行数据传输。

2. HTTPS和HTTP的区别
  1. 常用端口不同。http是80端口,https是443端口。
  2. 安全性不同。
    (1)数据传输方式:http明文传输,https密文传输
    (2)身份验证:http无,https需要CA证书要身份以保证客户端请求到服务器端之后,传回的响应是来自于服务器端。
    (3)数据完整性保护:http无,https有。
  3. HTTPS=HTTP+加密+认证+完整性保护。

参考
HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事
HTTPS请求的整个过程的详细分析
HTTPS加密(握手)过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值