HTTP协议

163 阅读3分钟

HTTP协议.jpg

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是互联网的数据通信的基础。

​ 从客户端到服务器端,从建立连接,然后发起请求,接着服务端响应, 最后断开连接,这是一次完整的HTTP请求。

一、建立连接

​ 客户端向服务端发送请求之前,必须要建立两者之前的连接, 否则在不确定服务器的情况下发起请求,则会丢失。建立连接就是总所周知的三次握手:

三次握手.jpg

首先客户端向服务端发送一个SYN序列通知服务端,它需要建立连接了;

然后如果服务端收到了,并正常做出回应,将回复客户端一个SYN和一个ACK,ACK的值是客户端的SYN+1;

最后客户端收到服务端的回应之后,需要向服务端发送一个ACK(值为服务端SYN+1),表示它收到了服务端的应答。

那么为什么是三次呢,首先如果是1次的话,客户端不能确认服务端是否收到连接请求;2次的话,服务端不能确认 客户端有没有收到回应;所以第3次服务端收到了回应,则通过第2次,第3次客户端和服务端都收到了回应,则可以建立连接;如果更多,则是没必要的。

二、发送请求

​ 建立连接后,则开始发送HTTP请求,HTTP请求包含了:请求行,请求头,空行和请求数据

HTTP请求组成.png

​ 其中的请求方法有很多种,列几种常用的:

GET:获取数据
POST:传输数据,一般用来新增操作
PUT:传输数据,一般用来修改或新增操作;有则修改,无则新增
PATCH:传输数据,部分修改操作
DELETE:删除数据

​ 发送请求的路径是如下:

请求路径.jpg

三、响应请求

​ 发送完请求后由服务端响应,将处理请求后的数据返回给客户端, 响应体和请求体类似:状态行、响应头、空行和响应正文

HTTP响应体.jpg

其中状态码的含义有5种类型:

1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求

四、断开连接

​ 当客户端和服务端交互完毕后,为了不占用资源,则需要断开连接;断开连接服务端和客户端均可发起,采用四次挥手的方式确认断开

四次挥手.png

​ 为什么四次是因为被动方在收到请求后会马上给一个回应,但是还需要确认自己是否还数据要传输,确认后才能发送FIN告诉主动方,我没有数据要发送。

以上就是整个HTTP请求。