既然 WebSocket 基于 tcp,那么这里大概能确定的是,在一条连接内,如果服务器或客户端的任意一端连续发消息,另一端也能按顺序收到。但如果,服务器和客户端几乎同时发出一连串消息,那么这些消息的顺序和完整性还能被保证吗?
1
InternetExplorer Aug 8, 2018 所以你真的了解 TCP 吗
|
2
momocraft Aug 8, 2018 碰包这个词第一次听说
|
3
Clarencep Aug 8, 2018 第一次听说“碰包”……
|
4
cuzfinal Aug 8, 2018
这些低级错误在大佬们设计 tcp 协议的时候早就解决了,还有碰包是什么鬼?
|
5
wxt Aug 8, 2018 via Android 好像碰瓷
|
6
wxt Aug 8, 2018 via Android 两个包撞上了,形成了一种原子力量,发生了聚变,产生了物理冲撞,爆炸形成了信息宇宙
|
7
opiuy Aug 8, 2018 你把我碰倒了,赔我 10 万个包,这件事就算了
|
8
suikator Aug 8, 2018 via Android
恭喜 IT 民科喜提碰包😂
|
9
suikator Aug 8, 2018 via Android 粘包:欢迎碰包弟弟加入这个大家庭😂
|
10
elsove812 Aug 8, 2018 tcp 包这么智能,都会违章了
|
11
CrisTao Aug 8, 2018 你是觉得他们会在同一个通道内撞上吗?当这是开车? |
12
wizardoz Aug 8, 2018
单工、半双工、全双工了解一下。
TCP 是全双工 |
13
misaka19000 Aug 8, 2018
今日最佳
|
14
catcn Aug 8, 2018
碰碰包
|
15
catror Aug 8, 2018 via Android
你逆行撞到我了,赔我的包
|
16
glacer Aug 8, 2018
网线可不是单行道,先补补通信基础吧
|
17
towser Aug 8, 2018
TCP 是全双工协议,可以理解为发送路径和接收路径不是一条路,不会 ”碰包“。
|
18
blueskit Aug 8, 2018 via Android
在同轴电缆时代,倒确实会碰包。
|
19
est Aug 8, 2018 LZ 的意思是 websocket 不是严格的 请求 - 响应,而是有可能连续请求中,夹杂着响应。
那么答案是:是的。websocket 是一种双向流协议。你得考虑这种情况。 其实原始的 http 也会有这种情况,只不过反向代理和 web 框架帮你把这事儿处理了。 |
20
abcbuzhiming Aug 8, 2018
我还以为说粘包呢,碰包是什么鬼?难道楼主没听说过发送和接收是分开的吗
|
21
ericls Aug 8, 2018 via iPhone
可以保证一边发送的顺序是另一边接收的顺序
|
22
paw Aug 8, 2018
lz 是从以太半双工的年代穿越过来的吧
|
23
e8c47a0d OP 那么我肯定误解了 packet collision 这个概念,不过短时间内为什么这么多回复?这个节点
|
24
e8c47a0d OP @InternetExplorer 不了解,只知道 tcp 可以保证完整性和顺序。
|
25
est Aug 8, 2018 |
28
noNOno Aug 8, 2018
哈哈,新词
|
32
e8c47a0d OP 这 sb 帖子竟然飘到了今日最热……
|
33
nobird Aug 8, 2018 via iPhone
我告诉你为啥变成了最热…… by 微博观光团
|
36
est Aug 8, 2018 @changnet
收到 1 请求,worker 开始处理 1,暂时不返回 收到 2 请求,worker 开始处理 2,立刻返回 worker 返回 1 请求的结果 这个时候如果你是客户端如何区分 2 个返回?仅靠顺序可能嘛? |
37
e8c47a0d OP @abcbuzhiming 粘包我知道,但分开的这件事有点不确定。
|
42
e8c47a0d OP 恭喜本帖荣登 V2EX 首页顶部🎉㊗️
|
43
est Aug 8, 2018
@changnet 也是不一定的。TCP OOB 了解一下。。2333。
国内做技术的就是喜欢瞎 jb 发明名词,然后另一拨人对名词后面的需求又瞎 jb 起哄。 分包 粘包 这个其实是 layer 7 应用层更上面的需求,其实也应该严肃对待。 http 严格的来说属于 OSI 7 层了,websocket 至少 8 层了。websocket 里套业务逻辑应该 9 层了? |
44
allgy Aug 8, 2018
又一个自创名词的..."碰包"自己听起来不别扭吗,人家已经有习惯性的称谓"粘包"就不要瞎造词
|
45
NullException Aug 8, 2018
双击
|
46
paparika Aug 8, 2018
听俺们量子物理和 cs 双学位的老工程师给讲过,碰包和欧洲那边原子对撞机是一个原理的撒,搞不好哪天就碰出黑洞,把地球湮灭了哦
|
47
loveCoding Aug 8, 2018 全双工,你可以理解为有两条通道....粘包倒是有...
|
48
pagxir Aug 8, 2018 via Android
我知道现实生活中有碰瓷现象,至于碰包也许是有吧。
|
49
quickma Aug 8, 2018
多看书啊。
|
50
crab Aug 8, 2018
粘包 碰包 - -!
|
51
pcmid Aug 8, 2018 via Android 前几天我了解了粘包,今天我又知道了碰包。。。
|
52
affyun Aug 8, 2018 via Android
坐等肉包豆包
|
53
zhujinliang Aug 8, 2018
发现碰包后,请出示船票,大喊“我可以上船了”
|
56
zhoulouzi Aug 8, 2018 贼讨厌 粘包 这种词汇,没有为什么。
|
61
momocraft Aug 8, 2018
把 ws 称为第 8 层感觉有点怪, 毕竟 upgrade 后那个 tcp 连接就完全归 ws 了 (而且 http over http tunnel 这样的用法不知得排到第几层去)
|
63
hacher Aug 8, 2018
在 TCP 专业术语里叫:碰瓷
|
65
jin5354 Aug 8, 2018
竞态
|
66
dosmlp Aug 8, 2018
楼主肯定不知道 tcp 是怎么回事,可以说连“了解 TCP ”都达不到
|
68
NUT Aug 8, 2018
火贴留名
|
69
yanaraika Aug 8, 2018
猜楼主想问的是 server onReceive()和 send()方法要不要做同步。答案是当然要做,最简单的就是如果其中共享了数据加把锁
|
70
wcsjtu Aug 8, 2018
@est 网络数据达到顺序,和你应用层代码执行顺序没半毛钱关系。websocket 包并不包含 http 的帧头,所以不存在 websocket 是在 http 之上的说法。json、xml、protobuf 这些姑且可以算作 http 之上的协议。
|
72
fyibmsd Aug 9, 2018
tcp 协议:笔给你,你来写
|
73
Cambrian07 Aug 9, 2018 via Android
lz,有问题先 Google,哪怕百度一下也行啊,就不至于闹笑话了。
哈哈哈 |
74
agostop Aug 9, 2018
微博的都来了,V2 的脸往哪搁
|
76
ryuzaki113 Aug 9, 2018 tcp 没有“包”这个概念
|
78
julyclyde Aug 9, 2018
|
79
e8c47a0d OP |
81
AV1 Aug 9, 2018 @e8c47a0d
数据包( packet )是网络层(第 3 层)的数据单位,IP 协议就工作在网络层。 TCP 属于传输层(第 4 层),传输层的数据单位是数据段( segment )。 所谓的收发冲突是发生在数据链路层(第 2 层),这里的数据单位是数据帧( Frame )。 HTTP、Websocket 都是应用层(第 7 层)的协议。 从你的回复中可以看出,你的在网络分层方面的知识完全是混乱的,很明显你需要重新学习计算机网络课程,包括 OSI 和 TCP/IP 的概念和原理。 |
82
Cambrian07 Aug 9, 2018
@e8c47a0d 我是看完了整个帖子回复的,你至少先搜索一下所谓的”碰包“再来发帖子啊。
|
83
zhzer Aug 9, 2018
真是活到老学到老
|
84
misaka19000 Aug 9, 2018
现代交换机都是全双工的,在早期的集线器中是有可能发生从两端同时接收到数据的情况的,不过这已经是链路层的事情了,网络层网上都不需要考虑这个问题,只要单纯的认为网络是全双工的就可以了
|
85
julyclyde Aug 10, 2018
@e8c47a0d TCP 的 segment 是给 TCP 协议栈用的,不是给你用的。你写应用层只能看到“流”
你必须首先树立“ TCP 是流”的概念,然后再去讨论其它事 而不是质疑 TCP 到底是不是流 |
86
yincrow Oct 19, 2019
你应该没有使用过 WebSocket,WebSocket 的服务端只有接收到消息后才能发送,没有办法主动发送消息
|
87
mzDV4TUeHyesLbUQ Aug 21, 2023
@wxt 两个包撞上了,纠缠到了一起,最终实现了量子计算。
|