传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。

  • 1、添加seq/ack机制,确保数据发送到对端
  • 2、添加发送和接收缓冲区,主要是用户超时重传。
  • 3、添加超时重传机制。

详细说明:送端发送数据时,生成一个随机seq=x,然后每一片按照数据大小分配seq。数据到达接收端后接收端放入缓存,并发送一个ack=x的包,表示对方已经收到了数据。发送端收到了ack包后,删除缓冲区对应的数据。时间到后,定时任务检查是否需要重传数据。

https://www.jianshu.com/p/6c73a4585eba

UDP如何实现可靠传输相关推荐

  1. 基于UDP服务实现可靠传输

    基于UDP服务实现可靠传输原理+C++实现 文章目录 基于UDP服务实现可靠传输原理+C++实现 0 作业要求 1 实现思路 1.1 TCP实现可靠传输的机制 1.1.1 报文分析 1.1.2 连接管 ...

  2. Python在应用层实现UDP协议的可靠传输

    功能描述: 使用UDP协议传输文件,在应用层实现可靠传输,避免传输层不保序和可能丢包造成的不可靠传输问题. 基本思路: 在发送端使用一个线程把要发送的内容进行分块传输,发送时携带每个分块的序号,同时使 ...

  3. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

    传输层( Transport) 传输层( Transport) UDP 协议(数据格式.检验和) 端口(Port) TCP TCP - 数据偏移.保留 TCP - 检验和( CheckSum) TCP ...

  4. 基于UDP的可靠传输——QUIC 协议

    一.UDP协议 UDP用户数据报协议,非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时直接去抓取来自应用程序的数据,并尽可能快地把它扔到网络上. UDP传输协议的特点 UDP无连接,时间上 ...

  5. 支付宝二面:如何用 UDP 实现可靠传输?

    相信大家面试经常会被问到一个问题 "如何用UDP实现可靠传输",今天就给大家分享一个基于 UDP 实现的可靠传输协议:QUIC . 这几天看到一篇蚂蚁集团实战 QUIC 的文章,我 ...

  6. UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))

    1.UDP 用户数据报协议 UDP(User Datagram Protocol): 是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部 ...

  7. UE4 UDP是如何进行可靠传输的

    目录 前言 UE4网络框架 NetDrivers, NetConnections, and Channels Initiating Connections / Handshaking Flow 重新建 ...

  8. TCP、UDP、TCP三次握手与四次挥手、TCP如何保证可靠传输、TCP异常分析、拆包和粘包等

    4.OSI模型 4.1.OSI七层模型 4.2.七层模型功能 ​ 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,如网线:网卡标准. ​ 数据链路层:接收来自物理层的位流形式的数据 ...

  9. 如何利用UDP实现可靠传输(RUDP)

    4.UDP的三角制约原则 其实在实时通信领域存在一个三角平衡关系--成本.质量和时延三者的制约关系: 也就是说投入的成本.获得的质量和通信的时延之间是一个三角制约 (LEQ) 关系,所以实时通信系统的 ...

最新文章

  1. “昊论坛”热力来袭!一网打尽【微生物绝对定量】技术特色和应用
  2. samba服务器_麒麟V10链接SAMBA服务器的方法
  3. Keepalived高可用集群来实现web服务器负载均衡集群
  4. Net Present Value - NPV
  5. wind 下装mysql,windows 下安装MySQL
  6. 微信公众号中选择时间css,微信公众号到底应该几点推文?
  7. 第五届省赛(软件类)真题----Java大学B组答案及解析
  8. 年薪 50w+ 的程序员,是这样写代码的?
  9. linux内核进程抢占,Re: Linux中进程能否被抢占
  10. 开课吧:Html5有哪些新特性?
  11. GTK测试程序(十四)
  12. for循环与each的区别
  13. 受力分析软件_大赛作品 | 关于Z型路灯受力情况分析
  14. BLUE引擎检查放入装备的名称全名脚本
  15. 进程间通信之CreatePipe
  16. 鸿蒙处理器985相当于内核多少,麒麟985处理器相当于骁龙多少_麒麟985处理器性能测评...
  17. electron中引入iohook来监听系统级鼠标键盘事件
  18. 用Java正则替换手机号中间4位数
  19. 【绝对干货】kafka偏移量设置
  20. 用户体验 | 深耕用户体验筑造银行竞争的护城河

热门文章

  1. asp.net的JSONHelper 类
  2. 让IE8和IE9支持 placeholder
  3. ES6系列之小知识点
  4. ueditor初始化
  5. C#类型转换运算符之 explicit implicit
  6. 哈希表(等概率下)平均查找长度(转)
  7. Spring的PropertyPlaceholderConfigurer事例应用
  8. Eclipse: “Update SVN cache” hangs and locks up
  9. linux gnome虚拟文件系统 gvfs和gnome-vfs 简介
  10. docker 容器中的 uid 和 gid