HTTP实用指南 | 青训营笔记

56 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

HTTP概述

概念

  • HTTP:(Hyper Text Transfer Protocol),超文本传输协议

  • HTTP是应用层协议

  • HTTP是可靠传输协议,基于TCP/IP协议“尽量”保证数据送达

  • HTTP使用了请求响应模式,客户端主动发送请求,服务端回复请求

  • HTTP是简单可扩展的,可以任意添加头字段实现任意功能

  • HTTP本质上是无状态的,每个请求都是相互独立,毫无关联的,协议不要求客户端和服务端记录请求相关的信息

TCP IP DNS

与HTTP密不可分的协议:TCP,IP,DNS

  • 确保可靠性传输的TCP协议:TCP位于传输层提供可靠的字节流服务,TCP通过三次握手建立连接。

  • 负责传输的IP协议:作用是把各种数据包传送给对方,要保证确实传送到对方那里,两个重要的条件是IP地址和MAC地址

  • 负责域名解析的DNS协议:DNS将域名转换为IP地址。

各协议与HTTP关系如图所示:

URL与URI

  • URL:统一资源定位符,表示资源的地点

  • URI:统一资源标识符,用字符串表示某一互联网资源,所以URL相当于URI的子集

协议分析

HTTP 1.0/1.1区别

  • 长连接HTTP1.0中是默认非持久连接的,每次通讯都要重新建立一个连接,可以通过keep-alive参数来设置成长连接,但HTTP1.1中是默认持久连接的,就可以发送多个请求,提高了性能。

  • 节约宽带:HTTP1.1支持只发送header信息,如果服务器认为客户端有权限请求服务器,返回状态码100,否则返回401客户端接收到100,才能开始发送body信息,节约了宽带。(HTTP还支持传送内容的一部分,这样当客户端已经有一部分资源的时候,只需要向服务端请求另一部分资源)

  • HOST域:HTTP1.1才支持HOST域,即Web Server上的多个虚拟栈可以享受同一个IP和端口

  • 错误通知的处理:HTTP1.1新增了24个错误状态状态码,如409(请求的资源与当前资源状态冲突),410(服务器的某个资源被永久性删除)等

  • 缓存策略:在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略

HTTP 1.1/2.0区别

  • 多路复用:HTTP2.0运用了多路复用的技术,做到同一个连接并发处理多个请求,并发请求的数量比HTTP1.1大了好几个数量级

  • 数据压缩:HTTP2.0支持header数据的压缩,这样数据体积小了,在网络上传输就会更快。

  • 服务器推送:为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

  • 新的二进制格式:HTTP1.x的解析都是基于文本,文本的格式具有多样性且由诸多缺陷,HTTP2.0的文本格式改用二进制格式,更为简单,且更为稳定和安全。

HTTP方法

image.png

常用请求头和响应头

image.png

image.png

HTTP状态码

  • 200:客户端请求成功

  • 301:永久重定向,资源(网页等)被永久转移到其他URL

  • 302:临时重定向

  • 401:请求未经授权

  • 404:请求资源不存在,可能是输错了URL

  • 500:服务器内部发生了不可预期的错误

  • 504:网关或者代理的服务器无法在规定的时间内获得想要的响应

HTTPS

HTTP + 加密 + 认证 + 完整保护 = HTTPS

  • 使用两把密钥的公开密钥加密:使用一对非对称的密钥,一把私有密钥,一把公开密钥,使用公开加密的方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息之后,用自己的私有密钥进行解密

  • 采用混合加密模式:HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密模式。若密钥能够实现安全交换,则会考虑仅使用公开密钥加密的方式来通信,但是与共享密钥加密的方式速度更慢。

  • 经过TSL/SSL加密