WebSocket 会存在碰包的情况吗?

2018-08-08 11:23:48 +08:00
 e8c47a0d
既然 WebSocket 基于 tcp,那么这里大概能确定的是,在一条连接内,如果服务器或客户端的任意一端连续发消息,另一端也能按顺序收到。但如果,服务器和客户端几乎同时发出一连串消息,那么这些消息的顺序和完整性还能被保证吗?
13052 次点击
所在节点    游戏开发
88 条回复
AV1
2018-08-09 11:48:21 +08:00
@e8c47a0d
数据包( packet )是网络层(第 3 层)的数据单位,IP 协议就工作在网络层。
TCP 属于传输层(第 4 层),传输层的数据单位是数据段( segment )。
所谓的收发冲突是发生在数据链路层(第 2 层),这里的数据单位是数据帧( Frame )。
HTTP、Websocket 都是应用层(第 7 层)的协议。

从你的回复中可以看出,你的在网络分层方面的知识完全是混乱的,很明显你需要重新学习计算机网络课程,包括 OSI 和 TCP/IP 的概念和原理。
Cambrian07
2018-08-09 12:37:17 +08:00
@e8c47a0d 我是看完了整个帖子回复的,你至少先搜索一下所谓的”碰包“再来发帖子啊。
zhzer
2018-08-09 15:04:36 +08:00
真是活到老学到老
misaka19000
2018-08-09 23:41:10 +08:00
现代交换机都是全双工的,在早期的集线器中是有可能发生从两端同时接收到数据的情况的,不过这已经是链路层的事情了,网络层网上都不需要考虑这个问题,只要单纯的认为网络是全双工的就可以了
julyclyde
2018-08-10 11:58:37 +08:00
@e8c47a0d TCP 的 segment 是给 TCP 协议栈用的,不是给你用的。你写应用层只能看到“流”
你必须首先树立“ TCP 是流”的概念,然后再去讨论其它事
而不是质疑 TCP 到底是不是流
yincrow
2019-10-19 11:49:35 +08:00
你应该没有使用过 WebSocket,WebSocket 的服务端只有接收到消息后才能发送,没有办法主动发送消息
mzDV4TUeHyesLbUQ
2023-08-21 14:14:03 +08:00
@wxt 两个包撞上了,纠缠到了一起,最终实现了量子计算。
alan9999
98 天前
@yincrow 你搞错,你说的应该是 HTTP ,WebSocket 可以全双工通信

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

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

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

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

© 2021 V2EX