超详细全方位介绍HTTP(介绍一下http)

超详细全方位介绍HTTP(介绍一下http)

浏览次数:
信息来源: 用户投稿
更新日期: 2025-12-28
文章简介

HTTP:HTTP是超?本传输协议,也就是HyperTextTransferProtocol。是一个基于请求与响应,无状态的,Web服务的应用层的协议,常基于TCP传输数据,互联网上应用最为广泛的一种

2025阿里云双十一服务器活动

HTTP:HTTP是超?本传输协议,也就是HyperTextTransferProtocol。是一个基于请求与响应,无状态的,Web服务的应用层的协议,常基于TCP传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。

HTTP超?本协议传输,它可以拆成三个部分:超文本、传输、协议

协议:HTTP是?个?在计算机世界?的协议。它使?计算机能够理解的语?确?了?种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理?式(?为约定和规范)。

传输:就是把?堆东?从A点搬到B点,或者从B点搬到A点。别轻视了这个简单的动作,它?少包含两项重要的信息。HTTP协议是?个双向协议。

超文本:HTTP传输的内容是超?本,它就是超越了普通?本的?本,它是?字、图?、视频等的混合体,最关键有超链接,能从?个超?本跳转到另外?个超?本。

HTTP优点

HTTP的主要优点是简单、灵活、易于拓展、应该广泛以及跨平台。

HTTP基本的报文格式就是header+body,头部信息也是key-value简单?本的形式。

2.灵活和易于扩展

HTTP协议?的各类请求?法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发?员?定义和扩充。同时HTTP由于是?作在应?层(OSI第七层),则它下层可以随意变化。

HTTPS也就是在HTTP所在的应用层与TCP所在的传输层之间增加了SSL/TLS安全传输层,HTTP/3甚?把TCP层换成了基于UDP的QUIC。

3.应用?泛和跨平台

互联?发展?今,HTTP的应?范围?常的?泛,HTTP的应?遍地开花,同时天然具有跨平台的优越性。

HTTP缺点

由于HTTP是无状态、明文传输的因此数据不安全。

无状态的优缺点

状态的好处,因为服务器不会去记忆HTTP的状态,因此不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的CPU和内存用来对外提供服务。

状态的坏处,既然服务器没有记忆能?,它在完成有关联性的操作时会?常麻烦

HTTP的安全问题,可以用HTTPS的方式解决,也就是通过引?SSL/TLS层,使得在安全上达到了极致。

客户:请求、接收和显示Web对象的浏览器;

服务器:对请求进行响应,发送对象的Web服务器。

1.客户发起一个与服务器的TCP连接(建立套接字),端口号为80

2.服务器接受客户的TCP连接

3.在浏览器(HTTP客户端)?与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)

HTTP是无状态的,即服务器并不维护关于客户的任何信息

2.如果服务器/客户端死机,它们的状态信息可能不一致,但二者的信息必须是一致,因此会需要重新连接

3.无状态的服务器能够支持更多的客户端

非持久HTTP

非持久HTTP,最多只有一个对象在,TCP连接上发送,下载多个对象需要多个TCP连接。HTTP/1.0使用非持久连接。

非持久链接:

往返时间RTT(round-trip?time):一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)

响应时间:一个RTT用来发起TCP连接,一个RTT用来HTTP请求并等待HTTP响应

文件传输时间共:2RTT+传输时间

时间长,每个对象要2个RTT;操作系统必须为每个TCP连接分配资源,但浏览器通常打开并行TCP连接,以获取引用对象。

持久HTTP

持久HTTP,多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输。服务器在发送响应后,仍保持TCP连接。在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传送,客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求。HTTP/1.1默认使用持久连接。

持久分为流水线和非流水线。

非流水方式的持久HTTP:客户端只能在收到前一个响应后才能发出新的请求,每个引用对象花费一个RTT。

流水方式的持久HTTP:HTTP/1.1的默认模式,客户端遇到一个引用对象就立即产生一个请求,所有引用(小)对象只花费一个RTT是可能的。

HTTP/0.9

只接受GET一种请求方法,没有在通信中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。

HTTP/1.0

第一个在通信中指定的版本号,至今被广泛采用,特别是在代理服务器中。

超详细全方位介绍HTTP,介绍一下http

当前版本号,持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

但是HTTP/1.1仍有性能瓶颈,如

请求/响应头部(Header)未经压缩就发送,?部信息越多延迟越?。只能压缩Body的部分;

发送冗?的?部。每次互相发送相同的?部造成的浪费较多;

没有请求优先级控制,服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端?直请求不到数据,也就是队头阻塞;

HTTP/2.0

HTTP/2协议是基于HTTPS的,所以HTTP/2的安全性也是有保障的。

1.头部压缩

