> 文章列表 > 网络协议-UDP vs TCP, HTTP2.0和3.0

网络协议-UDP vs TCP, HTTP2.0和3.0

网络协议-UDP vs TCP, HTTP2.0和3.0

目录

TCP vs UDP

Internet协议群(TCP/IP协议群)

传输层和网络层

User Data Diagram(UDP)

连接

 重发(校验)

 UDP不保证顺序

思考:看了上面的几点,UDP没有虚拟连接、不校验数据、不保证顺序、没有收到不重发——是不是意味着不安全、不可靠?

HTTP2.0目标(优化流量,优化延迟)

HTTP1.1排队问题

HTTP2.0多路复用

压缩头部

服务端推送

服务端推送(悖论)

HTTP3.0是什么?

小结


TCP vs UDP

Internet协议群(TCP/IP协议群)

http1.0,1.1,2.0时传输层都是TCP

http3.0时传输层是UDP

 

传输层和网络层

网络层是一些片段

传输层是有端口号的应用-》服务

 

User Data Diagram(UDP)

比TCP节省网络资源和迅速

  • 不需要建立连接(延迟更低)
  • 封包体积更小(传输速度快)
  • 不关心数据顺序(不需要序号和ACK,传输快速)
  • 不保证数据不丢失

连接

 

 重发(校验)

 

 UDP不保证顺序

 

思考:看了上面的几点,UDP没有虚拟连接、不校验数据、不保证顺序、没有收到不重发——是不是意味着不安全、不可靠?

并不是,UDP自由度更高......

  • 需要用户程序在应用层定义类似的机制
  • TCP面向流(API接收流)、UDP面向消息(API接收数据包)

场景不同

  • 模糊:文件&文本、多媒体
  • TCP:远程控制
  • UDP:DNS查询(一输入网址就要查,受用面特别广,固定开销)

HTTP2.0目标(优化流量,优化延迟)

  • 多个请求多路复用
  • 防止队头阻塞
  • 压缩HTTP头部
  • 服务端推送

HTTP1.1排队问题

多个文件共有一次连接,文件排队,顺序传递,队头阻塞

浏览器为防止网页过多占用资源,一次建立6个连接

 

HTTP2.0多路复用

相近的请求打包为一个传递包,一个请求阻塞,还是会传递回来,避免了队头阻塞问题

 

思考:哪里变快了?没有变快啊!还是需要传送这么多数据!

因为多路复用,所有阻塞延迟的时间就没有了,这就会变快很多,而且多文件同时进行,充分利用带宽,减少排队等待时间。

同时请求1,2,3同时回来,有阻塞的文件,其他的也会回来;但是不会解决TCP丢包的阻塞问题,还是会等会,没回应,从新发一次。

 

压缩头部

HPACK技术

压缩(2代表METHOD   GET)

 

服务端推送

服务端预测

 

服务端推送(悖论)

服务端推送回来的顺序可能有问题

 

思考

  • 雪碧图还要不要?(HTTP2.0时就不用了)
  • 前端资源还需不需要GZIP(需要,HTTP2.0提供的是头部压缩,GZIP是通用的文本压缩)
  • Js/css文件合并还需不需要?(不需要)JS压缩还需要吗?(需要,简化变量等)
  • 首屏优化还需不需要?(需要)

HTTP3.0是什么?

QUIC谷歌做的快,给http协议提供很大的一部分空间

加密层HTTPS

 

 

小结

  • UDP把自由度给了用户,使用的人少;TCP自由度低,用的人多。(保证可靠性,太复杂的事情要帮用户包办,这样用的人多)
  • HTTP2.0/HTTP3.0都兼容HTTP1.1(思考,兼容之前版本,让以前的用户都可用,稳定推进)
  • 问题:谁在推动协议发展?(浏览器)