计算机系统应用教程网站

网站首页 > 技术文章 正文

让我们了解HTTP(3) 现在基于http3有哪些应用

btikc 2024-10-11 11:19:04 技术文章 5 ℃ 0 评论

HTTP报文

用于HTTP协议交互的信息被称为HTTP报文,客户端的HTTP报文叫做请求报文,服务端的叫做响应报文

HTTP报文结构

请求报文(上)和响应报文的结构(下)

请求行:包含用于请求的方法,请求的URI和HTTP版本

请求报文的实例

状态行:响应结果的状态码,原因短语和HTTP版本

响应报文实例

首部字段:通用首部、请求首部、响应首部和实体首部

其他:可能包含HTTP的RFC里未定义的首部(Cookie等)


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

报文:HTTP通信中的基本单位,由8位字节流组成,通过HTTP通信传输

实体:由实体首部和实体主体组成,是有效载荷数据

通常,报文主体等于实体主体,只有当传输中进行编码时,实体主体的内容才发生变化,才导致发生差异


压缩传输的内容编码

内容编码是指应用在实体主体内容上的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接收并负责解码,它是HTTP协议的功能

内容编码

常见的内容编码有以下几种:

gzip(GNU zip)

compress(UNIX系统的标准压缩)

deflate(zlib)

identity(不进行编码)


分割发送的分块传输编码

分块传输编码:在传输大量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面

分块传输编码

1)分块传输编码将实体主体分成多块,每一块都会用十六进制来标记块的大小,最后一块使用“0(CR+LF)”来标记

2)使用分块传输编码的实体主体由接收的客户端负责解码,恢复到解码前的实体主体

3)HTTP1.1中存在一种称为传输编码的机制,它可以在通信时按照某种编码方法进行传输,但只定义在分块传输编码中


发送多种数据的多部分对象集合

HTTP协议中采纳了多部分对象集合,发送的一份报文主体内可含有多类型的实体,在HTTP报文的首部字段里加上Content-Type

多部分对象集合包含的对象:multipart/form-data、multipart/byteanges

multipart/form-data:在Web表单上传时使用

multipart/byteanges:状态码206的响应报文中包含了多个范围的内容时使用

multipart/form-data实例:

Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x

Content-Disposition: form-data; name="field1"

Joe Blow

--AaB03x

Content-Disposition: form-data; name="pics"; filename="file1.txt"Content-Type: text/plain ...(file1.txt的数据)...

--AaB03x--

multipart/byteanges实例:

HTTP/1.1 206 Partial ContentDate:

Fri, 13 Jul 2012 02:45:26 GMT

Last-Modified: Fri, 31 Aug 2007 02:02:20 GMT

Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES

--THIS_STRING_SEPARATES

Content-Type: application/pdf

Content-Range: bytes 500-999/8000

...(范围指定的数据)...

--THIS_STRING_SEPARATES

Content-Type: application/pdf

Content-Range: bytes 7000-7999/8000...(范围指定的数据)...-

-THIS_STRING_SEPARATES--

由上两个实例中:通过boundary字符串来划分多部分对象集合指明的各类实体,在指定的字符串前插入"--"标记开始,也作为结束标记,boundary=AaBO3x,则划分的字符串为--AaBO3x


获取部分内容的范围请求

指定范围发送的请求叫做范围请求,在首部字段中添加Range,如:Range:bytes = 5001-10000,即获取5001-10000字节的内容,也可写为Range:bytes = 3000,5000-7000,即从开始到3000字节和5000到7000字节的多重范围

采用首部字段Range来指定资源的byte范围

针对范围请求,响应会返回状态码206Partial Content的响应报文,如果服务器无法响应范围请求,则会返回状态码200 OK 和完整的实体内容


内容协商机制

当浏览器的默认语言为中文或英文时,访问相同的URI的Web页面时,则会显示对应的中文版或英文版,这种机制称为内容协商机制(Content Negotiation)

内容协商机制会以响应资源的语言、字符集、编码方式等作为判断的基准

内容协商技术有以下三种类型:

1)服务器驱动协商:由服务端进行协商,以请求的首部字段为参考,在服务端自动处理

2)客户端驱动协商:由客户端进行协商,在用户的浏览器显示的可选项中手动选择,还可利用JavaScript脚本在Web页面上自动进行上述选择

3)透明协商:是服务端驱动和客户端驱动的结合,由各自进行协商

Android文章推荐

最全Android学习路线总结,绝对干货

http://mp.weixin.qq.com/s/9uDV16DVIMby1hNFL6-BKA

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表