HTTP报文

HTTP报文


前言

http是客户端浏览器等与Web服务器之间的应用层通信协议,http协议非常重要,是互联网上应用最为广泛的一种协议,所有www文件都必须遵守这个标准。

一、HTTP报文相关概念

HTTP报文就是用于HTTP协议交互的信息,有请求报文和响应报文。请求端,即客户端的报文为请求报文,响应端,即服务器的叫做响应报文。

它本身是由多行数据构成的字符串文本(用CR+LF作为换行符)。报文大致可以分为报文首部和报文主体两块,两者由最初出现的空行(CR+LF)来划分,报文一定要有报文首部,但不一定有报文主体

HTTP在传输数据时可以按照数据原貌直接传输,也可以在传输过程中通过编码提升传输效率。通过在传输时编码,能有效地处理大量的访问请求,但同时编码的操作需要由计算机来完成,在提高传输速率的同时,不可避免地会因此消耗更多的CPU等资源

二、报文主体和实体主体的差异

通常,报文主体是等于实体主体。不过当传输过程中进行编码操作的时候,实体主体的内容就会发生变化,此时两者便有了差异。

在HTTP通信中,请求的编码实体资源尚未完全传输完成时,浏览器是无法显示请求页面,但在传输大容量数据的时候,可以通过把数据切分成多块,这样能让浏览器逐步显示页面,这种把实体主体分块的方法叫做分块传输编码(chunked)。分块传输编码将其分成多块,每一块会用16进制数来标记大小,实体最后会用“0(CR+LF)”来标记。

传输编码使用 Transfer-Encoding 首部进行标记,在HTTP/1.1 协议里,它只有 chunked 这一个取值,表示分块编码。
在HTTP2.0不支持HTTP/1.1语义下的chunked模式的——因为它的DATA帧是天然的chunked模式,这就是最容易出现问题的地方。客户端请求基本上都是chunked模式,所以当升级到HTTP2后就会出现问题。

三、状态码的类别

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。(来源于百度百科)

状态码由5种类别,通过3位数字中的第一位来区别不同的类别。

类别原因短语
1xxInformational接收的请求正在处理
2xxSuccess请求正常处理完毕
3xxRedirection需要进行附加操作
4xxClient Error服务器无法处理请求
5xxServer Error服务器处理请求出错

几个常见的状态码:
200 OK:表示请求已经正常处理
204 Not Content:请求处理成功,但没有资源
304 Not Modified:资源已找到,但并不符合条件请求(304返回时,不包含任何响应的主体部分,304虽然被划分在3xx类别中,但是和Redirection(重定向)没有关系
400 Bad Request:请求报文中存在语法错误
403 Forbidden:访问被服务器拒绝了
404 Not Found:服务器上没有请求的资源。除此之外,也可以是服务器端拒绝请求并且不想说明理由时候返回的状态码。
503 Service Unavailable:表明服务器暂时处于超负荷或停机维护。

四、通信数据转发程序

通信数据转发程序:代理、网关、隧道

代理

代理是一种具有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。
优点:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志等。
分类基准:
①是否使用缓存?缓存代理:非缓存代理
②是否修改报文?非透明代理:透明代理

网关

网关是转发其他服务器通信数据的服务器,接收从客户端发来的请求时,它就像自己拥有资源的源服务器一样对请求做出处理。
优点:网关的工作机制与代理相似,而网关可以使通信线路上的服务器提供非HTTP协议服务利用网关可以提高通信的安全性,因此可以在客户端与网关之间的通信线路上加密以确保连接安全。

隧道

隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
优点:隧道的目的的确保客户端与服务器进行安全的通信

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

crab_xd

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值