HTTP
超文本传输协议 Hyper Text
Transfer Protocol,是符合TCP标准的应用层,以明文方式发送内容,不提供任何方式的数据加密。
请求方法
GET POST PUT HEAD OPTIONS DELETE TRACE CONNECT
请求头
通用头 请求头 响应头 实体头
连接
- 短连接: 1.0默认使用短连接,即每次请求都要重新发起连接,数据交换结束即关闭连接
- 长连接:1.1起默认使用长连接,连接建立后不断开。
各版本
1.0
- 默认使用短连接
- 使用if-modified-since expires来做缓存判断标准
- 存在带宽浪费现象,比如客户端仅需要对象的一部分,服务端将整个对象送来
1.1
- 默认使用长连接
- 引入更多缓存判断标准Etag if-None-Match
- 允许请求资源的某个部分
- 新增了24个状态码
2.0
- 允许多路复用,做到同一个连接并发处理多个请求
- 支持二进制编码
- 将相同的首部进行压缩,不重复传输
- 流量控制
- 支持服务器推送(CSS和JS一起发送),不仅只是客户端发起请求,服务端可以自己发送一些数据。
3.0
1、QUIC (Quick UDP Internet Connections)是基于UDP协议的。
2、解决了 TCP 的队头阻塞问题(某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输)。而 http3.0 中不同的流之间真正的实现相互独立传输,互不干扰。
3、在切换网络时的依旧保持连接。
状态码
状态码 | 解释 |
---|---|
100 | 服务器收到了请求,请客户端继续发送 1XX是1.1版本新定义的,可以优化某些场景,比如:客户端有一个较大的文件需要上传并保存,但是客户端并不知道服务端是否愿意接受这个文件,所以希望在消耗网络资源进行传输之前,先询问服务器的意愿,实际操作为,请求头加上Expect: 100-coninue, 若服务器接受,返回100,否则417 |
200 | 请求成功 |
201 | 成功请求并创建了新资源 |
202 | 已接受请求,但未处理完成 |
203 | 非授权信息 |
204 | 服务器成功处理,但未返回内容 |
301 | 请求的资源已被永久的移动到新URL,返回信息会包括新的URL |
302 | 资源临时被移动,客户端应继续使用原有URL |
303 | 使用GET和POST请求查看其他地址 |
304 | 请求已被允许,但文档的内容并没有改变(缓存) |
305 | 所请求的资源必须通过代理访问 |
307 | 使用GET请求重定向 |
400 | 请求无效,前端数据与后端数据不一致,请求格式不对 |
401 | 当前请求需要用户验证 |
403 | 服务器已经得到请求,但是拒绝执行,比如身份验证不通过 |
404 | 服务器无法根据客户端的请求找到资源 |
405 | 客户端请求中的方法被禁止 |
408 | 服务器等待客户端发送的请求时间过长,请求超时 |
410 | 客户端请求的资源已经不存在 |
413 | 由于请求的实体过大,服务器无法处理,因此拒绝 |
414 | 请求的URL过长 |
415 | 服务器无法处理请求附带的媒体格式 |
416 | 客户端请求的范围无效 |
500 | 服务器内部错误,无法完成请求 |
501 | 这个状态码不常见,意思是未实现,这个解释会给人误导,并不是意味着我们访问了一个未实现的api,而是服务器目前不具备满足您对该内容请求的功能, 比如服务器脱机了 |
503 | 由于超载或系统维护,服务器暂时无法处理客户端的请求 |
505 | 服务器不支持请求的http协议的版本 |
HTTPS
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并未浏览器和服务器之间的通信加密。简单来说是HTTP的安全版。
SSL(Secure Sockets Layer)最初由网景公司设计(1994),用来加密HTTP协议传输的数据.
主要区别
- HTTPS需要到CA申请证书,一般需要一定费用
- HTTPS安全性更高
- HTTP的默认端口是80,HTTPS是443
- HTTP本身是无状态的,非常简单的协议;HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,它是有状态的。
- https更消耗时间和资源(ssl部分需额外花费三倍时间)
- https在SEO方面,谷歌搜索引擎算法中给了https加密的网站更高的排名。
HTTPS的工作原理
- 用户在浏览器输入一个https网址,连接到对应server的443端口
- 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,自己制作的证书需要客户端验证通过才可以继续访问。
这个证书就是一对公钥和私钥。私钥相当于钥匙,公钥相当于锁, - 服务端传送证书给客户端(公钥,相当于把锁给别人,别人可以用这把锁把重要的东西锁起来,然后发给你,因为只有你一个人有钥匙,所以只有你才能看到)
- 客户端解析证书,由客户端的TLS来完成。
TLS/SSL 安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。TLS是SSL的升级版,二者经常混用,小编也说不清楚,总之是先有了SSL1.0 2.0,但各种bug,后来直接推出了TLS1.0,又有了SSL3.0。
那么TLS确认保证公钥不是被篡改的。TLS会确认证书中的颁发机构和过期时间,只要证书是可信的,那么公钥就是可信的。
如果证书没有问题,就会生成一个随机值,然后用公钥对该随机值进行加密。 - 客户端传送随机值给服务端
- 客户端用私钥解密公钥(锁)之后,得到随机值,然后之后的传输都用该随机值所谓私钥进行对称加密传递信息。
对称加密和非对称加密方法列举
- 非对称加密: RSA DSA
- 对称加密: AES RC4
- HASH加密: MD5 SHA1
HTTPS的优缺点
优点
- 安全
缺点
- 握手阶段费时
- https 缓存不如 http 高效,增加数据开销。
- SSL 证书消耗成本,功能越强大的证书费用越高。