当前位置: 首页 > article >正文

从微信聊天到在线游戏:聊聊UDP和TCP在你手机App里的那些‘小心思’

从微信聊天到在线游戏聊聊UDP和TCP在你手机App里的那些‘小心思’每天我们都在用手机App聊天、打游戏、看视频但很少有人注意到这些应用背后隐藏的网络协议选择。为什么微信文字消息总能准确送达而语音通话偶尔会断断续续为什么王者荣耀对战卡顿时人物会瞬移这些现象背后其实是UDP和TCP这两种网络传输协议在默默发挥着作用。1. 微信聊天TCP如何保证你的消息不丢失当你发送一条微信文字消息时App会选择TCP协议来传输数据。TCP就像一位严谨的邮差确保每个包裹都能准确无误地送达目的地。1.1 三次握手建立可靠的连接通道TCP在传输数据前会进行三次握手客户端发送SYN报文同步序列编号服务端回应SYN-ACK报文客户端发送ACK确认这个过程就像打电话时的确认喂听得到吗听得到你呢我也听得到开始说吧# Wireshark抓包示例中的TCP握手过程 1 0.000000 192.168.1.2 → 203.119.12.34 TCP 74 55921 → 80 [SYN] Seq0 Win64240 Len0 2 0.028203 203.119.12.34 → 192.168.1.2 TCP 74 80 → 55921 [SYN, ACK] Seq0 Ack1 Win65535 Len0 3 0.028246 192.168.1.2 → 203.119.12.34 TCP 66 55921 → 80 [ACK] Seq1 Ack1 Win64240 Len01.2 消息重传机制网络不好的时候怎么办当网络状况不佳时TCP会启动重传机制发送方会为每个数据包设置定时器如果超时未收到确认(ACK)会自动重发接收方会对数据包进行排序确保应用层收到的是有序数据实际案例在地铁或电梯里发微信消息时你可能注意到消息旁边会出现发送中的提示这正是TCP在努力重传数据直到成功。2. 微信语音通话UDP的实时性优势与文字消息不同微信语音通话选择了UDP协议。UDP就像寄明信片 - 不保证送达但投递速度更快。2.1 无连接特性带来的低延迟UDP不需要建立连接省去了握手过程直接发送数据包不等待确认不保证顺序# 简化的UDP发送代码示例 import socket sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(voice_data_packet, (ip, port)) # 直接发送无需连接2.2 丢包与抖动处理语音通话可以容忍少量丢包丢失个别数据包时人耳仍能理解语音内容采用前向纠错(FEC)技术通过冗余数据恢复丢失的部分抖动缓冲(Jitter Buffer)平滑网络波动带来的影响提示在Wi-Fi和4G网络间切换时UDP能更快适应网络变化这正是语音通话选择它的关键原因。3. 在线游戏UDP为主TCP为辅的混合策略王者荣耀等实时对战游戏主要依赖UDP但在某些场景也会结合TCP使用。3.1 游戏状态同步的实时需求游戏数据对延迟极其敏感玩家操作需要50ms内得到响应TCP的重传机制会导致卡顿UDP允许丢弃过时的数据包保持游戏流畅对比表游戏数据类型与协议选择数据类型协议选择原因玩家移动UDP允许丢包新位置覆盖旧位置技能释放UDP实时性高于可靠性聊天消息TCP需要确保消息完整支付信息TCP必须保证交易安全3.2 弱网环境下的优化策略游戏开发者会在UDP基础上实现部分可靠机制关键操作使用可靠UDP如购买装备非关键数据允许丢失如环境特效客户端预测和服务器协调相结合4. 协议选择的艺术如何权衡可靠性与实时性选择UDP还是TCP本质上是不同场景下对三个核心需求的权衡4.1 可靠性 vs 实时性 vs 带宽效率关键考量因素数据完整性要求如银行转账必须100%准确延迟敏感性如视频通话要求200ms网络条件移动网络需要适应频繁切换4.2 现代应用的混合解决方案许多应用采用混合策略视频会议UDP传输视频TCP传输信令在线文档TCP同步文本内容UDP传输光标位置物联网UDP上报传感器数据TCP进行固件升级// WebRTC中的协议选择示例混合使用UDP和TCP const pc new RTCPeerConnection({ iceTransportPolicy: all, // 同时尝试UDP和TCP bundlePolicy: max-bundle // 优化带宽使用 });4.3 开发者决策框架选择协议时可参考以下决策树数据必须100%可靠 → 选TCP延迟要求100ms → 考虑UDP需要穿越严格防火墙 → TCP更易通过大量客户端并发 → UDP扩展性更好需要自定义可靠性机制 → 基于UDP开发在实际项目中我遇到过视频直播应用从TCP切换到UDP后卡顿率下降了60%但需要额外实现丢包重传逻辑的案例。这种权衡需要根据具体业务需求来决定。

