1. 当前位置: 网站首页 >  路由器百科 >  TCP和UDP有什么区别?视频通话卡成PPT、网页却秒开,我把这俩协议扒明白了

TCP和UDP有什么区别?视频通话卡成PPT、网页却秒开,我把这俩协议扒明白了

TCP和UDP的区别对比图:TCP挂号信式要握手回执重发,UDP塞邮筒式发完就忘,附家里应用走哪个协议对照

上周我妈跟上了大学的外甥女视频,画面卡成PPT,声音一句一断,她一度以为是自己手机坏了。可就在同一条WiFi下,我这边刷网页秒开,下载东西也飞快。网络半边瘫,坏的偏偏只坏一半——这事的根子,就在TCP和UDP这两个协议身上。今天我把这俩东西扒明白,你看完能解决两类实际问题:视频卡网页不卡的怪病,和端口转发选错协议白配的坑。

先说清楚:一个要签收,一个塞了邮筒就走

TCP和UDP都是「运输方式」,帮你把数据从一台设备拉到另一台设备。区别在脾气。

TCP像寄挂号信。发货前双方先联系上,每个包裹都要对方签收回执,丢了就补寄,收到的顺序乱了还能按编号拼回原样。规矩多,慢一点,但一个字节都不会少。

UDP像把信塞进邮筒就走。发完就忘,不确认对方收没收到,也不管先后顺序。轻装上阵,快得飞起,代价是可能丢、可能乱序。

这笔账在数据包头上看得最直白:UDP的包头固定就8个字节,TCP的包头最少20个起步,握手确认重传那一堆机制全塞在里头。一个背了个双肩包就出门,一个拖了三个行李箱。没有谁更好,只有拉的货合不合适——网页少一个字节就显示不全,必须TCP;实时语音晚半秒就难受,宁可用UDP。

TCP讲究的那一套:先握手、要回执、丢了重发

TCP开工前有个三次握手,翻译成人话就三句:你能听到吗?能听到。好,我开始说了。这三句走完,一条「连接」才算建立起来,之后所有的包都走这条道,每个包带序号,对方收一个回一个执,发送方发现哪个回执迟迟没来,就把那个包重发一遍。

我在家里那台电脑上开十几个网页、挂着网盘和微信,敲了个netstat -ano数了一下,TCP处于ESTABLISHED状态的连接五六十条——每开一个网页、每传一个文件,背后都是一条握过手的连接在那儿候着。这个命令你也能敲,Windows自带,第四列状态清一色ESTABLISHED,那就是一条条签着收的挂号信通道。

代价也明摆着。网一抖,包丢了,TCP就停下重发,速度跟着掉——我之前写丢包排查那篇提过,下载速度莫名腰斩,很多时候不是网断了,是TCP在背后疯狂补件。好处是你从没见过网页打开来缺半张图,那就是回执机制在兜底。

聊完了还得走个告别流程,行话叫四次挥手,双方互相确认「我说完了」「我也说完了」才拆线。所以每一条TCP连接都是个有始有终的完整过程,建立要成本,维持要成本,断开还要成本。手机开一晚上不锁屏,后台几十条连接就这么一直候着,路由器的会话表也因此被TCP占去一大半——这是后话,下面会再提到。

UDP不管这些:发完就忘,图的就是快

UDP一个握手的动作都没有,包扔出去就完事。听着糙,但很多活儿就吃这一套。

头一个是DNS查询。你敲个网址,电脑问DNS服务器「这网址对应啥IP」,一问一答总共几十个字节。为这几十字节先握三次手、答完再挥四次手告别,纯属折腾,所以DNS走UDP,一包发出直接等答案——这就是我写DNS解析那篇时说的「UDP 53小包」的来历。也有例外:答案超过512字节(比如一条域名挂了几十条记录),UDP一包装不下会被截断,客户端自动换TCP重新问一遍。小问答用UDP,大答卷用TCP,各干各的。

第二个是组播。IPTV一个频道全城观众看,信号在半路一份变多份往下分,压根没法挨个观众签收,所以组播只建在UDP上,这是协议设计时就定死的。

