TCP是通过确认机制和超时重传机制实现可靠传输

UDP

UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

关键在于两点,从应用层角度考虑:

1 提供超时重传,能避免数据报丢失。

2 提供确认序列号,可以对数据报进行确认和排序。

本端:首先在UDP数据报定义一个首部,首部包含确认序列号和时间戳,时间戳是用来计算RTT(数据报传输的往返时间),从何计算出合适的RTO(重传的超时时间)。然后以等-停的方式发送数据报,即收到对端的确认之后才发送下一个的数据报。当时间超时,本端重传数据报,同时RTO扩大为原来的两倍,重新开始计时。

对端:接受到一个数据报之后取下该数据报首部的时间戳和确认序列号,并添加本端的确认数据报首部之后发送给对端。根据此序列号对已收到的数据报进行排序并丢弃重复的数据报。

最新文章

  1. Extjs 下拉框显示远程数据
  2. 【Oracle】Oracle日期格式详解
  3. jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
  4. [DFNews] Cellebrite UFED系列更新, 支持IOS7
  5. kangle 默认支持ETag,如果是用kangle做源不会识别,但是做cdn或反向代理会自动识别
  6. 一些不起眼但非常有用的 Vim 命令
  7. MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定
  8. GoLang之协程
  9. c++new/delete---9
  10. 南阳理工ACM Skiing问题
  11. 分布式数据库TiDB的部署
  12. Axios 执行post发送两次请求的小坑
  13. 【原】Java学习笔记014 - 面向对象
  14. vue.js 跳转同一页面,传不同值,组件监听路由
  15. mysql My SQL获取某个表的列名
  16. 基于Servlet的MVC模式用户登录实例
  17. Git 基础 - 删除暂存区的文件
  18. git diff 理解
  19. 剥开比原看代码12:比原是如何通过/create-account-receiver创建地址的?
  20. 使用 Git & Repo 下载代码

热门文章

  1. java课后思考题(六)
  2. setState异步函数
  3. 牛客网Java刷题知识点之正则表达式(Matcher、Pattern)
  4. vue之store中属性更新用法
  5. Bootcamp Win10蓝牙鼠标的问题
  6. wpf ComboBox的SelectionBoxItem相关依赖属性
  7. SQL SERVER 同一个表并且是同一个时间字段进行相减
  8. Java面向对象(接口、多态)
  9. (转载)资源字典(Pro WPF 学习)
  10. 如何选择Web开发框架