HTTP的工作原理,报文的组成结构

Http协议通常是运行在TCP的基础之上的,是一个简单的事务性协议,采用请求/响应模型,而在TCP上传输的数据是有标准格式的,客户端发送的是请求报文,服务端返回的是响应报文

一、Http请求/响应的步骤

1、客户端转接到服务端
客户端(一般为浏览器)与服务端的HTTP端口(一般为80)建立一个TCP(套接字)连接。TCP连接的建立需要三次握手。
2、客户端发送Http请求
通过建立的TCP连接,客户端向服务端发送请求报文(有规定格式的传输数据),一个请求报文由4部分组成,分别是:请求行、请求头部、空行和请求数据。
3、服务端接收请求报文,并返回响应报文
服务端接收并解析请求报文,定位到资源,进行操作,然后将操作后的资源复本,也就是响应报文(有规定格式的传输数据)写到TCP中,由客户端读取。一个响应报文也是由4部分组成,分别是:状态行、响应头部、空行和响应数据。
4、释放TCP连接
若connection模式为close,则服务器会在响应结束后直接关闭TCP连接,客户端被动关闭连接,释放TCP连接,一个请求到此结束;若connection是keep-alive,那么该TCP连接会保持一段时间,在该时间内服务端可以继续接收请求。(http/1.x和http/2.0中的keep-alive有所差别,前者需按序执行才会复用TCP,后者针对同域名使用同一个TCP)

二、Http请求报文(Request)结构

在这里插入图片描述
POST请求例子,使用Charles抓取的request
POST / HTTP1.1
Host:www.postrequst.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley
第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。

三、Http响应报文(Response)结构

在这里插入图片描述
Response响应报文例子
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<此处为html结构数据>

四、请求返回状态码

200 OK:当您的操作将在响应正文中返回数据时,出现此结果。

204 No Content:当您的操作成功,但不在响应正文中返回数据时,出现此结果。

304 Not Modified:(重定向) 当测试实体自上次检索以来是否被修改时,出现此结果。

403 Forbidden:客户端错误

401 Unauthorized:客户端错误

413 Payload Too Large:(客户端错误) 当请求长度过长时,出现此结果。

400 BadRequest:(客户端错误) 当参数无效时,出现此结果。

404 Not Found:(客户端错误) 当资源不存在时,出现此结果。

405 Method Not Allowed:(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。

412 Precondition Failed:客户端错误

501 Not Implemented:(服务器错误) 当未实施某个请求的操作时,出现此结果。

503 Service Unavailable:(服务器错误) 当 Web API 服务不可用时,出现此结果。

发布了13 篇原创文章 · 获赞 0 · 访问量 525

猜你喜欢

转载自blog.csdn.net/babdpfi/article/details/105161002