TCP 粘包? 到底有没有粘包?

2024-08-24 18:20:46 +08:00
 error0

听说这是贵站的月经贴! 关于 TCP 协议 ”粘包和拆包“ 的见解

8909 次点击
所在节点    程序员
68 条回复
error0
2024-08-24 18:26:04 +08:00
说好月经贴呢 人呢???
R4rvZ6agNVWr56V0
2024-08-24 18:31:21 +08:00
“TCP ”粘包和拆包“ 这个说法像是 TCP 的设计错误” —— 这只是 OP 自己的感觉吧。。。

要正确处理 TCP 流数据,应用层需要:
1.自己定义消息的边界,例如使用固定长度、长度字段、或特殊分隔符。
2.在接收端根据定义的边界来解析完整的消息。
3.不要假设一次接收的数据就是一个完整的消息。
error0
2024-08-24 18:34:37 +08:00
@GeekGao 🤣你怎么跳过阅读到最后
anjingdexiaocai
2024-08-24 18:35:28 +08:00
个人理解所谓的粘包,拆包,都是应用层协议定义不明确,把锅甩给传输层。就好比装货和卸货两方自己不定义好规则,怪运输火车搞出问题。
07aPzknB16ui9Cp3
2024-08-24 18:35:47 +08:00
引流的态度要不要这么屌的哦
error0
2024-08-24 18:35:48 +08:00
@GeekGao 但是在很多技术论坛就是这样 ,很多书籍,以及面试题都再说 如何处理 tcp 粘包问题
error0
2024-08-24 18:36:17 +08:00
R4rvZ6agNVWr56V0
2024-08-24 18:36:49 +08:00
@error0 因为在我的印象里,没人说 TCP 协议有这种“设计错误” 啊,所以,我的认知里就不会存在你观察到的“问题“
error0
2024-08-24 18:37:50 +08:00
@GeekGao 你可以到搜索引擎搜到 如何处理 tcp 粘包问题,这不就是再说是 tcp 的问题吗?
error0
2024-08-24 18:38:38 +08:00
@GeekGao 就是有那种 为什么 tcp 不帮我处理好数据边界 要分开 有一种责怪的认为
julyclyde
2024-08-24 18:40:06 +08:00
@error0 你要是觉得能搜到就存在,那你的理解能力和逻辑都有问题
julyclyde
2024-08-24 18:40:21 +08:00
@error0 因为 TCP 是流,所以不负责处理边界
error0
2024-08-24 18:40:53 +08:00
@julyclyde 请指出我的哪里理解不对。 感谢!
R4rvZ6agNVWr56V0
2024-08-24 18:41:28 +08:00
@error0
1.这是应用层开发问题啊。无非就是词汇的释义问题罢了
2.我没见到有帖子说这是 TCP 的协议缺陷啊。
3.难不成取消这个词,非要改口为:“TCP 协议栈的应用层如何处理 TCP 流(数据不延续)问题” 类似的一长串话?
julyclyde
2024-08-24 18:42:30 +08:00
@error0 哪里不对?是逻辑不对
tcp 是底层协议,你要分界的是高层协议
底层对高层根本无感知,当然不负责去做分界了
error0
2024-08-24 18:45:31 +08:00
@GeekGao 1 、确实是的,但是何必造出一个所谓的词汇?是没有词汇能解释这种现象? 2 、你可以 google 搜索 “如何处理 tcp 的粘包?” 这个问题会让别人以为这是 tcp 的缺陷,实际上是用户处理不当。3 、大部分有权威的网络书籍都在说 tcp 流不会按照用户所认为的长度传输。
error0
2024-08-24 18:46:09 +08:00
@julyclyde 我所表达就是底层对高层无感知!
R4rvZ6agNVWr56V0
2024-08-24 18:51:38 +08:00
@error0

我是觉得是你自己已有的知识领域的偏见(非贬义,因为每个人都有不同程度的偏见)导致了你的这次思考和质疑。
关于词汇释义问题,未必说都是科学的,好比村妇喂鸡时大叫“咯咯咯咯”,有的人觉得应该改为“咕咕咕咕“才对。
但是一旦形成了群体共识,那么就不好反驳了,毕竟你觉得对的,别人不会觉得对,何况本质上也没对错之分。
oamu
2024-08-24 18:52:07 +08:00
粘包👮来了!谁说粘包的通通带走!
coderxy
2024-08-24 18:52:54 +08:00
说粘包的通通逮走

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

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

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

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

© 2021 V2EX