WebSocket 会存在碰包的情况吗?

2018-08-08 11:23:48 +08:00
 e8c47a0d
既然 WebSocket 基于 tcp,那么这里大概能确定的是,在一条连接内,如果服务器或客户端的任意一端连续发消息,另一端也能按顺序收到。但如果,服务器和客户端几乎同时发出一连串消息,那么这些消息的顺序和完整性还能被保证吗?
13052 次点击
所在节点    游戏开发
88 条回复
momocraft
2018-08-08 20:43:53 +08:00
把 ws 称为第 8 层感觉有点怪, 毕竟 upgrade 后那个 tcp 连接就完全归 ws 了 (而且 http over http tunnel 这样的用法不知得排到第几层去)
est
2018-08-08 21:20:47 +08:00
@ericls 这个其实没意义。大规模服务器部署的时候 websocket 不一定命中同一个 service/worker 来处理。
hacher
2018-08-08 21:23:15 +08:00
在 TCP 专业术语里叫:碰瓷
jin5354
2018-08-08 21:49:31 +08:00
按 @est 说的这种场景,lz 想问的叫竟态啊。。
jin5354
2018-08-08 21:49:48 +08:00
竞态
dosmlp
2018-08-08 22:09:12 +08:00
楼主肯定不知道 tcp 是怎么回事,可以说连“了解 TCP ”都达不到
est
2018-08-08 22:12:21 +08:00
@jin5354 race condition 我觉得主要会导致多个发起方同时等待。。。似乎也不太对。
NUT
2018-08-08 22:15:06 +08:00
火贴留名
yanaraika
2018-08-08 22:53:44 +08:00
猜楼主想问的是 server onReceive()和 send()方法要不要做同步。答案是当然要做,最简单的就是如果其中共享了数据加把锁
wcsjtu
2018-08-08 22:54:42 +08:00
@est 网络数据达到顺序,和你应用层代码执行顺序没半毛钱关系。websocket 包并不包含 http 的帧头,所以不存在 websocket 是在 http 之上的说法。json、xml、protobuf 这些姑且可以算作 http 之上的协议。
est
2018-08-09 00:45:38 +08:00
@wcsjtu 所以有个问题,h2 里边 wss 如何跑的?
fyibmsd
2018-08-09 07:59:47 +08:00
tcp 协议:笔给你,你来写
Cambrian07
2018-08-09 09:10:30 +08:00
lz,有问题先 Google,哪怕百度一下也行啊,就不至于闹笑话了。
哈哈哈
agostop
2018-08-09 09:36:43 +08:00
微博的都来了,V2 的脸往哪搁
e8c47a0d
2018-08-09 09:47:33 +08:00
@est #71 http/2 里的 wss 确实是包在 h2 里面。
ryuzaki113
2018-08-09 10:24:17 +08:00
tcp 没有“包”这个概念
julyclyde
2018-08-09 10:25:48 +08:00
@e8c47a0d packet collision 是数据链路层(协议访问控制子层)的概念
这么多回复,是因为我把这篇转发到微博去了
julyclyde
2018-08-09 10:28:19 +08:00
@e8c47a0d packet collision 是数据链路层(介质访问控制子层)的概念。刚才写协议访问控制子层,是我短路写错了

这么多回复,是因为我把这篇转发到微博去了
e8c47a0d
2018-08-09 10:36:34 +08:00
@Cambrian07 回复前只看了标题吧?
@ryuzaki113 连 IP 都有,TCP 怎么没有包的概念?
e8c47a0d
2018-08-09 10:45:37 +08:00
@dosmlp 是在抱歉,我是搬砖出身的,勉强懂点应用层协议已经很不错了。我没读书,没什么文化,应用层之下的协议看不懂。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/477876

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX