2.HTTP流程和报文的介绍

HTTP 流程

当客户端想要和服务端进行信息交互时(服务端是指最终服务器,或者是一个中间代理),过程表现为下面几步:

1.打开一个TCP连接:TCP连接被用来发送一条或多条请求,以及接受响应消息。客户端可能打开一条新的连接,或重用一个已经存在的连接,或者也可能开几个新的TCP连接连向服务端。

2.发送一个HTTP报文:HTTP报文(在HTTP/2之前)是语义可读的。在HTTP/2中,这些简单的消息被封装在了帧中,这使得报文不能被直接读取,但是原理仍是相同的。

GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr

3.读取服务端返回的报文信息:

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)

4.关闭连接或者为后续请求重用连接。

当HTTP流程启动时,后续请求都可以不用等待第一个请求的成功响应就被发送。然而HTTP流程已被证明很难在现有的网络中实现,因为现有网络中有很多老旧的软件与现代版本的软件共存。因此,HTTP流程已被在有多请求下表现得更稳健的HTTP/2的帧所取代。

HTTP 报文

HTTP 报文又称为HTTP 消息,有两种HTTP报文的类型,请求与响应,每种都有其特定的格式且都由以下四个部分构成:起始行、头部、空行、实体部分。

2.HTTP流程和报文的介绍

请求:

HTTP请求的一个例子:

2.HTTP流程和报文的介绍

请求由以下元素组成:

  • 一个HTTP的method,经常是由一个动词像GETPOST 或者一个名词像OPTIONSHEAD来定义客户端的动作行为。通常客户端的操作都是获取资源(GET方法)或者发送HTML form表单值(POST方法),虽然在一些情况下也会有其他操作。
  • 要获取的资源的路径,通常是上下文中就很明显的元素资源的URL,它没有protocol (http://),domain(developer.mozilla.org),或是TCP的port(HTTP一般在80端口)。
  • HTTP协议版本号。
  • 为服务端表达其他信息的可选头部headers。
  • 对于一些像POST这样的方法,报文的body就包含了发送的资源,这与响应报文的body类似。

响应:

HTTP响应的一个例子:

2.HTTP流程和报文的介绍

响应报文包含了下面的元素:

  • HTTP协议版本号。
  • 一个状态码(status code),来告知对应请求执行成功或失败,以及失败的原因。
  • 一个状态信息,这个信息是非权威的状态码描述信息,可以由服务端自行设定。
  • HTTP headers,与请求头部类似。
  • 可选项,比起请求报文,响应报文中更常见地包含获取的资源body。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/http/2186.html

(0)
上一篇 2020年10月1日 21:40
下一篇 2020年10月3日 01:37

相关推荐

  • 5.HTTP请求方法的介绍

    HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作. 虽然他们也可以是名词, 但这些请求方法有时被称为HTTP动词. 1.GET方法 请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据. 2.HEAD方法 请求一个与GET请求的响应相同的响应,但没有…

    HTTP教程 2020年10月5日
    08240
  • 6.HTTP响应状态码(Status Code)一览表

    HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。状态代码由 section 10 of RFC 2616定义…

    HTTP教程 2020年10月6日
    01.9K0
  • 7.HTTP的三种身份认证:基本认证、摘要认证、基于HTTPS的表单认证

    身份认证的方式有很多:Basic、Bearer、Digest、HOBA、Mutual、Negotiate / NTLM、VAPID、SCRAM、AWS4-HMAC-SHA256、OAuth。 1.基本(Basic)认证 基本认证步骤 (1)客户端请求服务器某一受保护的资源。 (2)服务器拒绝提供资源…

    HTTP教程 2021年12月7日
    01.9K0

发表回复

登录后才能评论