TCP 和 UDP 的区别

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种主要的传输层协议,它们在网络通信中有一些关键的区别:

(1)http1 / http2 基于 tcp 协议,https 在http2的基础上再加上 tls 协议

(2)http3 使用基于 upd 协议的quic 协议【没有tls 了】

  1. 连接性

    • TCP: 是一种面向连接的协议,通过三次握手建立连接,确保可靠的数据传输,提供错误检测和重传机制。适用于要求数据可靠传输的应用,如文件传输、电子邮件等。
    • UDP: 是一种面向无连接的协议,不进行连接的建立和断开,不提供可靠性保证。适用于对实时性要求较高,对少量数据丢失可以容忍的应用,如实时音视频传输、在线游戏等。
  2. 可靠性

    • TCP: 提供可靠的数据传输,通过序号、确认和重传机制来确保数据的完整性和顺序性。在数据传输过程中,会进行错误检测和纠正。
    • UDP: 不提供可靠性保证,数据传输是不可靠的。UDP的设计目标是尽可能快速地传输数据,而不是保证传输的可靠性。
  3. 数据流

    • TCP: 提供面向流的服务,数据被视为连续的字节流,没有明确的消息边界。TCP会根据应用程序的需要,将数据切割成合适的块进行传输。
    • UDP: 提供面向消息的服务,每个UDP数据包是一个完整的消息,有明确的边界。UDP保留了消息的完整性,但不保证消息的顺序性。
  4. 拥塞控制

    • TCP: 具有拥塞控制机制,能够根据网络的状况动态调整传输速率,避免网络拥塞。
    • UDP: 不具备拥塞控制,数据包可能会因为网络拥塞而丢失。
  5. 头部开销

    • TCP: 具有较大的头部开销,包含序号、确认、窗口大小等字段,增加了数据传输的开销。
    • UDP: 头部开销较小,只有基本的头部信息,适用于对网络开销要求较低的场景。
  6. 适用场景:

    • TCP: 适用于要求可靠性、顺序性的应用,如文件传输、网页访问等。
    • UDP: 适用于实时性要求较高、对少量数据丢失可以容忍的应用,如实时音视频传输、在线游戏等。

|-----------------------------------------------|-------|
| TCP | UDP |
| 面向连接 | 面向无连接 |
| 效率低 | 效率高 |
| 可靠 | 不可靠 |
| 面向流 | 面向信息 |
| 有拥塞控制 | 无拥塞控制 |
| 头部开销大 | 头部压缩 |
| http1.0 / http1.1 / http2 / https / websocket | http3 |

相关推荐
2401_894915539 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
SilentSlot14 小时前
【C/C++】手写 DPDK 协议栈(十一):基于 PPS、SYN 比例和源 IP 熵的 DDoS 检测
c语言·c++·tcp/ip
Shell运维手记14 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器
ShineWinsu16 小时前
对于Linux:HTTP中cookie、session的解析
linux·网络·c++·网络协议·http·cookie·session
huainingning16 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip
Rotion_深18 小时前
C# 设计TCP Server
开发语言·tcp/ip·c#
跨境技工小黎20 小时前
4G/5G 移动代理实战:什么时候必须用移动 IP?
网络协议·tcp/ip·5g
米尔的可达鸭20 小时前
UDP 通信深度实验:从 Windows FastPath 到 ICMP 端口不可达的完整排查
windows·websocket·网络协议·rust·udp·wireshark·tcpdump
SilentSlot1 天前
【C/C++】手写 DPDK 协议栈(十二):TCP 并发与自实现 epoll 的就绪事件分发
c语言·c++·tcp/ip
SilentSlot1 天前
【C/C++】手写 DPDK 协议栈(六):TCP 三次握手、状态机与数据回显
c语言·c++·tcp/ip