http协议简史

https://blog.csdn.net/liujianfei526/article/details/53289350

0.9

协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。

1.0

首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。

除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。

如text/html   、application/json;charset=UTF-8

这些数据类型总称为MIME type

除了预定义的类型,厂商也可以自定义类型,即私有http协议,body部分自定义编解码二进制流

客户端请求的时候,可以使用Accept字段声明自己可以接受哪些数据格式。

由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。如Content-Encoding: gzip

客户端在请求时,用Accept-Encoding字段说明自己可以接受哪些压缩方法。Accept-Encoding: gzip, deflate

有些浏览器在请求时,用了一个非标准的Connection字段。Connection: keep-alive,这个字段要求服务器不要关闭TCP连接,以便其他请求复用。服务器同样回应这个字段。但是,这不是标准字段,不同实现的行为可能不一致,因此不是根本的解决办法。

1.1

1.1 版的最大变化,就是引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive

客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。 Connection: close

一个TCP连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的。这就是Content-length字段的作用,声明本次回应的数据长度。

Content-Length: 3495,上面代码告诉浏览器,本次回应的长度是3495个字节,后面的字节就属于下一个回应了。

猜你喜欢

转载自www.cnblogs.com/silyvin/p/9708784.html