一个题,带你了解http1.0和1.1的区别

224 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

在学校计算机网络的时候,经常遇到的问题就是,这个ip怎么求啊,怎么计算响应时间啊?等等问题,因为快期末了,好吧,其实是我要考计网了,所以写一些小文章来记录记录吧。

这个是今天的问题 image.png

首先提取关键词:点击超连接访问某个页面,ip没有缓存,页面有八个小图,域名解析一次记作RTTD,请求对象一次往返时间RTTh。

那么说一点题外话:当我们点击了超连接后,浏览器干了啥?

最简单的理解是基于客户端服务端模式的:

image.png

即:点击超链接后,向服务器发送请求,提高服务器传来后,再把响应返回客户端。

那么学过springmvc我们会对他有新的理解:

即:先用户点击请求,发起http request,提交到我们的前端控制器;然后前端控制器请求我们处理器映射,返回执行链;前端控制器,把执行链的头部传给处理器,处理器按照执行链的头部信息找到我们需要的controller,controller处理完毕后,把modelandview对象返回给视图解析器,提高视图解析得到我们view界面,通过response传递给浏览器。

唔看上去有点麻烦

从计算机网络角度:

image.png

不同http版本区别

http1.0 每次请求一个文档,需要两倍RTT开销,并且每次请求都需要重新建立连接 在1.0协议中,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。
其次,除了GET命令,还引入了POST命令和HEAD命令,还有PUT、PATCH、 OPTIONS、DELETE命令。
HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

http1.1 连接可以持续使用,分两类,流水形和非流水。流水:客户端访问所有对象只需要一个Rtt;非流水:每次访问对象需要一个Rtt。 头信息是二进制,数据可以是文本,也可以是二进制。
优点有:持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码。 允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个回应,才会进行下一个回应。要是前面的回应特别慢,后面就会有许多请求排队等着。这称为"队头堵塞"

http2.0 一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧。HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。
举例来说,在一个TCP连接里面,服务器同时收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。 “语义”层不做改动,与HTTP/1完全一致(即RFC7231)。比如请求方法、URI、状态码、头字段等概念都保留不变,这样就消除了再学习的成本,基于HTTP的上层应用也不需要做任何修改,可以无缝转换到HTTP/2。 对于HTTP的头部header的字段(user-agent、charset等)进行压缩。

DNS查询

DNS查询有两种方式:迭代形和递归形

迭代

image.png

递归:

image.png

题目分析

问1:dns查询最快时间和最慢时间

最快:那就是在本地浏览器有,那么需要一个Rttd,最慢就是在权限域名服务器里面,需要5个Rttd

问2:http1.0获取,需要 连接+2文档数量+释放 =Rtth+28Rtth+Rtth

问3:5个并行,http1.0:并行每次可以处理无关,花费Rtth+2*Rtth+Rtth,一共8个,需要两趟

问4:非流水1.1 客户端访问所有对象只需要一个Rtt 和 流水1.1 每次访问对象需要一个Rtt。

答案:

image.png