【每周分享】浅谈TCP协议和UDP协议的区别
本帖最后由 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协议复杂,功能更多。 没分析过,不过UDP好像传输大文件更好一些吧。 21mengnan 发表于 2025-7-25 16:22
没分析过,不过UDP好像传输大文件更好一些吧。
看需求,如果需要保证文件安全可靠的到达目的地,尽量走TCP,如果对传输速度有更高要求,可以走UDP。 TCP 是面向连接、可靠传输,需三次握手 / 四次挥手,适用于文件传输等;UDP 无连接、不可靠,速度快,适合视频通话、直播等。 继续学习,一天进步一点点 又细品了一遍
页:
[1]