HTTP 有两类报文:
请求报文——从客户向服务器发送请求报文。(发送哪些请求,如GET获取网页内容。账户名,密码提交给服务器,需要POST)
响应报文——从服务器到客户的回答。(服务器收到请求给客户端一个状态,请求成功或者失败,有没有权限访问)
由于 HTTP 是面向正文的 (text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。(明文的,不加密)
HTTP 的报文结构(请求报文)
http报文有两种,一种是请求报文(从请求端发出的),另外一种叫响应报文(从服务器发出的),而里面的信息就是HTTP协议交互的信息。
报文标准结构与报文压缩
报文分为两个部分,一部分为为请求头,另外一部分叫做请求体,需要说明一点,请求体是可以忽略的。
比如请求方法header方法,它就不会去获取请求体,而对于请求头来说,它是由多行数据构成的字符串文本,数据都是通过换行符隔开。
而这就是一个一个的请求头信息。请求方法,状态码。
在请求头当中,有两个参数是有特定名字的,第一行是请求行,另外一个有单独名字的叫做状态码。
也就是在请求头当中,第一行叫做请求行(里面包含了请求方法,请求的uri,以及http的版本号。)
另外一个就是状态码,比如说200 ok。
它们有单独的名字就说明这些必须包含在请求头当中。
除了这两个参数以外,其他的都叫首部字段,并且首部字段是可以扩展的,你甚至可以自定义。
如果首部再去划分,可以划分为,通用的首部,请求首部,响应的首部,以及实体首部。
由于请求头也是http传输协议报文当中的一部分,它的数据量越大,也会间接影响http协议的传输速率。
传输速率:将要传输的数据信息分为实体,实体需要借助http协议传输。而在http协议当中,有个基本的数据单位叫做报文,它是http协议当中的基本单位,由8位组的字节流。
实体信息想要通过http协议传输,首先就要将实体拆分为诺干的报文,也就是实体=报文,而这种传输方式我们也可以称为按照数据原样输出,而为了提升传输的速率我们可以通过压缩技术来减小数据的体量,并且客户端也可以通过解压来获取数据的原样。
而一般情况下会对外部的文本文件进行压缩,这会有解压缩的性能消耗。
下面可以看到使用了gizp的压缩格式。这个字段来阐明这个字段是否被压缩。一般只压缩文本文件,不压缩二进制文件,因为压缩不明显。
HTTP 请求报文的一些方法
HTTP 的报文结构(响应报文)
状态码都是三位数字
- 1xx 表示通知信息的,如请求收到了或正在进行处理。
- 2xx 表示成功,如接受或知道了。
- 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
- 5xx 表示服务器的差错,如服务器失效无法完成请求。