0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UDP能否像TCP一样实现可靠传输?

kae1_cdebyte 来源:亿佰特物联网应用专家 2023-06-05 09:48 次阅读

UDP (User Datagram Protocol)是一种无连接的协议,基于数据报的传输方式。在网络通信中,它通常用于快速传输数据包,但却无法保证数据包的可靠传输。

与UDP刚好相反,TCP是一种面向连接的协议,基于字节流的传输方式。它通过确认和重传等机制来保证数据的完整性和顺序性,实现数据包的可靠传输。

130dda94-022e-11ee-90ce-dac502259ad0.png

UDP与TCP的主要区别

但在某些运用场景下,使用TCP协议传输速率延时太大,UDP协议传输数据又不可靠,这时候就需要通过应用程序对UDP协议进行改进,虽然这些方案都会增加网络负载,但可以确保UDP数据传输更加可靠。

TCP如何实现可靠性传输?

TCP协议中采用三次握手建立连接,在数据传输过程中,通过确认和重传等机制来保证数据包的可靠传输,但正因为TCP协议需要多次进行数据交互从而导致了传输延时较大。

13279344-022e-11ee-90ce-dac502259ad0.png

TCP 三次握手

重传机制一般会和确认机制结合使用,当在一定时间内没有收到接收端的应答时,则会重传对应的数据包。确认回复格式也会随着选择不同的重传机制而有所差别。重传机制一般有三种实现方式:停等协议、回退重传、选择性重传。

(1)停等协议中每包数据发送后都需要等到接收端回复再发送下一包数据,以保证每包数据都能被成功接收到,但是通讯效率较低。

(2)回退重传中发送端会连续发送多个数据包,当其中的数据包丢失时,接收端会回复最大连续收到的数据包,后续再进行数据重传。

(3)选择性重传中也采用了回退重传类似的方式,不过选择性重传会针对丢失的包进行补发,而不会全部重传。

13332c4a-022e-11ee-90ce-dac502259ad0.png

数据包检验机制也是保证传输可靠性的非常重要的方式,它可以保证数据包的完整性,避免传输过程中数据出现错误。发送端在发送数据包时,同时需要发送一个校验和,接收端收到数据包后校验校验和,如果校验失败,则要求发送端重传,确保数据包没有被篡改或损坏。

流控制机制则通过限制发送速率来确保数据包的可靠传输,避免发送过快导致网络拥塞和数据堆积。接收端在接收到数据时需要对数据进行处理,在处理过程中会消耗一定的时间,若发送端一直不间断发送数据,就会导致接收端数据没有时间处理,导致数据堆积丢失。流控制机制会根据接收端的接收能力来调整发送速率,避免数据堆积。

UDP如何实现可靠性传输?

若要实现UDP的可靠传输则可以借鉴TCP上述优点,在应用层实现数据的可靠性传输,模拟TCP可靠性传输方式,如确认机制、重传机制、校验机制等方式来保证数据可靠性传输。

如果不利用Linux协议栈以及上层Socket机制,通过抓包和发包的方式去实现可靠性传输,那么必须实现如下功能:

发送:包的分片、包确认、包的重发

接收:包的调序、包的序号确认

目前有如下开源程序利用UDP实现了可靠的数据传输,分别为RUDP、RTP和UDT。

此时大家可能会问如果UDP采用了这么多机制来保证数据的可靠性传输,那和TCP还有什么区别呢?

首先,TCP协议中规定了很多确保数据可靠性的机制,用户如果采用了TCP协议,那么数据的传输过程就固定了,用户不需要也无法干涉数据的传输过程。

其次,TCP协议中采取了很多的可靠性传输方式,来保证数据不会丢失、重复、损坏等,自然TCP协议传输效率就大大降低。UDP协议即使添加上简单的确认、重传、校验等机制,传输速度仍然还是会比TCP快,而且用户可以移除其中某些机制来使数据传输更加快速,也更加灵活可控。

UDP具有资源消耗小,处理速度快的优点,所以通常音频视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

需要注意的是,通过这些方法实现UDP的可靠传输也会增加网络延迟和带宽消耗,因此在实际应用中需要权衡可靠性和性能的需求。此外,这些方法并不能完全保证数据包的可靠传输,仍然存在一定的风险。因此,在需要高可靠性的应用场景中,建议使用TCP等可靠性更高的协议。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1273

    浏览量

    78312
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33634
  • 网络通信
    +关注

    关注

    4

    文章

    729

    浏览量

    29552
  • 数据包
    +关注

    关注

    0

    文章

    231

    浏览量

    24096

