HTTP是什么_HTTP协议_http属于什么协议

详细介绍一下HTTP协议?

HTTP(HyperText Transfer Protocol,超文本传输协议),是一种用于在客户端和服务器之间传输超文本数据的协议,所谓的超文本数据意思就是不单单是文本数据,包括了HTML、图像、视频等内容。主要是用来在Web浏览器与服务器之间进行数据通信,是整个的互联网应用的核心支持技术。

HTTP是运行在应用层上的协议,底层是通过TCP/IP协议进行的支持,同时它也是一个无状态的协议,也就是说每个请求和响应操作都是独立的,服务器不会记住之前请求的状态。虽然HTTP本身不提供身份认证、加密、数据完整性的校验,但是我们可以通过其扩展的出来的其他协议来支持相关的操作,例如比较常用的HTTPS、WebSocket等等。

HTTP协议的基本特性

  • 请求/响应模型:HTTP是基于了请求响应模式来实现的,也就是说由客户端来发起一个请求,然后请求传递到服务端,服务端根据请求要求的内容来返回一个独立的响应给客户端,并且每个请求和响应之间都是相互独立互不影响的。
  • 无状态协议:上面我们提到了HTTP的每次的请求响应都是独立的,也就是说每次请求响应服务器段不会记住上一次请求的状态,而在实际操作中,为了实现跨请求的数据传递,我们可以通过Cookie、Session或其他机制,来保存请求的状态信息。
  • 灵活性:HTTP是一种超文本传输协议, 所以就允许了各种类型的数据的传输,例如可以通过HTTP来传输图像、音频、视频、JSON、XML等多种格式的数据。
  • 无连接性:在 HTTP/1.x 中,每个请求都会建立一个新的连接,响应之后立即关闭该连接。HTTP/2 和 HTTP/3 引入了持久连接和多路复用技术,使得多个请求可以共享同一个连接,减少了连接的开销。
  • 基于文本:HTTP协议虽然可以实现各种数据的传输,但是这些数据的传输一般都是以文本的格式进行处理,也就是说这些数据都可以被人类正常的理解,请求和响应都由一系列的头信息和正文组成,且采用ASCII字符编码。

HTTP协议的工作原理

根据上面的介绍,HTTP的工作流程如下所示。

第一步、客户端发起请求

用户在浏览器中输入一个URL地址,然后浏览器会将这个请求其转化为成一个HTTP的请求发送到服务端,在过程中,请求会通过DNS解析出目标服务器的IP地址,然后建立起TCP连接来实现数据的请求和响应操作。

第二步、服务器接收请求

当服务器端接收到客户端的请求之后,会开始根据请求的内容来准备需要响应的数据,例如解析请求头、匹配资源、执行业务逻辑、组装响应数据等操作。

第三步、服务器返回响应

结果组装好之后,服务器端会将处理的结果,例如HTML页面的内容、图像、JSON数据等内容打包成一个HTTP的数据响应包然后通过数据响应操作返回给客户端。在这个响应数据包中往往会包括状态码、响应头以及响应体等数据。

第四步、客户端处理响应

当客户端接收到了相应数据之后,浏览器就会根据相应头携带的参数对相应数据进行解析,并将其渲染成页面,或将数据交给应用程序进行处理。

HTTP 请求与响应

上面我们提到了HTTP是一组请求和响应的组合,那么下面我们就来详细介绍一下HTTP的请求和响应。

HTTP的请求

HTTP的请求是由客户端发起,向服务端所要数据的方式,一个标准的HTTP请求包括了如下的几个部分。

  • 请求行:主要包含了请求的方法、请求目标、HTTP的版本信息等内容,如下所示。
GET /index.html HTTP/
  • 请求头:主要包含了对请求元数据的描述,例如客户端类型、支持的响应格式等,如下所示。
Host: www.example.com
User-Agent: Mozilla/
Accept: text/html
  • 请求体:主要就是用来发送实际的请求数据,当然请求体只会在某些方法中存在,例如比较常见的POST请求、PUT请求都会有请求体。

HTTP的响应

HTTP的响应内容,主要是服务端根据客户端的请求来组装返回给客户端的数据,主要包括了如下的几个部分。

  • 响应行:主要包括HTTP版本、状态码和状态消息等信息,如下所示
HTTP/ OK
  • 响应头:响应头中,主要包含了一个响应的元数据信息包,例如响应的类型、内容长度、缓存策略等,如下所示
Content-Type: text/html; charset=UTF-8
Content-Length: 
  • 响应体:响应体中就是真正由服务端返回的真实数据,例如HTML页面、图片、JSON 数据等。

HTTP协议的版本

到目前为止,HTTP协议有多个版本,每个版本都是对上一个版本的优化以及改进,下面整理了一些目前市面上比较常见的版本,如下所示。

  • HTTP/:这个版本是HTTP最早的版本,实现非常简单、基础,但是效率较低,尤其是在网络延迟高的情况下,效率非常低。
  • HTTP/:这个版本是在 大多数的Web应用中使用的HTTP的版本,相较于上一个版本,增加了持久连接、管道化等特性来提高了协议处理的性能。
  • HTTP/2:这个版本相较于HTTP/1.x版本引入了多路复用、头压缩和服务器推送等技术,极大的提高了Web应用的访问性能,尤其是在多资源请求的场景下,这种性能的提升会非常明显。
  • HTTP/3:这个版本是基于QUIC协议实现的HTTP版本,优化了连接建立和数据传输的效率,进一步降低了延迟。

总结

HTTP协议是Web应用层面上一个比较重要的通信协议,通过请求和响应模型使得客户端和服务器能够互相交换数据,随着互联网技术的不断发展,经历了多个版本的演进,每一次版本的提升都旨在提升Web性能和用户体验。有兴趣的读者可以深入的研究一下网络层协议,更加深入的了解HTTP协议。

原文链接:,转发请注明来源!