【计算机网络学习笔记(十)】之HTTP报文结构与功能概述

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. HTTP报文

(一) 概述

       用于HTTP协议交互的信息称为HTTP报文,客户端的HTTP报文称为请求报文,服务器端的叫做响应报文,HTTP报文是由多行(用CR+LF作换行符)数据构成的字符串文本。CR是Carriage Return回车符,LF是Line Feed换行符。

(二) 报文结构

1. 概述

       HTTP报文大致可分为报文首部和报文主体两块,由空行(CR+LF)来划分,通常并不一定有报文主体。

2. 请求报文

       请求报文由请求首部和请求体构成,请求首部又分为请求行和请求首部字段,请求行包含用于请求的方法,请求URI和HTTP版本,如GET /index HTTP/1.1;请求首部字段包含各种类型的首部字段,一般有四种首部,通用首部,请求首部,响应首部和实体首部。

3. 响应报文

       响应报文由响应首部和响应体构成,响应首部又分为状态行和响应首部字段,状态行包含表名响应结果的状态码,原因短语和HTTP版本,如HTTP1.1 200 OK;响应首部字段包含各种类型的首部字段,一般有四种首部,通用首部,请求首部,响应首部和实体首部。

(三) 编码提升传输速率

1. 概述

       HTTP传输数据时可以按照数据原貌直接传输,也可以在传输过程中通过编码提升传输速率。

2. 报文主体和实体主体的差异

       报文是HTTP通信的基本单位,由8位组字节流组成;实体作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体构成。HTTP报文的主体用于传输请求或响应的实体主体,通常,报文主体等于实体主体,只有当传输中进行了编码操作时,实体主体的内容才会发生变化。

3. 压缩传输的内容编码

       HTTP协议中的内容编码指明了应用在实体内容上的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接受并负责解码。常用的内容编码有gzip,compress,deflate,identity。

4. 分块传输编码

       在HTTP通信中,如果请求的编码实体资源尚未传输完成之前,浏览器是无法显示请求页面的,在传输大量数据时,可以通过将数据分割为多块,让浏览器逐步显示页面。这种将实体主体分块的功能称为分块传输编码,将实体主体分割为多块,每一块都会用十六进制来标记块的大小,最后一块用0(CR+LF)标记。

(四) 多类型实体集合

       HTTP协议发送的一份报文实体中可以包含多类型实体,通常在图片或文本文件等上传时使用。如multipart/form-data,multipart/byteranges。使用多类型实体集合时,需要在首部字段中加上Content-type字段,表示包含的类型,同时使用boundary字符串来划分各类型实体,在该划分符号之前插入–标记,每一个–标记代表一个类型实体,整个集合的结束标记是在划分符号之后也插入一个–标记。

(五) 范围请求

       为了解决下载中断问题,HTTP可以实现资源的范围请求,只请求一部分资源,这样就可以从下载中断的位置继续下载了。需要使用Range字段来设置请求的范围,针对该请求,响应会返回状态码为206的响应报文,如果无法响应范围请求,则返回200和完整的实体内容。

(六) 内容协商

       同一个Web网站可能有多份相同内容的页面,使用的语言不同,当浏览器的默认语言为中文时,访问相同URI的web页面就会显示中文的页面,这种机制称为内容协商。即客户端和服务器端就响应的资源内容进行交涉,提供给客户端最合适的资源,判断标准是语言,字符集,编码方式等。

       内容协商有三种类型,一种是服务器驱动协商,以请求的首部字段为参考,在服务器端自动处理;一种是客户端驱动协商,由用于从可视化的界面选择;另一种是透明协商,有服务器端和客户端一起协商。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值