本帖最后由 dffzh 于 2025-7-24 13:57 编辑
TCP协议,即TransmissionControl Protocol,传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。 UDP协议,即UserDatagram Protocol,用户数据报协议,是一种面向无连接的、不可靠的、面向报文的传输层通信协议。 通过Wireshark随意捕捉一些网络报文数据,就有一些基于TCP协议或者UDP协议的报文,如下图所示: 那TCP协议和UDP协议究竟有哪些区别呢?下面逐一说明。 1. 连接方式 TCP:面向连接; 三次握手机制,即通信前需通过三次握手建立连接,传输结束后通过四次挥手释放连接。 示例:打电话前需拨通并确认对方接听。 UDP:无连接; 直接发送数据,无需预先建立连接。 示例:寄信时无需确认收件人是否准备好;通过微信或QQ等聊天工具发送信息时无需对方准备好即可直接发送等。 2. 可靠性 TCP:可靠传输; 通过确认应答(ACK)、超时重传、流量控制和拥塞控制等机制确保数据不丢失、不重复、按序到达。 示例:文件传输、网页浏览(HTTP/HTTPS)。 UDP:不可靠传输; 不保证数据到达或按序到达,无重传机制。 示例:视频流、实时游戏(容忍少量丢包)。 3. 数据顺序 TCP:保证数据按发送顺序到达; 通过序列号和确认号重组乱序数据包。 UDP:不保证顺序; 应用层需自行处理乱序问题。 4. 速度与效率 TCP:速度较慢,开销大; 因连接管理、重传、流量控制等机制,头部较大(20-60字节)。 UDP:速度快,开销小; 无连接管理,头部固定仅8字节,适合实时性要求高的场景。 5. 拥塞控制 TCP:动态调整发送速率以避免网络拥塞,比如慢启动方式和拥塞避免算法等。 UDP:无拥塞控制,可能会加剧网络拥堵。 6. 传输方式 TCP:基于字节流的协议,无明确消息边界; 应用层需自行处理消息分割,比如HTTP的Content-Length。 UDP:基于数据报,每个包是独立的消息,保留发送边界。 7. 应用场景 TCP: 要求可靠性的场景:网页(HTTP/HTTPS)、邮件(SMTP)、文件传输(FTP)、远程登录(SSH)。 UDP: 实时性或速度优先的场景:视频会议(Zoom)、在线游戏(UDP+自定义协议)、DNS查询、直播流(RTP)。 8. 多播/广播支持 TCP:仅支持单播(一对一通信); UDP:支持单播、多播(一对多)、广播(一对所有); 我们再看看协议的报文格式。
TCP的报文格式如下图所示: UDP的报文格式如下图所示: 从两者的报文格式也可以看出,TCP协议比UDP协议复杂,功能更多。 |