第三个就是视频通话。实时画面走TCP会出一种蠢事:网络抖一下丢了两帧,TCP费劲把旧帧重传过来,可场面早就过去了,你等于在直播里看两秒前的回放。所以微信视频、腾讯会议这类实时音视频,业界通行做法是UDP打底、上面套一层RTP负责时间戳和顺序,丢了帧不等,直接编下一帧顶上。我妈那晚的PPT画面,就是UDP的包在路上丢了没人补。

家里谁走TCP谁走UDP:一张表分清

干的事走的协议为什么
网页、网盘下载TCP少一个字节页面就坏
微信文字、传文件TCP消息和文件不能缺斤短两
游戏对战、语音开黑UDP快比全重要,慢半拍就是送人头
视频通话UDP+RTP旧帧重传没意义,丢了编新帧
DNS查询小答案UDP/大答案TCP一问一答不值得握手
IPTV组播UDP一份发一群,没法挨个签收
ping都不是,是ICMP回声探测,不算运输

末行这个最容易想岔:很多人以为ping走UDP,其实它是ICMP协议,跟TCP、UDP是并列的三种东西,干的是「你在吗」的回声探测,我写延迟那篇挨段ping用的就是它。

两个真用得上的场景

头一个场景:端口转发协议选错,等于白配。TCP的443端口和UDP的443端口是两扇完全不同的门,各自的规矩互不搭界。给游戏机配端口转发时官方给的表都分两列——PS5的TCP 1935和UDP 3074就是两个条目,你只转了TCP那扇,UDP的门照样关着,联机照样黄灯。qBittorrent做种要绿灯,TCP和UDP也都得通,它那个μTP传输本身就是拿UDP模仿TCP的脾气,我写下载机那篇限速时就被它坑过一回。实在分不清,协议一栏选「全部」,多开一扇门不碍事,总比少开强。

第二个场景:半边瘫分诊。语音卡、游戏卡,但网页秒开——UDP在丢,往晚高峰信道拥挤、2.4G干扰、路由器QoS压小包这几个方向查;反过来网页龟速、语音倒还行,那是TCP在丢包重传,速度被补件拖垮了。两类病根查法不一样,我写过三段ping的定位法,照着走就行。还有一个隐蔽点:路由器的NAT会话表里UDP条目超时收得快,挂BT保种那种UDP大户一多,表一满新连接全丢,这也是UDP的锅居多。

游戏是最把UDP脾气吃透的一类。射击游戏里你开一枪,这枪的数据包晚了半秒到,人都跑了,这一枪等于白发——所以对战数据天生走UDP,丢了就丢了,下一帧马上再来。游戏加速器吹的「降延迟」,一大半功夫花在给UDP包找更顺的路上,跟TCP没半点关系。这也解释了一个怪现象:家里网速测出来五百兆,游戏照样460,因为测速网页走TCP跑得欢,游戏那点UDP小包在晚高峰的信道里挤不过别人。

收尾:先做什么再做什么

真碰上「视频卡网页好」这种半边瘫,按这个顺序来:第一步别急着怪宽带,先换网线直连或者贴着路由器测,排除信号;第二步三段ping看丢包落在哪一段;第三步把手机从2.4G挪到5G,UDP小包在拥挤信道上死得最快;第四步路由器后台看QoS或者「智能限速」有没有压上传;第五步还是卡,晚上十点后再测一次,晚高峰过了就顺,那是共享出口的锅,报修也带上丢包记录去说。两个协议没有高下,一个把货全须全尾送到,一个把货飞快扔过去——知道你家每样东西吃的哪碗饭,网出了怪病才不会病急乱投医。

对了,我妈那晚的毛病最后也查明白了:她习惯在卧室刷手机,那格信号是2.4G的,晚高峰整栋楼的2.4G挤成一锅粥,UDP小包最先遭殃。把手机钉到5G频段上,画面当场就顺了。半边瘫看着邪门,拆开看就是一半货走了顺路、一半货在堵车。

展开全文


版权说明 手机扫码阅读
版权所有:《数巢笔记》 => 《TCP和UDP有什么区别?视频通话卡成PPT、网页却秒开,我把这俩协议扒明白了》
本文地址:https://www.shunot.com/lybk/1076.html
除非注明,文章均为 《SHUNOT》 原创,欢迎转载!转载请注明本文地址,谢谢。

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:master_135

工作日:9:00-23:00,节假日休息

扫码关注