Skip to content

HTTP是什么

在浏览网页时,我们常常会和HTTP打交道,目前绝大多数启用了HTTPS,但HTTPS是HTTP传输协议的一族。HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。
可以这么说HTTP是互联网早期的产物,一直沿用至今,可以说HTTP是互联网的基石。互联网发展到今天HTTP协议的重要性不言而喻,并且随着互联网不断的发展,现在的HTTP协议已经发生很多变化,从版本到规范,以及安全性。
HTTP是一种无状态的协议,基于TCP实现,但目前也有基于UDP实现的新版协议,如QUIC,但目前主流的还是基于TCP的HTTP协议,因为早期的浏览器版本并不支持QUIC,或者很多HTTP客户端还没有为QUIC的诞生做好准备,后续我们会为大家介绍QUIC协议,但再此之前我们任然需要对HTTP进行详细介绍。开发者熟练掌握HTTP协议的基础知识十分必要,这将大大影响到你的网站或者任何基于HTTP传输的接口的安全性或者可靠性。

HTTP与HTTPS的差别

HTTPS是HTTP协议的安全版本,它使用SSL(安全套接字层,Secure Sockets Layer)或TLS(传输层安全,Transport Layer Security)来加密数据传输,是HTTPS和HTTP之间最大的区别。
HTTP和HTTPS使用完全相同的URL和请求-响应架构,并且都基于原生的TCP协议,但是HTTP协议的数据传输是明文的,而HTTPS协议的数据传输是加密的。早期,互联网对HTTPS的支持并不广泛,所以常常听到数据被盗,网站被劫持或者篡改的情况发生,实际上浏览器对HTTPS的推行至关重要,早期的HTTPS仅在银行,金融类或者政府等安全要求较高的网站使用,由于体验不佳,(HTTPS常常要经过多次验证、如证书可用性、签发成本、兼容性等)和浏览器的性能影响,HTTPS直到现在才被大范围普及。

了解HTTP的版本演变

HTTP自发布以来,从最初的版本到现在已经经过很多演变,早期的HTTP版本十分简单并且安全保证有限。从最初的仅支持GET到支持POST,到现在PUT DELETE 等方法的支持。以及消息体的演变,都是互联网不断发展的需求演变。现在,我们将最初的版本称之为HTTP/0.9——单行协议,这是因为最初版本的 HTTP 协议并没有版本号,于是后来将它用0.9和现在的版本区别开来

HTTP/0.9

这是最早的HTTP协议,当时该协议的设计仅支持GET,并没有POST的支持描述,因为早期的互联网交互体验设计并不强,在数据传输方面十分有限,以唯一可用方法 GET 开头。对相应的数据结构,只包含响应文档本身,那时候还没有请求头,响应的数据接口等规范和设计思想,HTTP的设计仅仅是为了完成请求数据这个需求展开,甚至没有状态码或错误代码

GET /index.html HTTP/1.1

HTTP/1.0

HTTP1.0是第一个正式发布的HTTP协议版本,它支持GET和POST两种方法,并且支持响应头,状态码,错误代码等。

GET /index.html HTTP/1.0
Host: www.example.com

HTTP/1.1

HTTP/0.9 协议十分有限,对于数据的交互有很大的局限性,在实际使用过程中我们很难区分这是一个正常的请求或是发生错误。以及在数据传输的过程中GET方法极为有限,所以HTTP1.1 协议对GET和POST方法进行了扩展,并且对数据传输的格式进行了扩展,增加了响应头,状态码,错误代码等。HTTP1.1是2.0的垫脚石,HTTP1.1对安全性也有提升,在这个版本中还加入了HTTPS的支持。

GET /index.html HTTP/1.1
Host: www.example.com
Accept: text/html

HTTP2.0

HTTP2.0 协议是HTTP协议的下一代版本,它支持二进制传输,并且支持多路复用,在传输层使用 TCP 协议,在应用层使用 HTTP2.0 协议。相对于较早的版本,HTTP2.0 协议在安全性,性能,传输效率等方面都有了很大的提升。尤其是缓存,链接复用等。

GET /index.html HTTP/2.0
Host: www.example.com
Accept: text/html

HTTP3.0

HTTP3.0 协议是HTTP协议的最新版本,它支持二进制传输,并且支持多路复用,在传输层使用 UDP 协议,在应用层使用 HTTP3.0 协议。实际上HTTP3.0是基于QUIC协议的,QUIC协议是HTTP3.0的底层传输协议,它基于UDP协议,并且支持多路复用,在传输层使用 UDP 协议,在应用层使用 HTTP3.0 协议。相对于TCP版本的HTTP协议,HTTP3.0减少了握手,大大提升了传输性能,不过对于大多数客户端来说并没有做好兼容的准备,所以QUIC对于目前的互联网现状来说是兼容方案,绝大多数的浏览器都已经支持,只有部分非浏览器开发时使用的请求库还没有完全支持,或者需要手动适配后在客户端支持。

GET /index.html HTTP/3.0
Host: www.example.com
Accept: text/html

HTTP的用途

HTTP协议是互联网的基石,它定义了互联网上数据传输的规范,是互联网上数据传输的基础。HTTP协议的用途十分广泛,从最早的互联网数据传输,到现在的互联网数据传输,再到现在的互联网数据传输,HTTP协议都是不可或缺的。
`

最后

对于以上版本的演变我们只是轻描淡写的方式告诉大家差异但显然这样是不行的,在后续的教程中,我们将详细介绍HTTP协议的各个版本,并且会介绍HTTP协议的各个特性历史,以及HTTP协议的各个应用场景。接下来的课程中,我们将介绍HTTP的传输原理,从而让大家了解HTTP的实现过程,对HTTP基础知识有更加深入的了解。

仅用于培训和测试,通过使用本站代码内容随之而来的风险与本站无关。版权所有,未经授权请勿转载,保留一切权利。
ICP备案号:滇ICP备15009214号-13   公安网备:滇公网安备 53312302000061号