一、报文流
HTTP报文是在HTTP应用程序之间发送的数据块,这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义。这些报文在客户端、服务器和代理之间流动。
1、报文流入源端服务器
http使用术语流入(inbound)和流出(outbound)来描述事务处理的方向;报文流入源服务器,工作完成后,流回用户的Agent代理中。
2、报文向下游流动
HTTP报文会像河水一样流动,不管是请求报文还是响应报文,所有报文都会向下游流动。所有报文的发送者都在接受者的上游。
二、报文的组成
HTTP报文是简单的格式化数据块,每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。它们由三个部分组成:对报文进行描述的其实行、包含属性的首部块、以及可选的、包含数据的主题部分。
起始行和首部就是由行分隔的 ASCII文本。每行都以一个由2个字符组成的行终止序列作为结束,包括一个回车符(ASCII码13)和一个换行符(ASCII码10),这个行终止序列可以写为CRLF。(稳健的应用程序也应该接受单个换行符作为行的终止)
实体的主体和报文的主体是一个可选的数据块。与起始行和首部不同的是,主体中可包含文本或二进制数据,也可以为空如上图,Content-type行说明了主体是一个纯文本文档,Content-length说明了主体有19字节。
1、报文的语法
HTTP报文分为请求报文和响应报文。请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求和响应报文的基本报文结构相同。
请求报文的格式
<method><request-URL><version>
<headers>
<entity-body>
响应报文的格式
<version><status><reason-phrase><headers>