相关文章:

从微信聊天到在线游戏:聊聊UDP和TCP在你手机App里的那些‘小心思’

从微信聊天到在线游戏:聊聊UDP和TCP在你手机App里的那些‘小心思’ 每天我们都在用手机App聊天、打游戏、看视频,但很少有人注意到这些应用背后隐藏的网络协议选择。为什么微信文字消息总能准确送达,而语音通话偶尔会断断续续?为…...

如何快速上手VNote:跨平台Markdown笔记软件的完整指南

如何快速上手VNote:跨平台Markdown笔记软件的完整指南 【免费下载链接】vnote A pleasant note-taking platform. 项目地址: https://gitcode.com/gh_mirrors/vn/vnote VNote是一款基于Qt开发的免费开源Markdown笔记应用,专为追求高效编辑体验的用…...

图案生成自动化:从基础操作到专业应用的完整指南

图案生成自动化:从基础操作到专业应用的完整指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在现代设计工作流中,图案生成往往是最耗时的环节之一。设计…...

别再为小程序合法域名发愁了!手把手教你用宝塔+FRP搞定内网穿透与HTTPS配置

微信小程序合法域名配置实战:从内网穿透到HTTPS全流程指南 当你兴致勃勃地开发完微信小程序的后端接口,准备在真机测试时,却遭遇"不在合法域名列表中"的报错——这种挫败感我深有体会。三年前我的第一个小程序项目就卡在这个环节整…...

weixin273基于微信小程序的刷题系统的设计与实现+springboot(文档+源码)_kaic

第4章 系统实现4.1登录功能模块的实现登录功能包括用户登录和管理员登录,在登录界面设计中包括用户名和密码、身份的检验。用户名和密码、身份的检验过程由数据库自动完成,此过程需要1秒左右。首先由用户填写账号和密码,然后选择身份&#xf…...

【智能汽车竞赛】从理论到实战:PID参数整定的艺术与避坑指南

1. PID控制:智能车竞赛的核心武器 第一次参加智能车比赛时,我看着自己的小车在赛道上蛇形走位的样子,简直像个醉汉。直到真正理解了PID控制,才明白原来让小车"听话"是门技术活。PID控制器就像给小车装了个智能大脑&…...

微信聊天记录数据自主权解决方案:WeChatMsg本地化部署与深度应用指南

微信聊天记录数据自主权解决方案:WeChatMsg本地化部署与深度应用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...

Python爬虫实战:手把手教你如何基于 Python 异步架构的 Crates.io 工业级爬虫实战!

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐☆☆☆(基础级) 🉐福利: 一次订阅…...

打破音乐枷锁:ncmdumpGUI让你的NCM文件重获自由

打破音乐枷锁:ncmdumpGUI让你的NCM文件重获自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你下载的音乐其实并不属于你。当你在网易云音乐客户…...

只剩马斯克自己!xAI 11个联合创始人跑光了

