![1ec1a989729c42eb43f7414bb5526e63.png](https://img-blog.csdnimg.cn/img_convert/1ec1a989729c42eb43f7414bb5526e63.png)
HTTP协议是什么?
HTTP是客户端和服务器之间通信传输的一种简单协议, 默认端口号是80, 虽然HTTP使用了TCP作为传输层
协议, 但是不用考虑如果数据丢失后要怎么重新发送, 举个不太恰当的例子, 你寄东西回家, 中途掉了一个物品,
家里收到后发现少了一个物品, 不会和你说你寄回来的物件里面少了一件物品, 在重新寄一份过来, 这不是HTTP
考虑的事情~
HTTP版本发展过程
HTTP的版本发展至今一共四个版本(只讲前三个, HTTP/2有时间在讲)
- HTTP/0.9
- HTTP/1.0
- HTTP/1.1
- HTTP/2
HTTP/0.9
0.9是在1991年发布的版本, 十分简单, 同时命令也少的可怜, 只有一个命令 GET , 因为不支持POST命令, 所以
客户端是没有办法向服务器传递太多信息的。
![319134b1195b47595b402e96d0921017.png](https://img-blog.csdnimg.cn/img_convert/319134b1195b47595b402e96d0921017.png)
先不用管其他的信息, 注意那个GET就行了, 如果现在用的是0.9的版本, 我只能得到这个网页的信息, 并不能
说去修改信息然后提交给服务器。
HTTP/1.0
1996年5月, HTTP/1.0发布, 请求方法除了GET, 还添加了POST、HEAD, 在代理服务器中广泛使用。
这个版本的HTTP还支持传输图像、视频、二进制文件, 还有新的特性比如,
- 请求和响应支持头域,
- 响应对象以一个响应状态行开始,
- 响应对象不限于超文本,
- 支持长连接(默认短链接),缓存机制,身份认证等。
HTTP/1.0的缺点是每次向服务器发送请求时间是一次请求的传输时间加上两倍的往返时间RTT(一个RTT用于TCP连接,一个负责请求, 而且每次TCP只能发送一次请求, 发送完成后, 这个TCP就会结束掉, 还要继续发送请求的话, 就必须要再开一个TCP连接, ), 这种方式也被称为非持续连接。
HTTP/1.1
1997年1月份, HTTP/1.1发布,HTTP/1.1解决了HTTP/1.0的毛病, 使用了持续连接, 也就是TCP连接默认不关闭,可以被多个请求重复使用, 并且不限于同一个网页上的链接, 只要是同一个服务器的就行。
持续连接分为两种
- 流水线
- 非流水线
流水线
流水线模式特点, 是指客户端在接受前一个响应后才会发出来下一个请求,流水线的优点在于客户端每访问一次服务器, 只要一个来回的RTT往返时间就行, 但是缺点也很明显, 因为每次服务器发送回一个对象后, TCP连接就属于空闲
状态,造成服务器资源浪费, 而且HTTP请求默认是按顺序发出, 在下一个请求发送之前, 要等之前的请求到达服务器才行, 可能受网络延迟和带宽等问题,这个传输的时间可能会很长。
非流水线
非流水模式特点是客户端在收到HTTP响应报文之前还可以接着发送新的请求报文, 这样的话一个接一个的请求报文到服务器之后, 服务器就可以连续的发送回响应报文。
引用
《计算机网络第七版》P267-P270
HTTP 协议入门 - 阮一峰的网络日志www.ruanyifeng.com![300cdb57c15767516412bc55a21ab757.png](https://img-blog.csdnimg.cn/img_convert/300cdb57c15767516412bc55a21ab757.png)
![df952eeb28e765ecfba3f7b0e1686d46.png](https://img-blog.csdnimg.cn/img_convert/df952eeb28e765ecfba3f7b0e1686d46.png)
![df952eeb28e765ecfba3f7b0e1686d46.png](https://img-blog.csdnimg.cn/img_convert/df952eeb28e765ecfba3f7b0e1686d46.png)