美文网首页
让我们了解HTTP(3)

让我们了解HTTP(3)

作者: 牛软糖 | 来源:发表于2017-06-07 22:27 被阅读0次

HTTP报文

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

HTTP报文结构

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

请求行:包含用于请求的方法,请求的URI和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)透明协商:是服务端驱动和客户端驱动的结合,由各自进行协商

相关文章

  • 让我们了解HTTP(3)

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

  • 让我们了解HTTP(1)

    为了了解HTTP,我们有必要事先了解一下TCP/IP协议族,不过仅仅介绍理解HTTP所需要掌握的TCP/IP协议族...

  • 让我们了解HTTP(2)

    本文主要针对HTTP1.1进行讲解,内容不多,主要是图多 1)HTTP协议和TCP/IP协议族内的众多协议相同,用...

  • 让我们了解HTTP(4)

    这篇文章讲解的是状态码,HTTP状态码的职责是表示客户端HTTP请求的结果、服务端的处理是否正常等 状态码的类别:...

  • 让我们了解HTTP(5)

    通信数据转发程序 HTTP通信时,除客户端和服务器外,还有一些用于通信数据转发的应用程序:代理、网关、隧道 这些应...

  • 2019-10-22

    今日学习计划: 1.详细了解TCP, UDP, QUIC,写下笔记。 2.详细了解HTTP,HTTP2,HTTP3...

  • 了解Http

    http学习笔记 1. 什么是Http? Hypertext Transfer Protocol-超文本传输协议 ...

  • 2.http通讯

    学习内容:1.了解angular的Http服务2.发送http请求3.处理http响应https://segmen...

  • 图解HTTP后的一些总结

    HTTP 图解笔记 一 .简单了解 1.1HTTP背景 1.1.1 HTTP的诞生 1989 年 3 月,互联网还...

  • HTTP组成(二)

    开始之前先来一张思维导图,让我们对HTTP的组成有一个简单的了解 本文主要从以下三点来了解HTTP协议 1、报文 ...

网友评论

      本文标题:让我们了解HTTP(3)

      本文链接:https://www.haomeiwen.com/subject/nooafxtx.html