面向字节流(TCP)vs 报文级(UDP)

1. 面向字节流(TCP)

TCP 把数据当成"一串连续的字节流"来看待,没有明确的"消息边界"。

特点:

  • 接收端不知道你什么时候"发了一条完整的消息"

  • 多条消息可能粘在一起(粘包)或拆成多段(拆包)

  • 数据是连续的流,你只能靠协议去切割

举个比喻:

就像一条长长的"传送带 ",你把数据一段段放上去,

对方只能看字节流,不知道哪一段是一个完整的箱子(消息)。容易导致粘包。

2. 报文级(UDP)

UDP 是"报文(包)"为单位的协议 ,一条 sendto() 对应一条完整的 recvfrom()

特点:

  • 发多少就收多少,一次 recvfrom() 只对应一条完整的 UDP 包

  • 不会出现粘包或拆包问题

  • 单个包大小有限制(最多 65,535 字节)

类比:

就像一个个快递包裹 ,每次都独立寄送,接收方一包一包地收,

你永远不会把两包收到一块,也不会收到半包。所以不会出现粘包问题。


总结对比表:

特性 TCP(字节流) UDP(报文)
数据组织方式 连续的字节流 一包一包,带边界
是否有粘包/拆包 ✅ 有,需手动处理 ❌ 没有,收多少就是发多少
是否可靠传输 ✅ 有保证(重传 + 有序) ❌ 不保证
是否面向连接 ✅ 需要连接(3次握手) ❌ 无连接,直接发
适合场景 文件传输、网页、聊天、数据库等 音视频、游戏、广播、小数据通信
相关推荐
lisw051 小时前
网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
网络·devops
驱动小百科3 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学3 小时前
协议路由与路由协议
网络·智能路由器
SZ1701102313 小时前
中继器的作用
服务器·网络·智能路由器
Huazzi.5 小时前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura5 小时前
【Linux网络】HTTP
linux·网络·http
毒果5 小时前
网络安全:账号密码与诈骗防范
网络·安全·web安全
八股文领域大手子5 小时前
SSL/TLS 证书与数字签名:构建互联网信任的详解
网络·网络协议·ssl
学渣676566 小时前
TCP/IP 模型每层的封装格式
网络