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

1 篇文章 0 订阅

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 服务不可用时,出现此结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣广泛的程序猿

有钱的捧个钱场,谢谢各位!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值