TCP与UDP

TCP与UDP的区别

1、相同点

都属于传输层的协议,都是为应用层 提供服务。

2、是否面向连接

  • tcp面向连接:三次握手建立连接,四次挥手断开连接。端对端的连接。全双工通讯(允许同时收发数据)。
  • udp面向无连接:无需三次握手。支持一对一、一对多、多对一以及多对多。

3、数据传输方式

TCP基于字节流:可能拆分为多个多个tcp报文进行传输。对于接收方而言,需要处理粘包问题。

UDP基于报文:udp每次收发都是完整的报文。

4、是否可靠

tcp可靠传输:

  1. tcp分段,进行发送数据包的控制。TCP 负责把连续字节流拆成可控大小的段发出去,接收端再按顺序拼回字节流。
  • 应用层交给 TCP 的是一串连续字节(没有边界概念)。

  • TCP 会根据 MSS (最大报文段长度)、发送窗口、拥塞窗口等,把字节流切成一个个 TCP 段再发。

  • 好处:避免 IP 层分片带来的更高丢包代价;也便于重传、排序、流控。

  1. 序列号,tcp报文包含序列号,确保完整接收,丢失重复数据,排序(为什么需要序列号)。没有序列号,就无法排序、无法去重、无法精确确认、也无法定位丢包。
  • 序列号是 TCP 可靠性的核心之一,它解决 4 件事:

  • 排序:网络可能乱序到达,序列号告诉接收端每段数据在字节流中的位置,能按序拼接。

  • 去重:可能发生重复报文(例如 ACK 丢了,发送端以为没收到而重传),接收端凭序列号识别重复并丢弃。

  • 发现丢失:如果收到 1、2、4 段,缺 3 段,就知道中间丢了。

  • 实现可靠确认(ACK 是确认到哪个序列号) :ACK 不是"我收到了某个包",而是"我已经按序收到了某个字节序号之前的所有数据"。

  1. 确认应答机制
  • TCP 接收端会返回 ACK,表示"期望收到的下一个字节序号"(累计确认)。

  • 发送端只有收到 ACK,才认为对方已可靠接收并可以滑动窗口继续发。

  • 若 ACK 长时间未到达,会触发重传(超时重传)

  1. 校验和,检测报文有传输过程的数据变化
  • TCP 对首部 + 数据计算校验和。

  • 目的:检测传输中比特翻转/数据被破坏(错误检测)。

  • 注意:校验和只能"发现错",不能"纠错";发现错就丢弃该段,靠重传恢复。

  1. 滑动窗口
  • 接收端有接收缓冲区,能接多少数据取决于缓冲区剩余空间。

  • 接收端在 ACK 中通过 接收窗口 rwnd 告诉发送端:我还能接多少。

  • 发送端按窗口大小控制"未确认数据"的数量,避免接收端来不及处理导致丢包。

  1. 拥塞控制保证"大家都别把网塞爆",是 TCP 可靠+稳定的关键。
  • 网络中间路由器/链路也会拥塞,TCP 通过 cwnd(拥塞窗口) 控制发送速率。

  • 典型策略:慢启动 → 拥塞避免 → 拥塞发生时减速(快重传/快恢复)

  • 当出现丢包/RTT 激增,TCP 会认为网络拥塞,降低 cwnd,减少注入网络的数据量。

udp不可靠传输:

  1. 不保证消息交付
  2. 不保证交付顺序
  3. 不进行拥塞控制
  4. 不进行流量控制:没有接收缓冲区

5、传输效率

tcp效率低:

  1. tcp实现了可靠传输造成性能损失
  2. tcp头部 20字节

udp效率高:

  1. udp不可靠传输
  2. udp头8个字节

6、应用场景

tcp要求数据可靠,对速度要求不高

udp实时性要求高

相关推荐
康康的AI博客1 小时前
工业数据中台:PLC、SCADA、MES的实时协同架构
java·服务器·网络
优宁维生物1 小时前
Co-IP 抗体科普从选择到避坑
网络·网络协议·tcp/ip
市安1 小时前
基于 LVS+Keepalived+NFS 的高可用 Web 集群构建与验证
运维·服务器·网络·lvs·keepalived·ipvsadm
鹿角片ljp1 小时前
Java网络编程入门:从Socket到多线程服务器
java·服务器·网络
无名的小三轮1 小时前
FTP协议详解
网络·tcp/ip·安全
汽车仪器仪表相关领域2 小时前
全程高温伴热,NOx瞬态精准捕捉:MEXA-1170HCLD加热型NOx测定装置项目实战全解
大数据·服务器·网络·人工智能·功能测试·单元测试·可用性测试
Hoxy.R2 小时前
海量数据库安装部署初体验
服务器·网络·数据库
西红市杰出青年2 小时前
asyncio.gather 内部原理与运行机制(详解)
网络·python·异步
天荒地老笑话么2 小时前
TCP vs UDP 最核心区别(可靠性 vs 速度)
网络协议·tcp/ip·udp
运维行者_2 小时前
OpManager 对接 ERP 避坑指南,网络自动化提升数据同步效率
运维·服务器·开发语言·网络·microsoft·网络安全·php