网络协议-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(思考,兼容之前版本,让以前的用户都可用,稳定推进)
- 问题:谁在推动协议发展?(浏览器)