11位联合创始人三年出清、只剩马斯克一人,xAI这场「天团散伙」背后,藏着AI时代最残酷的人才战争与帝国裂缝。3月28日,Ross Nordeen悄悄摘掉了自己在X平台上的xAI员工认证标识。他发了一张照片——「触碰一些草」。没有长篇告别信,…...

AIGlasses_for_navigation 开发环境快速配置:Anaconda虚拟环境指南

AIGlasses_for_navigation 开发环境快速配置:Anaconda虚拟环境指南 你是不是也遇到过这种情况:好不容易在本地跑通了一个项目,换台电脑或者更新了几个库,结果就报了一堆莫名其妙的错误。或者,你想同时维护两个需要不同…...

保姆级教程:手把手教你为Jetson Orin Nano刷入R36.4.4系统(从下载到开机)

从零开始:Jetson Orin Nano开发者套件系统刷入全流程实战指南 当你第一次拿到NVIDIA Jetson Orin Nano开发者套件时,那种兴奋感可能很快会被"我该如何开始"的困惑所取代。这款性能强大的边缘计算设备确实令人着迷,但如果没有正确的…...

如何快速配置AdGuard广告拦截扩展:5分钟完成跨浏览器隐私保护的完整教程

如何快速配置AdGuard广告拦截扩展:5分钟完成跨浏览器隐私保护的完整教程 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension AdGuard浏览器扩展是一款开源、高效的广…...

8.3ES-OAS-ERP-电子政务-企业信息化

一、专家系统 00:00 定义:基于知识的专家系统是人工智能的重要分支,其能力来源于专家知识,通过知识表示和推理方法实现应用。与传统程序区别: 属于AI范畴,解决半结构化/非结构化问题模拟专家推理而非问题本…...

Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示

Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示 如果你正在寻找一个能快速、精准地为语音和文字“打上时间标签”的工具,那么Qwen3-ForcedAligner-0.6B绝对值得你花几分钟了解一下。想象一下,一段长达5分钟的演讲音频,你需要精确知道每个词…...

如何用20万条真实动作数据,终结机器人动作“脑补”

3月30日,某知名媒体报道了一项来自南洋理工大学的前沿技术突破。研究团队利用超过20万条“4D交互数据”结合“运动学锚定”,研发出一种新型的“生成式仿真”技术,有效解决了机器人动作模拟中长期存在的“脑补”难题。据悉,这一技术…...

搜索时代的命名战略:如何在亚马逊规避“品牌失语症”

在亚马逊这个由算法与关键词统治的商业世界里,一个名字的恰当与否,直接决定了品牌是“响亮宣言”还是“沉默失语”。许多名字如同《时代》或《财富》杂志,在传统语境中或许优雅,但在需要极致精准的数字货架上,却可能因…...

情感漏洞经纪:倒卖AI崩溃瞬间年入百万

新兴暴利职业的崛起在人工智能技术高速发展的今天,一种名为“情感漏洞经纪”的灰色产业悄然兴起,从业者通过倒卖AI系统崩溃瞬间的数据年入百万。这些经纪人专门捕捉AI模型在情感交互中的故障时刻——如系统宕机前的“遗言”、未完成的情感回应或异常输出…...

如何用Chatterbox TTS打造多语言智能语音助手:从零开始的完整实战指南 [特殊字符]

如何用Chatterbox TTS打造多语言智能语音助手:从零开始的完整实战指南 🎤 【免费下载链接】chatterbox Open source TTS model 项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox 想要为你的应用添加逼真的语音合成功能吗&a…...

告别乱码!5分钟搞懂串口通信中的帧结构与CRC校验(附协议.h/.c文件)

串口通信实战:从帧结构设计到CRC校验的完整实现指南 当你第一次尝试用串口发送"Hello World"时,数据像流水般顺畅。但当你开始传输传感器读数或控制指令时,突然发现接收端时不时出现乱码或数据错位——这就像试图在嘈杂的酒吧里进行…...