原文标题:UDP能否像TCP一样实现可靠传输?

文章出处:【微信号:cdebyte,微信公众号:亿佰特物联网应用专家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求助关于TCP/UDP传输的问题

    本帖最后由 思想的小鱼 于 2016-5-20 10:47 编辑 楼主完成了UDPTCP传输的模块,但目的是实现UDP
    发表于 05-20 10:43

    TCP协议和UDP协议的区别有哪些

    无法实现;(3)TCP 协议有效载荷小于 UDP 协议(基于 MSS 计算),UDP 性能高于 TCP ;(4)
    发表于 08-06 08:43

    TCPUDP有哪些不同

    TCP:为应用程序提供可靠的通信连接。适合于传输大批数据的情况。并适用于要求得到响应的应用程序。UDP:提供了无连接通信,且不对传送包进
    发表于 11-04 06:47

    TCP协议保证数据传输可靠性的方式主要有什么

    的必要性(1)可靠实现TCP全双工连接的终止(2)允许老的重复分节在网络中的消逝(为什么需要2***)6、流量控制7、拥塞控制TCP协议保证数据
    发表于 12-22 08:03

    TCPUDP的区别分析

      传输层协议主要有TCPUDPUDP提供无连接的通信,不能保证数据包被发送到目标地址,典型的即时传输少量数据的应用程序通常使用
    发表于 09-18 10:29 2次下载

    tcpudp的应用场景

    从特点上我们已经知道,TCP可靠的但传输速度慢 ,UDP 是不可靠的但传输速度快。因此在选用
    发表于 12-08 10:16 1.4w次阅读
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>的应用场景

    tcpudp协议的异同

    UDP 协议 UDP 协议是无连接、不可靠的一个传输层协议。下图是 UDP 数据报格式。 端口号用来区分发送进程和接收进程。
    的头像 发表于 11-12 14:45 3648次阅读
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>协议的异同

    基于Socket的UDPTCP编程解析 2

    TCP传输控制协议)和UDP(用户数据报协议是网络体系结TCP/IP模型中传输层一层中的两个不同的通信协议。
    的头像 发表于 05-18 17:22 466次阅读
    基于Socket的<b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b>编程解析 2

    UDP一定比TCP更快吗?什么情况下用UDP会更慢?

    当谈到网络传输时,大多数人可能认为TCP是最好的选择。因为TCP是一种可靠的协议,它可以确保数据的可靠性和完整性。但是,当考虑到
    的头像 发表于 04-03 09:38 958次阅读
    <b class='flag-5'>UDP</b>一定比<b class='flag-5'>TCP</b>更快吗?什么情况下用<b class='flag-5'>UDP</b>会更慢?

    UDP能否TCP一样实现可靠传输

    连接的协议,基于字节流的传输方式。它通过确认和重传等机制来保证数据的完整性和顺序性,实现数据包的可靠传输UDP
    的头像 发表于 06-08 14:50 631次阅读
    <b class='flag-5'>UDP</b><b class='flag-5'>能否</b>像<b class='flag-5'>TCP</b><b class='flag-5'>一样</b><b class='flag-5'>实现</b><b class='flag-5'>可靠</b><b class='flag-5'>传输</b>?

    udp是什么协议 TCPUDP的区别

    TCP协议提供可靠的数据传输UDP协议提供尽量高效的数据传输TCP协议通过使用序列号、确认应
    的头像 发表于 06-26 17:47 7101次阅读

    TCPUDP如何实现可靠传输

    TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
    的头像 发表于 10-16 14:19 396次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>如何<b class='flag-5'>实现</b><b class='flag-5'>可靠</b>性<b class='flag-5'>传输</b>

    TCPUDP的区别

    可靠传输,使用流量控制和拥塞控制;UDP是不可靠传输 TCP首部最小20字节,最大60字节;
    的头像 发表于 11-09 09:35 646次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>的区别

    如何选择传输层协议?TCPUDP的优缺点和适用场合

    可靠性至关重要。本文将详细介绍TCPUDP的优缺点以及适用场合。 1. TCP的优点和适用场合: TCP是一种
    的头像 发表于 12-11 11:42 477次阅读

    UDPTCP的主要区别 UDP能否TCP一样实现可靠传输

    UDPTCP的主要区别 UDP能否TCP一样实现
    的头像 发表于 01-22 16:10 188次阅读