HTTP协议

一、什么是HTTP协议

       HTTP协议是基于TCP/IP协议的应用层协议,不涉及数据包传输,是无状态的协议。主要规定了客户端及服务器之间的通信格式。默认使用80端口。

二、演变历史

1991年 HTTP/0.9

1996年 HTTP/1.0

1997年 HTTP/1.1

2009年 SPDY

2015年 HTTP/2

三、演变过程及实现思路

1、HTTP/0.9

1991年,发布了0.9版本。只有一个简单的get命令。

TCP连接建立之后,客户端像服务端请求index.html,并且只能回应传输html格式的数据。服务器发送完毕就关闭连接。

GET /index.html

2、HTTP/1.0

1996年,发布了1.0版本。

变化:

(1)传输的数据格式发生了变化,可以传输任何类型的文件,除了文本文件还可以传输视频、图像及二进制文件。

(2)命令上添加了POST HEAD命令

(3)请求与回应的格式变化:增加了头信息描述元数据。

请求格式:
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
Accept: */*
第一行是请求命令,必须添加版本协议
后面是多行头信息
回应格式:
HTTP/1.0 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84

第一行是协议、状态码加上状态描述
content-type表示回应的数据类型,常见的数据类型如下:
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
这些统称为MIME type,用斜杠表示下一级类型,用分号隔开添加参数

accept表示可接收的数据类型
Content-Encoding表示可以接受的压缩方法

(4)增加了状态码、多字符集、多部分发送、权限、缓存、内容编码

缺点:每个连接只能发送一个请求,所以有些浏览器使用connection: keep-alive来保存连接,直到客户端自己关闭。

3、HTTP/1.1

1997年1月,发布了HTTP/1.1版本。

变化:

(1)持久连接,不再声明 keep-alive 就可以保持连接状态。客户端或者服务端发现连接一段时间没有活动就会主动关闭连接,也可以直接connection:close来关闭连接。同一个域名目前同时允许建立6个连接。

(2)管道机制,同一个连接可以同时发送多个请求,但是发送及相应的顺序还是一定的。

(3)content-length,声明本次回应的数据长度来区分是包是哪一个回应的。

缺点:依然需要按顺序来执行请求与响应。解决放式为,减少http请求次数或者同时多开tcp持久连接。

4、SPDY协议

2009年,谷歌发布了SPDY协议,主要解决http1.1效率低问题,在http2中得以继承。

5、HTTP/2

2015年,发布了HTTP/2

变化:

(1)二进制协议:之前头信息一定是文本(ASC||),响应可以是文本或二进制。现在全部改为二进制,统称为帧,头信息帧和数据帧。

(2)多工通信:双向实时的通信,处理多少就发送多少,剩余的在处理其他信息后再次发送。

(3)数据流:将每一个请求或者回应的所有数据包统称为一个数据流,每个流都有一个独一无二的编号。客户端请求的ID一律为奇数,响应的一律为偶数。

(4)头信息压缩:由于http无状态,所以每一个请求都有加上所以的头信息,因此很多是一样的,所以压缩后再进行发送。另一方面,两端同时维护一张头信息表,会生成一个索引宏,以后就可以只发送宏索引号就可以。

(5)服务器推送:服务器主动向客户端发送资源。

资源链接:HTTP协议入门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值