UDP 的特点
- 无连接:UDP 是无连接的协议,不需要建立连接即可发送数据。
- 不可靠传输:UDP 不提供数据包的确认机制,也不保证数据包的顺序或是否送达。
- 低延迟:由于没有连接建立和维护过程,UDP 具有较低的传输延迟,适用于对延迟敏感的应用。
- 无流量控制:UDP 不进行流量控制,发送端可以以任意速度发送数据包。
- 简单性:UDP 协议头较短,开销小,仅包含源端口、目的端口、长度和校验和。
TCP 的特点
- 面向连接:TCP 是面向连接的协议,在数据传输前需要建立连接(三次握手)。
- 可靠传输:TCP 提供可靠的数据传输,保证数据包按序到达,并通过确认机制重传丢失的数据包。
- 流量控制:TCP 实现流量控制,通过调整发送窗口大小避免网络拥塞。
- 拥塞控制:TCP 包含拥塞控制算法,动态调整发送速率以防止网络拥塞。
- 数据完整性:TCP 提供数据包的校验和,确保数据在传输过程中不被篡改。
- 连接管理:TCP 提供连接建立和断开机制(四次挥手)。
UDP 和 TCP 的区别
特性 | UDP | TCP |
---|---|---|
连接类型 | 无连接 | 面向连接 |
传输可靠性 | 不可靠 | 可靠 |
传输顺序 | 不保证 | 保证按序传输 |
数据包重传 | 不支持 | 支持(通过确认和重传机制) |
流量控制 | 不支持 | 支持 |
拥塞控制 | 不支持 | 支持 |
延迟 | 低 | 相对较高 |
传输速度 | 快 | 较慢(由于可靠性机制) |
开销 | 低(协议头较短) | 高(协议头较长,包含更多信息) |
应用场景 | 实时应用(如视频、语音) | 可靠性高的应用(如文件传输、邮件) |
UDP 适用场景:
- 实时通信:如 VoIP(语音通信)、视频会议、在线游戏等,需要低延迟而不一定需要可靠传输的场景。
- 广播和组播:如局域网中的服务发现协议(如 mDNS、SSDP)等。
- 简单的请求-响应协议:如 DNS 查询、SNMP 等。
TCP 适用场景:
- 文件传输:如 FTP、SFTP,需要保证文件完整传输的场景。
- 电子邮件:如 SMTP、IMAP、POP3,需要可靠传输的场景。
- 网页浏览:如 HTTP、HTTPS,需要数据完整性和可靠性的场景。
- 数据库连接:如 MySQL、PostgreSQL 等,需要稳定和可靠数据传输的场景。
TCP 的三次握手(为什么三次)
三次握手过程
-
第一