HTTP/2会压缩头(Header)如果你同时发出多个请求他们的头是?样的或是相似的,那么,协议会帮你消除重复的部分。这就是所谓的HPACK算法:在客户端和服务器同时维护?张头信息表,所有字段都会存?这个表,?成?个索引号,以后就不发送同样字段了,只发送索引号,这样就提?速度了。

2.?进制格式

HTTP/2不再像HTTP/1.1?的纯?本形式的报?,?是全?采?了?进制格式,头信息和数据体都是?进制,并且统称为帧(frame):头信息帧和数据帧。

3.数据流

HTTP/2的数据包不是按顺序发送的,同?个连接连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。每个请求或回应的所有数据包,称为?个数据流(Stream)。每个数据流都标记着?个独?的编号,其中规定客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。

客户端还可以指定数据流的优先级。优先级?的请求,服务器就先响应该请求。

HTTP/2是可以在?个连接中并发多个请求或回应,?不?按照顺序对应。移除了HTTP/1.1中的串?请求,不需要排队等待,也就不会再出现队头阻塞问题,降低了延迟,?幅度提?了连接的利?率。

HTTP/2还在?定程度上改善了传统的「请求-应答」?作模式,服务不再是被动地响应,也可以主动向客户端发送消息。

HTTP/1.1HTTP/1.0的区别

1.persistentconnection(持久连接)

HTTP/1.0:每对请求/响应都需要建立新的TCP连接。

HTTP/1.1:支持持久连接(默认),持久连接的特点是,只要任意?端没有明确提出断开连接,则保持TCP连接状态。

2.Host域

HTTP/1.1在请求消息头多一个Host域HTTP/1.0?则没有这个域,建立TCP连接的时候已经指定了IP地址,而且默认一个IP地址只对应一个主机名,IP地址上只有一个host。

3.请求方法和状态码

HTTP1.1增加了OPTIONS,PUT,DELETE,TRACE,CONNECT这些Request方法。

HTTP/1.0中只定义了16个状态响应码,对错误或警告的提示不够具体。HTTP/1.1引入了一个Warning头域,增加对错误或警告信息的描述。

在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

4.内容协商

为了满足互联网使用不同母语和字符集的用户,一些网络资源有不同的语言版本(如中文版、英文版)。

HTTP/1.0定义了内容协商(contentnegotiation)的概念,也就是说客户端可以告诉服务器自己可以接收以何种语言(或字符集)表示的资源。例如如果服务器不能明确客户端需要何种类型的资源,会返回300(MultipleChoices),并包含一个列表,用来声明该资源的不同可用版本,然后客户端在请求消息中包含Accept-Language和Accept-Charset头域指定需要的版本。

5.带宽优化

HTTP/1.1中在请求消息中引入了range头域它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为206(PartialContent),它可以防止Cache将响应误以为是完整的一个对象。请求消息中如果包含比较大的实体内容,但不确定服务器是否能够接收该请求(如是否有权限),此时若贸然发出带实体的请求,如果被拒绝也会浪费带宽。HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。注意,HTTP/1.0的客户端不支持100响应码。

节省带宽资源的一个非常有效的做法就是压缩要传送的数据。Content-Encoding是对消息进行端到端(end-to-end)的编码,它可能是资源在服务器上保存的固有格式(如jpeg图片格式);在请求消息中加入Accept-Encoding头域,它可以告诉服务器客户端能够解码的编码方式。而Transfer-Encoding是逐段式(hop-by-hop)的编码,如Chunked编码。在请求消息中加入TE头?域用来告诉服务器能够接收的transfer-coding方式。

HTTP/2有什么不足?

HTTP/2主要的问题在于,多个HTTP请求在复个TCP连接,下层的TCP协议是不知道有多少个HTTP请求的。所以?旦发?了丢包现象,就会触发TCP的重传机制,这样在?个TCP连接中的所有的HTTP请求都必须等待这个丢了的包被重传回来。

HTTP/1.1中的管道(pipeline)传输中如果有?个请求阻塞了,那么队列后请求也统统被阻塞住了。

HTTP/2多个请求复个TCP连接,?旦发?丢包,就会阻塞住所有的HTTP请求。

这都是基于TCP传输层的问题,所以HTTP/3把HTTP下层的TCP协议改成了UDP。

Host字段:客户端发送请求时,?来指定服务器的域

Connection最常?于客户端要求服务器使用TCP持久连接,以便其他请求复?。

Content-Length服务器在返回数据时,会有Content-Length字段,表明本次回应的数据长度

Content-Type字段?于服务器回应时,告诉客户端本次的数据格式。

Content-Encoding:说明数据的压缩?法。表示服务器返回的数据使?了什么压缩格式。

HTTP请求报文

HTTP报文有两种类型:请求、响应。

请求行(GET、POST、HEAD命名组成)、首部行换行回车符(表示报文结束)组成。

标签:
5个不错的小型企业网站插件(小型企业网站模板)
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!