首页 > 编程知识 正文

http是指文本传输协议,http是一种 传输协议

时间:2023-05-03 23:29:39 阅读:255410 作者:2998

一、HTTP概念

1、HTTP是超文本传输协议的缩写,是应用层上的一种客户端/服务端模型的通信协议。

2、HTTP是一个基于TCP/IP通信协议来传递数据(如HTML 文件, 图片文件, 查询结果等)。

二、HTTP的特点

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
2、灵活:HTTP允许传输任意类型的数据对象。
3、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,后续处理需要前面的信息,则它必须重传。

二、HTTP1.0和HTTP1.1的区别

长链接

HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

HTTP1.1默认支持长连接,从而减少多次建立TCP链接的花销,提高性能。

节约带宽

HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。

客户端如果接受到100,才开始把请求body发送到服务器。

当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。

HOST头处理

HTTP1.0没有host域。

HTTP1.1新增Host请求头,主要用来实现虚拟主机技术

虚拟主机可以利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。比如我们访问 https://www.google.com 时,看到的是 Google 的首页而不是百度或者淘宝的首页?原因就是 Host 请求头决定着访问哪个虚拟主机。

缓存处理

在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准。

HTTP1.1引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

三、HTTP1.1和HTTP2.0的区别

二进制格式

HTTP1.x的解析是基于文本。文本的表现形式多样性,解析起来很复杂。

HTTP2.0采用二进制,只认0和1的组合,提升了解析的精度和速率。

多路复用

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。

HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。

数据压缩

HTTP1.1不支持header数据的压缩

HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,传输速度更快。

服务器推送

当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。

四、HTTP请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行请求数据4个部分组成,下图给出了请求报文的一般格式。

1、请求行

请求行分为三个部分:请求方法、请求地址和协议版本

请求方法

HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。

请求地址

URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

组成:<协议>://<主机>:<端口>/<路径>

协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

2、请求头部

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
常见请求头如下:

3、空行

请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

4、请求数据

可选部分,比如GET请求就没有请求数据,POST方法会有请求数据。

五、HTTP响应报文

HTTP响应报文主要由状态行响应头部空行以及响应数据 4个部分组成。

1、状态行

由3部分组成,分别为:协议版本,状态码,状态码描述。

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述。

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

2、响应头部

与请求头部类似,为响应报文添加了一些附加信息。


3、响应数据

用于存放需要返回给客户端的数据信息。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。