当前位置: 首页 >应用方案 >技术应用 >

HTTP超文本传输协议详解

HTTP协议,全称为超文本传输协议,其HTTP几个缩写字母的含义为(HyperTest Transfer Protocol),本质上是一种用于分布式,协助式的信息系统应用层协议,也是我们所熟悉的万维网的通讯基础。

HTTP的诞生年代并不久远,在1989年由欧洲的核子研究组织(CERN)发起,由万维网协会(W3C)与互联网工程组(IETF)讨论协调,多方共同制定下才有了HTTP1.1作为第一个正式发表的标准。

HTTP协议

HTTP本质上是一种客户端(用户端),与服务器端(网站)进行数据的请求和应答的标准,相当于标准的数据交互必须满足这一统一标准,来方便各方对数据的解析与使用,而HTTP作为一种架设在TCP通信层之上的应用层协议,相当于对TCP传输的这类数据做了相关的规范,实现一统。比如我们访问某一个网站,那么客户端会向服务器发起一个HTTP的请求到指定的端口(通常为80端口),那么服务器在收到这个标注的HTTP请求后,需要对这个请求产生应答,而应答的内容则是服务器上存储的HTML文件(也就是网页上看到的内容)和图像数据,这些回复同样必须满足HTTP标准,否则回复给客户端的数据是无法正常解析的。

HTTP工作流程

前面已经概括性地说明了HTTP的工作流程,核心就是请求与回复的标准,也提到了其是建立在TCP层上的一个应用层协议,那么他们详细的交互过程是怎么样的呢?

首先第一步,客户端需要先连接到指定的web服务器,当你打开浏览器输入网址访问时,浏览器会在后台创建一个TCP客户端,向服务器端请求连接,端口就是前面讲到的,一般为80端口。

HTTP客户端访问

第二步,后台需要进行HTTP组包,也就是HTTP协议的核心,一则数据,到底长什么样,需要有什么标准,才是协议的本质,比如如下一则请求信息,他应当包含有这些部分。

HTTP组包

这样一则数据将会被发送至服务器,服务器需要在解析前面部分后对数据部分进行回复,需要注意的是,服务器是不对来访数据进行保存的,也没有重发机制,所以请求失败是不可逆的,如果失败需要重新发起请求。

HTTP服务器

第三步,服务器需要对数据进行返回,返回数据同样需要满足HTTP的协议标准,比如如下一则回复数据:

HTTP的协议标准

当客户端收到了来自于服务器的返回后,需要根据HTTP头部对整个协议包进行解析,如果解析正确,就可以取出数据部分进行使用了,这个数据部分可以是多种类型,比如像是上图的请求类型,是设备向服务器发起请求,想要获取到此时设备需要连接的MQTT服务器的信息以及设备本身需要接入mqtt服务器所需的三要素,这种请求也可以返回HTML格式的文档,也就是我们熟悉的网页文件,浏览器收到这个文件解析出来,就可以显示到屏幕上,成为了我们所见到的网页,这种数据也可以是文件,图像等,相当于协议只是载体,一个拥有标准的载体,其承载的数据类型是可以不同的。

最后一步,HTTP是一种默认的短链接协议,众所周知TCP层是面向连接的,但是封装成HTTP用户层协议后,再发起数据请求,服务器返回数据,客户端解析出正常数据后,是需要断开连接的,这样也是为了减少服务器的压力。

最后是需要说明一下HTTPS,HTTP传输协议虽然应用广泛,但是其本质是一种明文协议,也就是协议本身有着不小的安全隐患,其数据容易被截取并解析,于是HTTPS应运而生,其本质就是在HTTP协议上又增加了一层加密层,对数据进行加密,加密方法多种多样,客户端与服务器端双方根据加密所需的秘钥,对数据进行加密与解密,来得到正确的数据。

HTTP协议应用

HTTP传输协议到目前为止所有的版本可以分为HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 2.0、HTTP 3.0,其中普遍应用的是HTTP 1.1版本,正在推进HTTP 2.0版本,以及未来的HTTP 3.0版本,HTTP 3.0协议利用QUIC作为底层支撑协议,其融合UDP协议的速度性能与TCP的安全可靠,解决了HTTP 2.0中引入的一些缺点,优化了互联网的传输体验

今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号(微信号:cdebyte进行了解,也可以直接拨打400电话咨询技术专员!

https://www.wjx.cn/jq/84863372.aspx