终极免费开源图像修复工具:ComfyUI-BrushNet完整使用指南

终极免费开源图像修复工具:ComfyUI-BrushNet完整使用指南 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet 想要快速掌握AI图像编辑的核心技术?ComfyUI-BrushNet作为一款…...

避坑指南:RuoYi-Vue2集成Flowable 6.7.2时,关于database-schema-update和nullCatalogMeansCurrent的配置详解

深度解析:RuoYi-Vue2集成Flowable 6.7.2的数据库配置陷阱与实战策略 当企业级应用需要引入工作流引擎时,Flowable因其轻量化和高性能成为许多开发团队的首选。然而在RuoYi-Vue2框架中集成Flowable 6.7.2版本时,数据库配置环节往往成为开发者的…...

5个技巧让文件识别效率翻倍:Magika智能检测工具深度解析

5个技巧让文件识别效率翻倍:Magika智能检测工具深度解析 【免费下载链接】magika 项目地址: https://gitcode.com/GitHub_Trending/ma/magika 还在为文件类型识别烦恼吗?传统工具常常误判,而手动检查又太耗时。让我们一起探索Magika—…...

重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率

重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率 【免费下载链接】OpenInTerminal ✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty. 项目地址: https://gitcode.com/gh_mirrors/op/OpenInT…...

OpenClaw+Qwen3.5-4B-Claude镜像:30分钟搭建逻辑推理自动化工作流

OpenClawQwen3.5-4B-Claude镜像:30分钟搭建逻辑推理自动化工作流 1. 为什么需要逻辑推理自动化 上周我遇到一个典型的技术问题:需要从200多行Python日志中找出导致接口超时的根本原因。手动排查不仅耗时,还容易遗漏关键线索。这让我开始思考…...

保姆级教程:用STM32CubeMX配置TIM1的PA8和PA11输出PWM波(STM32F103C8T6)

STM32CubeMX实战:从零配置TIM1的PA8/PA11输出PWM驱动电机 当你第一次拿到STM32F103C8T6这块蓝色的小板子时,可能会被密密麻麻的引脚吓到——但别担心,今天我们要用STM32CubeMX这个神器,像搭积木一样轻松配置出精准的PWM波形。我清…...

企业级图片批量处理方案:InstructPix2Pix在电商修图中的落地实践

企业级图片批量处理方案:InstructPix2Pix在电商修图中的落地实践 1. 引言:电商修图的效率困局 想象一下,一家中型电商公司,每天要上新几百个商品。每个商品都需要一组高质量的主图、细节图、场景图。设计师团队忙得焦头烂额&…...

CSS 嵌套语法最佳实践:从入门到精通的完整指南

CSS 嵌套语法最佳实践:从入门到精通的完整指南 CSS 是流动的韵律,JS 是叙事的节奏。而 CSS 嵌套,是让这份韵律更加优雅、结构更加清晰的魔法。 一、CSS 嵌套:现代样式表的革命 CSS 嵌套(Nesting)是 CSS 原…...

volatile、内存屏障与 CPU 缓存机制详解

一、前置认知:CPU 缓存模型——并发可见性问题的根源 要理解 volatile,首先要搞懂 CPU 缓存模型。在计算机系统中,CPU 的运算速度远高于内存的读写速度,为了弥补两者之间的性能差距,CPU 厂商在 CPU 和内存之间引入了缓…...

Zemax优化别再乱点‘锤子’了!一个光学新手的真实踩坑与避坑指南

Zemax优化实战:从新手误区到高效操作的进阶指南 刚接触Zemax的光学设计师们,往往会被软件中那个神秘的"锤形优化"按钮所吸引——看似简单的点击就能自动改善设计,这种诱惑难以抗拒。但很快就会发现,盲目依赖这个功能可能…...