一、网络通讯HTTP协议
HTTP协议是基于TCP协议出现的,在TCP的基础上规定了Request-Response的模型,决定了通讯必须由浏览器端发起的,首先来了解下HTTP协议的格式:
二、HTTP协议格式
HTTP协议大致可以分成以下部分:其中path是请求路径、version是固定的字符串,依次介绍下面的每个部分:
三、HTTP Method 请求方法
在requestline里面的方法部分,表示HTTP的操作类型,常见的几种请求方法如下:
-
GET:浏览器通过地址访问页面均属于get请求
-
POST:常见的表单提交
-
HEAD :跟get类似,区别在于只返回请求头
-
PUT:表示添加资源
-
DELETE:表示删除资源
-
CONNECT: 多用于HTTPS和WebSocket
-
OPTIONS
-
TRACE
四、HTTP Status code状态码
常见的状态码有以下几种:
-
1xx:临时回应
-
2xx:请求成功,如200
-
3xx:请求目标有变化,如301和302表示临时和永久重定向,304表示客户端没有更新内容
-
4xx;请求错误,如403无权限,404访问的资源不存在
-
5xx:服务端错误,如500服务端错误,503服务端暂时错误等
五、HTTP HEAD(HTTP头)
HTTP头可以看做是一个键值对,在HTTP标准中,Request Header如下图:
Response Header如下图:
六、HTTP Request Body
HTTP请求的body主要用于表单的提交,常见的body格式:
-
application/json
-
application/x-www-form-urlencoded:使用form标签提交的html请求,默认产生
-
multipart/form-data:当有文件上传时,使用的格式
七、HTTPS
HTTPS=HTTP+加密处理(一般是SSL安全通信线路)+认证+完整性保护
- 客户使用https url访问服务器,则要求web 服务器建立SSL链接。
- web服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
- 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
- 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
web服务器通过自己的私钥解密出会话密钥。
web服务器通过会话密钥加密与客户端之间的通信。
八、HTTP2.0的新特性
-
http2.0是基于https的,天然具有安全特性,通过http2.0的特性可避免单纯使用https的性能下降
-
采用二进制而非文本格式,二进制协议解析起来更高效
-
采用多路复用,即为同一个tcp连接上可以建立多个http连接;另外多路复用中也支持了流的优先级,允许客户端告诉服务器哪些内容是更优先级的资源,可优先传输。
-
使用报文头压缩,降低了开销
-
可以让服务器主动向浏览器推送消息,支持服务端推送,也就是服务端可以对客户端有多个响应
九、HTTP1.1的新特性
-
默认持久连接:使用了keep-alive的机制,将多个http请求合并为1个,它可以在传输数据后仍然保持连接,当客户端再次获得数据时,直接使用刚刚空闲下来的连接,而无需再次握手。低线路负载,提高传输速度。只要客户端/服务端中任意一端没有明确指出断开TCP连接,就一直保持连接,可以多次发送HTTP请求。
-
管线化:客户端可以同时发送多个HTTP请求,而不用一个个等待响应。