全国直销电话:4006-854-568
IT-technology
以人为本,众志成城,以“用户至上”.“服务上乘”为原则,
追求产品和服务高质量,努力实现与客户之间真诚有效的沟通,
不断地圆梦、奔跑与腾飞。
新闻动态   NEWS
动图图解 | UDP就一定比TCP快吗?-北京赛维博信科技发展有限公司
来源:本文摘自网络,如有侵权请联系删除 | 作者:svbx001 | 发布时间: 2022-11-07 | 1418 次浏览 | 分享到:

TCP里,它内部会根据MSS的大小分段,这时候进入到IP层之后,每个包大小都不会超过MTU,因此IP层一般不会再进行分片。这时候发生丢包了,只需要重传每个MSS分段就够了。

图片
TCP分段

但对于UDP,其本身并不会分段,如果数据过大,到了IP层,就会进行分片。此时发生丢包的话,再次重传,就会重传整个大数据包

图片
UDP不分段

对于上面这种情况,使用UDP就比TCP要慢

当然,解决起来也不复杂。这里的关键点在于是否实现了数据分段机制,使用UDP的应用层如果也实现了分段机制的话,那就不会出现上述的问题了


总结

  • TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP慢。

  • TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。

  • 大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。

  • 对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。



后台回复“加群”,带你进入高手如云交流群


推荐阅读:

Go高性能编程技法解读

容器网络|深入理解Cilium

Linux下的TCP测试工具

深入理解 Cache 工作原理

Cilium 容器网络的落地实践

【中断】的本质

图解 | Linux内存回收之LRU算法

Linux 应用内存调试神器- ASan

深入理解 Cilium 的 eBPF 收发包路径

Page Cache和Buffer Cache关系

深入理解DPDK程序设计|Linux网络2.0

一文读懂基于Kubernetes打造的边缘计算

网络方案 Cilium 入门教程

Docker  容器技术使用指南

云原生/云计算发展白皮书(附下载)

使用 GDB+Qemu 调试 Linux 内核

防火墙双机热备

常见的几种网络故障案例分析与解决

Kubernetes容器之间的通信浅谈

kube-proxy 如何与 iptables 配合使用

完美排查入侵

QUIC也不是万能的

网络排错大讲解~

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载


 

服务热线

1391-024-6332