一、初识HTTP
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议,即是一种“客户端-服务器端”协议。HTTP是一个基于TCP/IP通信协议来传递数据,TCP的面向连接是传输层的,而HTTP的无连接则是应用层的。HTTP是可扩展的,比如在HTTP/1.0中出现的HTTP headers让协议扩展变得非常容易。HTTP协议是无状态协议,无状态是指协议对于事物处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
二、协议分析-报文
-
方式(method):客户端希望服务器对资源执行的动作。
safe(安全的):不会修改服务器的数据方法。
idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是idempotent的
-
状态码(status-code):状态码是一个由三位数组成的数字,描述了请求过程中所发生的情况。
200 OK-客户端请求成功
301-资源(网页等)被永久转移到其他URL
302-临时跳转
401-UNAUTHORIZED-请求未经授权
404-请求资源不存在,可能是输入了错误的URL
500-服务器内部发生了不可预测的错误
504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应
所有的HTTP报文都可以分为两类,请求报文和响应报文。请求和响应报文的基本报文结构大致是相同的,只有起始行的语法有所不同。请求报文由一个HTTP的method、要获取的资源的路径、HTTP协议版本号、为服务端表达其他信息的可选头部headers组成。响应报文由HTTP协议版本号、一个状态码、一个状态信息、HTTPheaders以及包含获取的资源body组成。
三、协议分析-发展
-
HTTP/2:在应用层和传输层之间增加了二进制分帧,突破了HTTP/1.1性能限制,改进传输性能,实现低延迟和高吞吐量。帧(frame)是HTTP/2最小通信单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。HTTP/2连接都是永久的,而且仅需要每个来源一个连接。
-
HTTPS: HTTPS( HyperText Transfer Protocol over Secure Socket Layer )超文本传输安全协议,HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL。其对数据进行加密,建立一个安全通道,来确保传输过程中的数据安全,其次还会对网站服务器进行真实身份认证。
四、通信方式-扩展
-
WebSocket:浏览器与服务器进行全双工通讯的网络技术。典型场景要求实时性高,例如聊天室。URL使用 ws:// 或wss:// 等开头。
-
QUIC:0-RTT建联(首次建联除外);类似TCP的可靠传输;类似TLS的加密传输,支持完美前向安全;用户空间的拥塞控制,最新的BBR算法;支持h2的基于流的多路复用,但没有TCP的HOL问题;前向纠错FEC;类似MPTCP的Connection migration。