认识HTTP报文

HTTP:超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。

报文流:流入与流出来描述事务处理。
报文的组成(三个部分):对报文进行描述的起始行,包含属性的首部块,以及可选的、包含数据的主体部分。

请求

请求行

一个方法(GET等)和一个请求URL,还可以包含HTTP的版本(可选)

请求方法

HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新

Bug:规则,一组HTTP首部总是应该以一个空行(单个CRLF)结束。客户端和服务器都应该接收那些最后没有那个CRLF的报文。

请求报文

Accept 请求报头域用于指定客户端接受哪些类型的信息。

Authorization 请求报头域主要用于证明客户端有权查看某个资源。

User-Agent 用户代理,例如游览器,系统等等

响应

响应三部分组成:状态行,消息报头,响应正文

状态行

HTTP-Version Status-Code Reason-Phrase CRLF

状态码由三位数字组成,第一位数字表示响应的类型。
1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
2xx:表示服务器已成功接收到请求并进行处理;
3xx:表示服务器要求客户端重定向;
4xx:表示客户端的请求有非法内容;
5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

状态码为客户端提供了一种理解事务处理结果的便捷方式。

响应报文

Location 响应报头域常用在更换域名的时候。例如:www.xiaomi.com -> www.mi.com

Last-Modified 实体报头域用于指示资源的最后修改日期和时间。

Expires 实体报头域给出响应过期的日期和时间。

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。

传输

浏览器地址键入URL,按下回车所经历一下流程:

  1. 浏览器向DNS服务器请求解析该URL中域名所对应的IP地址(走UDP协议)
  2. 解析出IP地址后,根据IP地址和默认端口80,与服务器建立TCP连接;
  3. TCP三次握手完毕,将请求报文发给服务器;
  4. 服务器接收请求,处理完毕后,返回响应,并把对应的html文本发送给浏览器;
  5. connection:close 释放TCP连接;
  6. 浏览器解析html文本并显示内容。

0%