虽然只有一个 TCP 连接,却能够在这个连接同时处理客户端和服务端的多个数据传输。
按照以上所述,HTTP2 是用 UDP 实现的 TCP 实现了 UDP?我的想法是对的吗?
1
514146235 2019-03-05 12:20:19 +08:00
当然不对啊,udp 根本不需要建立连接,就是无脑直接发,到没到根本不管。所以才会说 udp 是不可靠协议,但是因为没有握手的过程,从而 udp 通常表现的比 tcp 协议更快。
|
2
wysnylc OP @514146235 #1 感谢回答,但是你有点偏题.其实我想说的的是多路复用的帧是无序发送和 UDP 发包也是无序到达是一个概念
|
3
rrfeng 2019-03-05 12:46:32 +08:00 via Android
一点都不是。
|
4
lhx2008 2019-03-05 12:55:16 +08:00
不是,TCP 本来就是流,在流上发包很正常,基本上所有 TCP 协议都是流上发包,至于无序到达,HTTP/2 的意思应该是来自不同服务器的包可以无序到达,没说来自同一个服务器的包可以无序。
|
5
msg7086 2019-03-05 12:59:11 +08:00
可以说是把 TCP 链路给 UDP 化了。但是也不完全是 UDP 化,因为上层只管乱序,不管丢包重发。
以后 HTTP/3 可能就要全面 UDP 了。 另外,TCP 并不是 UDP 实现的。 |
6
orangeade 2019-03-05 13:10:25 +08:00
你说的是 HTTP/3 HTTP/2 还是有 TCP 的队头阻塞的
|
7
gamexg 2019-03-05 13:55:23 +08:00
不是,
http2 还是基于 tcp 的,建简易理解可以认为底层 tcp 连接里面都是这样的包 流 id | 流数据 接受方根据 流 id 重组为多个子流就实现了单连接多路复用。当然实际不是这样简单,还有一些其他细节。 |
8
wysnylc OP @msg7086 #5 之前一直以为 TCP 是基于 UDP 实现的,原来两个是同级别的. http2 的确像 udp 的模式啊~
|
10
gamexg 2019-03-05 16:47:54 +08:00
@wysnylc #9 不会无序到达,tcp 协议可以保证发送什么顺序接收时就是什么顺序。
那么每个 “流 id + 数据 ” 就会按照发送的顺序到达接收端,不会出现无序的情况。 |
11
mritd 2019-03-05 17:57:14 +08:00 1
首先声明,利益无关,今天 Harbor 群里看到的,刚看完推荐楼主看一下 https://mp.weixin.qq.com/s/bD8C0oR34ZKUEZjN9yBSJg
|