TCP与UDP协议详解
TCP与UDP协议详解
1. 核心概念与定位
-
TCP(Transmission Control Protocol):
- 面向连接:通信前需建立可靠连接(三次握手),通信结束断开连接(四次挥手)。
- 可靠传输:通过确认、重传、流量控制、拥塞控制等机制保证数据完整有序。
- 基于字节流:数据无边界,按顺序传输(如发送“Hello”和“World”,接收方可能一次读到“HelloWorld”)。
-
UDP(User Datagram Protocol):
- 无连接:无需预先建立连接,直接发送数据。
- 不可靠传输:不保证数据到达、不保证顺序、无重传机制。
- 基于数据报:每个数据包有明确边界(发送两次“Hello”,接收方会收到两次独立的“Hello”)。
比喻:
- TCP像打电话:先拨号(三次握手),通话中确保对方听到(重传),结束说“再见”(四次挥手)。
- UDP像发短信:直接发送,不关心对方是否收到,可能丢信或乱序。
2. 关键特性对比
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 可靠(数据不丢失、不重复、按序到达) | 不可靠(可能丢包、乱序、重复) |
传输速度 | 较慢(需建立连接、确认机制) | 极快(无额外开销) |
数据边界 | 无边界(字节流) | 有边界(数据报) |
头部开销 | 大(至少20字节) | 小(仅8字节) |
适用场景 | 文件传输、网页浏览、邮件 | 视频流、实时游戏、DNS查询 |
拥塞控制/流量控制 | 有 | 无 |
3. 核心机制详解
3.1 TCP的三次握手与四次挥手
-
三次握手(建立连接):
- 客户端发送
SYN=1, seq=x
。 - 服务端回复
SYN=1, ACK=1, seq=y, ack=x+1
。 - 客户端发送
ACK=1, seq=x+1, ack=y+1
。
比喻:
客户:“我要连接”(SYN),服务器:“同意,请确认”(SYN+ACK),客户:“确认”(ACK)。 - 客户端发送
-
四次挥手(断开连接):
- 主动方发送
FIN=1, seq=u
。 - 被动方回复
ACK=1, seq=v, ack=u+1
。 - 被动方发送
FIN=1, seq=w, ack=u+1
。 - 主动方回复
ACK=1, seq=u+1, ack=w+1
。
比喻
- 主动方发送