【2018-06-02】有关TCP和UDP粘包和消息保护边界
📅 2026/7/22 6:17:26
👁️ 次浏览
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2018-06-02 标题有关TCP和UDP粘包和消息保护边界分类编程 标签TCPUDPTCP和UDP的分包问题参考链接《 http://www.cnblogs.com/lancidie/archive/2013/10/28/3392428.html》在socket网络程序中TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程收发两端客户端和服务器端都要有一一成对的socket因此发送端为了将多个发往接收端的包更有效的发到对方使用了优化方法Nagle算法将多次间隔较小且数据量小的数据合并成一个大的数据块然后进行封包。这样接收端就难于分辨出来了必须提供科学的拆包机制。 对于UDP不会使用块的合并优化算法这样实际上目前认为是由于UDP支持的是一对多的模式所以接收端的skbuff(套接字缓冲区采用了链式结构来记录每一个到达的UDP包在每个UDP包中就有了消息头消息来源地址端口等信息这样对于接收端来说就容易进行区分处理了。那么什么是保护消息边界和流呢?保护消息边界就是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息.也就是说存在保护消息边界,接收端一次只能接收发送端发出的一个数据包. 而面向流则是指无保护消息保护边界的,如果发送端连续发送数据,接收端有可能在一次接收动作中,会接收两个或者更多的数据包.我们举个例子来说,例如,我们连续发送三个数据包,大小分别是2k, 4k , 8k,这三个数据包,都已经到达了接收端的网络堆栈中,如果使用UDP协议,不管我们使用多大的接收缓冲区去接收数据,我们必须有三次接收动作,才能够把所有的数据包接收完.而使用TCP协议,我们只要把接收的缓冲区大小设置在14k以上,我们就能够一次把所有的数据包接收下来.只需要有一次接收动作.这就是因为UDP协议的保护消息边界使得每一个消息都是独立的.而流传输,却把数据当作一串数据流,他不认为数据是一个一个的消息. 所以有很多人在使用tcp协议通讯的时候,并不清楚tcp是基于流的传输,当连续发送数据的时候,他们时常会认识tcp会丢包.其实不然, 因为当他们使用的缓冲区足够大时,他们有可能会一次接收到两个甚至更多的数据包,而很多人往往会忽视这一点,只解析检查了第一个数据包,而已经接收的其他数据包却被忽略了.所以大家如果要作这类的网络编程的时候,必须要注意这一点.结论根据以上所说可以这样理解TCP为了保证可靠传输尽量减少额外开销每次发包都要验证因此采用了流式传输面向流的传输 相对于面向消息的传输可以减少发送包的数量。从而减少了额外开销。但是对于数据传输频繁的程序来讲使用TCP可能会容易粘包。 当然对接收端的程序来讲如果机器负荷很重也会在接收缓冲里粘包。这样就需要接收端额外拆包增加了工作量。因此这个特别适合的是数据要求可靠传输但是不需要太频繁传输的场合 两次操作间隔100ms具体是由TCP等待发送间隔决定的取决于内核 中的socket的写法 而UDP由于面向的是消息传输它把所有接收到的消息都挂接到缓冲 区的接受队列中因此它对于数据的提取分离就更加方便但是 它没有粘包机制因此当发送数据量较小的时候就会发生数据包 有效载荷较小的情况也会增加多次发送的系统发送开销系统调用 写硬件等和接收开销。因此应该最好设置一个比较合适的数据包 的包长来进行UDP数据的发送。UDP最大载荷为1472因此最好能 每次传输接近这个数的数据量这特别适合于视频音频等大块数据 的发送同时通过减少握手来保证流媒体的实时性。
ZXPInstaller:Adobe插件安装的革命性解决方案 【免费下载链接】ZXPInstaller Open Source ZXP Installer for Adobe Extensions 项目地址: https://gitcode.com/gh_mirrors/zx/ZXPInstaller
还在为Adobe Creative Cloud插件的安装而烦恼吗?面对复…
📅 2026/7/20 18:43:06
[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2018-06-26 | 标题:UDP中一个包的大小最大能多大 | 分类: 编程 | 标签࿱…
📅 2026/7/20 14:57:45
本文仅用于本地开发学习,MCP服务拥有本地文件读写权限,存在敏感文件泄露、路径穿越风险,请严格遵守以下安全规范:
仅授权AI访问非隐私、无密钥、无配置文件的项目目录,禁止直接扫描系统根目录、用户桌面、数据库密钥文…
📅 2026/7/21 0:36:53
1. 为什么自考论文写作需要AI工具辅助?写论文这件事,对于自考学生来说简直就是噩梦般的存在。白天上班累成狗,晚上回家还要对着空白的文档发呆。选题没方向、框架理不清、文献找不到、查重过不了...每个环节都能把人逼疯。我当年自考的时候&a…
📅 2026/7/22 6:16:41
1. 低功耗芯片设计的行业背景与挑战在2023年全球半导体技术峰会上,一位资深工程师展示了一组令人震惊的数据:采用相同28nm工艺节点的两款IoT芯片,经过优化的设计相比原始设计可降低47%的动态功耗。这个案例完美诠释了RTL级低功耗设计的巨大潜…
📅 2026/7/22 6:16:41
1. 项目概述:为什么我们要研究手游的“内存”在移动游戏开发领域,cocos2d-x引擎曾是一个时代的标志。从早期的《捕鱼达人》到后来的《刀塔传奇》,无数我们耳熟能详的手游都基于这个引擎构建。对于开发者、安全研究员乃至是热衷于研究游戏机制…
📅 2026/7/22 6:16:41
影刀RPA 系统升级自动化:版本更新与兼容性验证
作者:林焱 什么情况用什么
公司有50台服务器要打安全补丁,100台办公电脑要升级到最新版软件。运维同学一台台远程上去敲命令,两天才能搞完——而且中间可能有几台挂掉了没人发现&a…
📅 2026/7/22 6:16:41
1. 从寄存器手册到实际应用:eHRPWM模块的深度配置指南如果你正在使用TI的C2000系列微控制器做电机控制、数字电源或者任何需要精密PWM输出的项目,那么eHRPWM模块绝对是你绕不开的核心外设。手册里那几十页的寄存器描述,从TBCTL到AQCTL&#x…
📅 2026/7/22 6:16:41
想找个安静角落发呆?这篇 geo mimi cafe 实测能帮你避坑。不用去网红店排队,这里才是真治愈系。看完直接抄作业,不花冤枉钱。上周末,我本来只想随便喝杯咖啡。
结果误打误撞进了这家店。
位置有点偏,不在主街上。
导航导到一半就失联了。
但我没回头,顺着巷子往里走。
空…
📅 2026/7/22 6:15:47
1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…
📅 2026/7/22 0:00:13
1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…
📅 2026/7/22 0:00:13
甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…
📅 2026/7/22 0:00:13
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/22 1:05:21
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/22 1:05:21
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/22 1:05:21
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/21 7:04:23
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/21 17:04:52
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/22 5:05:32