如果只用 Nginx 等现成的 HTTP Server 搭建 HTTP 服务,不自行建立 TCP 连接,是否就不用考虑 TCP 粘包这类传输层的问题?

2025 年 4 月 14 日
 drymonfidelia
5981 次点击
所在节点    程序员
68 条回复
jworg
2025 年 4 月 14 日
分好几种情况,你想问哪一种,HTTP 与 HTTP2 以及 sni proxy 与 static serve 做的似乎都不一样。如果是最简单的 HTTP + static serve 就是 \r\n 换行魔法呗。
roundgis
2025 年 4 月 14 日
http 還粘啥。
jiangzm
2025 年 4 月 14 日
http 服务为什么要考虑 tcp 问题,也不用考虑长链接问题。
Keuin
2025 年 4 月 14 日
2025 年了还在粘包
kazumaa
2025 年 4 月 15 日
按照协议规定读 tcp 数据,压根就不存在粘包的问题。http 服务本来就已经按照协议规定读包了,所以压根就不存在这种东西
duzhuo
2025 年 4 月 15 日
感觉可以复习一下计网分层那里
HTTP 作为上层协议,无需关心网络传输细节,只需通过 TCP 接口发送/接收数据。
xyooyx
2025 年 4 月 15 日
@drymonfidelia #10 建议把基础原理了解下,会高效不少
kitrap
2025 年 4 月 15 日
粘包这傻叉说法是从哪来的?
penisulaS
2025 年 4 月 15 日
我记得 2018 年论坛里就有粘包警察了
wangtian2020
2025 年 4 月 15 日
粘包从来不是问题,只是现象,一种符合通信协议的现象。
有些人非要自己不用库,自己去处理连接,那就自己处理这种情况
zhangsanfeng2012
2025 年 4 月 15 日
粘包,你们读"zhan bao"还是"niao bao"
Nasdaq
2025 年 4 月 15 日
买了台发动机担心齿轮坏了是吧?
rrfeng
2025 年 4 月 15 日
最近被 mtu mss gso tso 折腾
粘包能不能粘高级点
mmdsun
2025 年 4 月 15 日
还好这是 25 年,不然 OP 要被粘包警察喷死。
FishBear
2025 年 4 月 15 日
websocket http https 都是跑在 tcp 上的哦(除了新的 quic 在 udp 上)
nginx 跑的 http https 也是在 tcp 上的哦

tcp 性能最高 封装一次就损耗一次性能.

粘包这个词不大好,应该是我们 csdn 博客创造出来的概念?
tcp 只关心流,不关心你的数据,你应该自己解数据流.
zwb9412
2025 年 4 月 15 日
好奇 OP 为啥有 MOD 权限?
darklinden
2025 年 4 月 15 日
http 和 websocket 是在协议封包的,也就是说如果一个库实现了 http 或者 websocket ,当你使用这个库的时候,面对的接口就只有“包”为单位,不存在“粘”
cheng6563
2025 年 4 月 15 日
不自行建立 TCP 连接,那你是用 UDP 咯,UDP 那就你自己全得考虑了哦。
sola97
2025 年 4 月 15 日
笑死,我上个月去面试一家小公司,面试题里就有问粘包是什么
cnuser002
2025 年 4 月 15 日
楼主的担忧我能理解。比如一个发送端,一个接收端。

我当然希望每次接收端收到,都是一个完整的消息,不就能直接处理了么?

但如果这个消息,真的很大呢? 或许他一次发送不完,那我收到的就不全。我要等,这可就麻烦了呀。同样的,下一次把之前的尾巴,跟下个报文的头給一起发送了,我还得拆,更麻烦了。

嗯。Tcp 它就有这种操作,这不是它的问题,而是它的设计,就是基于 Stream ,像流水一样一直给你灌数据。 底层打散但是保证消息还是前后有序进来的。对于这种流,需要按流的处理方法,收取后进入缓冲区,然后在缓冲区里,根据协议里面的约定,比如固定包头,特殊符号来解析出内容。

而这个就是 HTTP 干的事情。 所以你的需求,用 HTTP 就可以实现。你可以认为 HTTP 接口每次拿到的,就是完整的数据。

WebSocket 也可以。

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

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

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

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

© 2021 V2EX