TCP vs UDP
传输层协议
UDP(User Data Diargram)
- 比TCP节省网络资源和迅速
- 不需要连接(延迟更低),但是存在可能你发过去但是服务端没收。
- 封包体积小(传输速度快),不需要TCP的那些头部
- 不关心数据顺序(不需要序号和ACK,传输快速)
- 不保证数据不丢失
连接
TCP三次握手,保证信息可达。
UDP直接传输,
重发(效验)
TCP 每一次要一个返回,没有返回会重新发。
UDP 消息过去就是过去,不需要返回
UDP不保证顺序
因为没有ACK,只要发。
所以,并不是说UDP不安全,UDP自由度更高。。。
- 需要用户程序在应用层定义类似的机制(自由度高,因为要自定义东西,所以会定义到应用层去。
- TCP面向流(API接收流)、UDP面向消息(API接收数据包)【UDP也可以自己写出流。
场景不同
以前不愿意用UDP传文件,因为不保证一定传的过去。但随着互联网发展,就对速度更加强烈。
- 模糊:文本&文件,多媒体。
- TCP:远程控制 远程控制自己的服务器,要保证自己安全性
- UDP:DNS查询
HTTP2.0
多请求多路复用
HTTP1.1排队问题
多个文件排队复用一个TCP通道,这里发出和回来都需要排队,如果队伍上的文件阻塞了,那么就会卡住。
最多会建6个TCP连接。
HTTP2.0多路复用
如果两个数据比较相近,那么也就是说会将两个打包一起发过去,其中如果一个出错了,但是其他都还可以过去,串行变成并行。大块化小,能传都传。
HTTP1.1队头阻塞
HTTP2.0解决
同时发出同时请求。但是TCP还是一样没有解决,发分包没有返回的阻塞。
压缩头部
HPACK技术
压缩(2代表METHOD GET)
服务端推送
本来我们有index.html a.js b.css
没有服务端推送就是先请求html回来,发现还要请求a.js 和b.css
有服务端推送就会一起过来,就是在服务端的时候可以先解析html,在一起来
服务端推送(悖论)
index.html. 20个js,150个图片,
有时会发生图片先进js没有就不会执行。
H2基本不用雪碧图。
前端还需要Gzip(通用的文本压缩,还是需要的)。
js/css不需要合并,js压缩还是需要。
首屏优化还是需要的。
HTTP3.0 是什么
网络层是非常稳定
基于TCP上存在2.0以下版本,到TCP上之前还有加密层。
3.0把TCP换成UDP,需要自己去保证,之间加了一个QUIC层,去自己写,里面把加密压缩都做了。
UDP把自由度给了用户,使用人少,TCP自由度低,用的人就多
HTTP2.0/HTTP3.0都会向前兼容