java可靠udp传输_Java面试-UDP如何实现可靠传输

java可靠udp传输_Java⾯试-UDP如何实现可靠传输
概述
UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常⾳频,视频和普通数据在传送时,使⽤UDP较多,因为即使丢失少量的包,也不会对接受结果产⽣较⼤的影响。
奋进的旋律评价传输层⽆法保证数据的可靠传输,只能通过应⽤层来实现了。实现的⽅式可以参照tcp可靠性传输的⽅式,只是实现不在传输层,实现转移到了应⽤层。
骚乱全家最简单的⽅式是在应⽤层模仿传输层TCP的可靠性传输。下⾯不考虑拥塞处理,可靠UDP的简单设计。iml
1、添加seq/ack机制,确保数据发送到对端
2、添加发送和接收缓冲区,主要是⽤户超时重传。
3、添加超时重传机制。可摘局部义齿的组成
详细说明:
发送端发送数据时,⽣成⼀个随机seq=x,然后每⼀⽚按照数据⼤⼩分配seq。
数据到达接收端后接收端放⼊缓存,并发送⼀个ack=x的包,表⽰对⽅已经收到了数据。
发送端收到了ack包后,删除缓冲区对应的数据。
时间到后,发送端定时任务检查是否需要重传数据。
开源程序:
⽬前有如下开源程序利⽤udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。
1、RUDP(Reliable User Datagram Protocol)
RUDP 提供⼀组数据服务质量增强机制,如拥塞控制的改进、重发机制及淡化服务器算法等,从⽽在包丢失和⽹络拥塞的情况下, RTP 客户机(实时位置)⾯前呈现的就是⼀个⾼质量的 RTP 流。在不⼲扰协议的实时特性的同时,可靠 UDP 的拥塞控制机制允许 TCP ⽅式下的流控制⾏为。
2、RTP(Real Time Protocol)
RTP为数据提供了具有实时特征的端对端传送服务,如在组播或单播⽹络服务下的交互式视频⾳频或模拟数据。
润叶应⽤程序通常在 UDP 上运⾏ RTP 以便使⽤其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层⽹络或传输协议⼀起使⽤。如果底层⽹络提供组播⽅式,那么 RTP 可以使⽤该组播表传输数据到多个⽬的地。
RTP 本⾝并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这⼀过程。 RTP 并不保证传送或防⽌⽆序传送,也不确定底层⽹络的可靠性。 RTP 实⾏有序传送, RTP 中的序列号允许接收⽅重组发送⽅的包序列,同时序列号也能⽤于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。
3、UDT(UDP-based Data Transfer Protocol)gongqijun
基于UDP的数据传输协议(UDP-basedData Transfer Protocol,简称UDT)是⼀种互联⽹数据传输协议。UDT的主要⽬的是⽀持⾼速⼴域⽹上的海量数据传输,⽽互联⽹上的标准数据传输协议TCP在⾼带宽长距离⽹络上性能很差。
顾名思义,UDT建于UDP之上,并引⼊新的拥塞控制和数据可靠性控制机制。UDT是⾯向连接的双向的应⽤层协议。它同时⽀持可靠的数据流传输和部分可靠的数据报传输。由于UDT完全在UDP上实现,它也可以应⽤在除了⾼速数据传输之外的其它应⽤领域,例如点到点技术(P2P),防⽕墙穿透,多媒体数据传输等等。

本文发布于:2024-09-22 09:26:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/126792.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   机制   协议   可靠
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议