HTTP 协议演进

Http 1.0

存在的问题

  • 无法复用链接:每个请求都需要建立TCP链接。
  • 对头阻塞:第二个请求必须等第一个请求响应后才能发起。

Http 1.1

特性

  • 默认使用长连接,可配置Keep-alive来控制连接时间
  • 支持请求管道化,客户端可以发送多个请求,而不用等待前一个请求响应。

存在的问题

  • 为了让客户端识别请求对应的响应,服务端响应时,必须按照请求的顺序进行响应,哪怕第二个响应准备好了,也得等第一个响应先返回。

Http 2.0

特性

  • 采用二进制格式传输数据,而非Http 1.x的文本格式,解析更高效。
  • HTTP 1.x的请求和响应报文,都是由起始行,首部和实体正文(可选)组成,各部分之间以文本换行符分隔。HTTP2.0 将请求和响应数据分割为更小的帧,并且它们采用二进制编码,乱序发送,最终组装。
  • 压缩header,并缓存header。
  • 同个域名只需要占用一个TCP连接,使用一个连接并行发送多个请求和响应。
  • 多个请求之间、多个响应之间互不影响,实现并发。

存在的问题

  • 由于复用一个TCP链接,一旦出现丢包,就得重传,后面所有请求都被阻塞。

Http 3.0

特性

  • 谷歌基于UDP 协议来定义的 QUIC 协议,应用到Http 3.0上。
  • 不需要链接,所以没有额外的链接时间。
  • 一个连接上的多个stream之间没有依赖,如果某个Stream丢了一个包,是不影响后续的Stream。
  • 向前纠错:每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通过其他包的冗余数据直接组装而无需重传。
  • 加密认证的报文: TCP协议头部没有经过任何加密和认证,所以在传输过程中很容易被中间网络设备篡改。QUIC 所有报文头部都是经过认证的,报文Body都是经过加密的。
  • QUIC在移动端的表现也会比TCP好。因为TCP是基于IP和端口去识别连接的,这种方式在多变的移动端网络环境下是很脆弱的。但是QUIC是通过ID的方式去识别一个连接,不管你网络环境如何变化,只要ID不变,就能迅速重连上。

如何衡量网络的质量?

带宽

单位时间内传输的数据量。

时延

发送数据到就收数据总共花费的时间,包含发送时延,处理时延(网络设备),排队时延(网络设备),传播时延。

抖动

最大时延与最小时延的差值。

丢包

某些原因下会出现丢包,例如网络阻塞:某个网络设备处理不了这么多数据,有的数据包排队很久了,就可能会被丢掉。

参考资料

Http1.0 1.1 2.0 3.0工作原理探究

9 张动图让网络性能的四大指标:带宽、时延、抖动、丢包

作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