报文流
HTTP报文是在HTTP应用程序之间发送的数据块,这些数据是以一些文本形式的(描述报文内容及含义的)元信息开头 + 可选的数据部分。这些报文在客户端、服务器和代理之间流动,描述报文流动方向的术语有:“流入”、“流出”、“上游”、“下游”。所有报文都会向下游流动,这也就意味着:所有报文的发送者都在接收者的上游。 ?都是相对的。
在下图中,对请求报文来说,代理1 位于代理3 的下游,但对响应报文来说,它就位于代理3 的下游。
报文的组成部分
HTTP报文是简单的格式化数据块,每条报文包含一条来自客户端的请求 / 一条来自服务器的响应。
上述两种数据块,由三部分组成:
1.对报文进行描述的起始行(start line)
2.包含属性的首部块(header)
3.可选的、包含数据的主体(bady)
起始行和首部就是由行分隔的ASCII文本。每行都以一个由两个字符组成的行终止序列作为结束,其中就包括一个回车符(ASCII码13)和一个换行符(ASCII码10)?该行终止序列可以写作CRLF。需要知道,稳健的应用程序也应该接受单个换行符作为行的终止,因为存在旧的 / 不完整的HTTP应用程序并不能同时发送回车符和换行符。
主体可以包含文本或者二进制数据,也可以为空。
报文的语法
所有的HTTP报文都可以分为两类:
1)向web服务器请求一个动作的请求报文。
2)将请求的结果返回给客户端的响应报文。
下面简述上图的各个部分