分享文章: TCP 粘包? TCP 警察什么梗

2022-08-29 08:02:57 +08:00
 DonaldY

文章地址:TCP 粘包? TCP 警察什么梗

从 v2 学到很多,按照自己理解总结了下。0.0

12441 次点击
所在节点    程序员
89 条回复
0o0o0o0
2022-08-29 11:15:19 +08:00
生造词只会把问题弄得更复杂,明明很简单的原理,一句话就能说清楚的事情,非要生造一个词,然后再写一篇文章来解释这个词,把问题弄得更复杂。
还有,你说人家是“tcp 警察”,我觉得你是“tcp 恐怖分子”
nekoneko
2022-08-29 11:16:01 +08:00
@zjp #1 javer 表示不背这个锅
nekoneko
2022-08-29 11:26:23 +08:00
tcp 流式传输哪来的包, 脑袋里长了个包吗...
cweijan
2022-08-29 11:28:28 +08:00
@mercury233 这种情况也不能叫 tcp 粘包, 叫应用层粘包才对.
DonkeyBenjamin
2022-08-29 11:29:26 +08:00
这就是中文 cs 界的恶心之处,总是发明一些莫名奇怪的称呼。英文 tcp framing tcp stream 就很直观
bug123
2022-08-29 11:41:43 +08:00
十年前看网络编程书籍的时候有“tcp 粘包”的说法,其实是说需要一个业务协议去分包,比如:length + body 的格式,懂得都懂,每天没事做就拿出来喷一次,何必呢
zachgenius
2022-08-29 11:48:56 +08:00
粘包 难道不是“碰瓷”的意思? emmmm, 这个标题我都没看懂......TCP 警察......你再说某夫网?
icyalala
2022-08-29 11:53:29 +08:00
早上看到帖子乐了,以为大家会调侃一下粘包警察的耿
结果。。哈哈哈
moremoney
2022-08-29 11:54:26 +08:00
看到“TCP 粘包”这个专有名词,我表示极度震惊。连夜打车回到家里,战战兢兢翻开《计算机网络》,拿着放大镜仔细看了半夜,也没看到“粘包”两个字。我的后背不觉地渗出致密的汗水,双手止不住地发抖。匆忙打开电脑,一篇篇地翻着论文,试图寻找关于这个词的信息。可眼看天就要亮了,我依旧一无所获。我失望的躺在床上,满脑子都是“粘包,粘包,粘包!”,横竖睡不着,不得已打开了知乎,写下了一个问题“究竟什么是 TCP 粘包”。不一会儿答案就如雪花儿般涌了出来,每一片雪花上都写着一句话“TCP 没有粘包”。我颤抖的双手终于停了下来,一股热流从我心底涌到泪腺。啊,原来我并不孤独。
agagega
2022-08-29 11:57:45 +08:00
讨论一个东西的前提是得有定义,谁来定义这个 TCP 的包概念?其次,同样是流式读写,没有人会在读写文件的时候说有粘包问题吧?
DamonLe
2022-08-29 11:58:47 +08:00
哈哈哈哈,每年都有几次粘豆包。[头秃]
julyclyde
2022-08-29 13:14:54 +08:00
建议粘豆包用户都改用 websocket
NullData
2022-08-29 13:50:57 +08:00
@TsubasaHanekaw 掘金已经和内容农村差不多烂了
xilou31
2022-08-29 14:18:29 +08:00
某种意义来说,楼主已经成功了,确实吵起来了 (doge
leexy
2022-08-29 14:30:34 +08:00
@TWorldIsNButThis #7 nian 是形容词,大 nian 鼻涕;
zhan 鼻涕 zhan 手上甩不下来; zhan 胶带。
所以应该是 zhan 包,
nian 豆包
ipwx
2022-08-29 14:34:21 +08:00
TCP 确实有“粘包”问题。

所以为什么要死磕 TCP ?找个 TCP 上层的、有“消息”概念的协议不好嘛?比如 WebSocket ?

我有些反感粘包警察,是因为早就被标准化解决了无数遍,直接拿来就能用(比如 WebSocket 这个五层协议)的问题,非要当做现实中一个重大问题去翻来覆去地讨论。
nekoneko
2022-08-29 14:36:57 +08:00
分包组包这是网络层干的事情, 跟传输层有什么关系.
看 ip 协议有个分包组包, 然后造个 tcp 的拆包黏包, 真的是恶心啊, 很容易把基础不行的人带歪.
nekoneko
2022-08-29 14:37:51 +08:00
@ipwx #56 tcp 都没有包这个概念, 怎么会 粘和拆 呢
fuge
2022-08-29 14:41:32 +08:00
nnmlgbb
ChoateYao
2022-08-29 14:54:59 +08:00
@ipwx WebSocket 属于第五层?那么为什么握手要基于 HTTP 。

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

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

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

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

© 2021 V2EX