HTTP报文结构
HTTP报头结构:请求报文和响应报文,请求报文是请求行,响应报文是状态行。
请求报文和响应报文都是由四部分组成的
(1)报文头(initial line),例如GET http://www.baidu.com/favicon.ico HTTP/1.1表示请求http://www.baidu.com/favicon.ico这个文件,用的是HTTP/1.1协议
(2)0个或者多个请求头(header line),例如Accept-language: en
(3)空行
(4)可选消息
请求报文:请求行、首部行,空行,信息主体
响应报文:状态行,首部行,空行,信息主体
http使用的是无状态协议:
无状态协议:http不要服务器保留(记忆)客户端任何状态信息。这样服务器端设计会变的简单。
Keep-Alive模式:
我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用Keep-Alive;
http 1.1中默认启用Keep-Alive,如果加入"Connection: close ",才关闭。目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep- Alive连接就看服务器设置情况。
决定请求报文的作用有五大因素:
请求报文的作用和类型由方法决定。
url资源定位符:请求方法的操作对象
版本:http1.0还是http1.1版本。
CRLF:回车空格。
信息主体:一般请求报文没有信息主体,只有在想服务器发送数据的时候,才会有信息主体。
响应报文格式:
(1)响应报文的第一行是状态行:http版本,状态码,短语。
(2)状态行包括:http的版本,状态码,短语。其中,状态码是对客户端的反馈。
(3)短语:用来解释状态码的。
五种状态:
- 服务器给客户端的状态:我知道了,我正在处理
- 成功了
- 我还需要其他资源才能处理
- 你发错了
- 我不能解决