UDP就一定比TCP快吗?(完结)
UDP 比 TCP 快吗?
相信就算不是八股文老手,也会下意识的脱口而出:"是"。
要追问为什么,估计大家也能说出个大概。

但这也让人好奇,用 UDP 就一定比用 TCP 快吗?什么情况下用 UDP 会比用 TCP 慢?
今天就来和球友们聊下这个话题。
一、使用 socket 进行数据传输
作为一个程序员,假设我们需要在 A 电脑的进程发一段数据到 B 电脑的进程,我们一般会在代码里使用 socket 进行编程。
socket 就像是一个电话或者邮箱(邮政的信箱)。当你想要发送消息的时候,拨通电话或者将信息塞到邮箱里,socket 内核会自动完成将数据传给对方的这个过程。
基于 socket 我们可以选择使用 TCP 或 UDP 协议进行通信。
对于 TCP 这样的可靠性协议,每次消息发出后都能明确知道对方收没收到,就像打电话一样,只要"喂喂"两下就能知道对方有没有在听。
而 UDP 就像是给邮政的信箱寄信一样,你寄出去的信,根本就不知道对方有没有正常收到,丢了也是有可能的。
这让我想起了大概 17 年前,当时还没有现在这么发达的网购,想买一本《掌机迷》杂志,还得往信封里塞钱,然后一等就是一个月,好几次都怀疑信是不是丢了。我至今印象深刻,因为那是我和我哥攒了好久的钱。。。
回到 socket 编程的话题上。
创建 socket 的方式就像下面这样。
fd = socket(AF_INET, 具体协议,0);
注意上面的"具体协议",如果传入的是SOCK_STREAM,是指使用字节流传输数据,说白了就是TCP 协议。

如果传入的是SOCK_DGRAM,是指使用数据报传输数据,也就是UDP 协议。

返回的fd是指 socket 句柄,可以理解为 socket 的身份证号。通过这个fd你可以在内核中找到唯一的 socket 结构。
如果想要通过这个 socket 发消息,只需要操作这个 fd 就行了,比如执行 send(fd, msg, ...),内核就会通过这个 fd 句柄找到 socket 然后进行发数据的...
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复