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

119 天前
 error0

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

7328 次点击
所在节点    程序员
68 条回复
error0
119 天前
说好月经贴呢 人呢???
GeekGao
119 天前
“TCP ”粘包和拆包“ 这个说法像是 TCP 的设计错误” —— 这只是 OP 自己的感觉吧。。。

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

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

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

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

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

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

© 2021 V2EX