【云计算 IT 基础知识】5.4.2 UDP

muzilan 2016-08-02 10:55:43
加精

【云计算 IT 基础知识】系列1 目录/汇总(持续更新)

------------------------------------------------------------

5.4.2 UDP



概念

用户数据报协议UDP(User Datagram Protocol)是一种在因特网传输层提供用户进程, 并负责在应用程序之间无连接传递数据的协议(在RFC768文档中定义)。UDP不对传送数据包进行可靠的保证,适合于传输少量数据,可靠性则由应用层来负责。UDP协议 位于IP协议之上。




特点

UDP具有如下特点:
l 传输数据之前源端和终端不建立连接。
l 不需要维护连接状态,包括收发状态等,一台服务机可同时向多个客户机传输相同 的消息。
l UDP信息包的包头很短,只有8个字节,相对于TCP的20个字节信息包的额外开销 很小。
l 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端 和终端主机性能的限制。
l UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状 态表。
l UDP面向报文,不对报文拆分和合并,只在添加首部后交付给IP层。因此,应用程 序需要选择合适的报文大小。
l 控制选项较少,数据传输过程中,延迟较小,数据传输效率较高。




应用

UDP协议适合于对可靠性要求并不高的应用程序,或者可以保障可靠性的应用程序,像 DNS、TFTP、SNMP等;UDP协议也可以用于传输链路可靠的网络。
UDP排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低 了执行时间,使速度得到了保证。UDP的典型应用包括流媒体、实时多媒体游戏和IP电 话等,这些应用不需要可靠机制,但更加注重实际性能的应用。





报文格式


UDP的报文格式如图5-30所示。



UDP报文中各字段的 义如表5-12所示。








校验和

UDP校验和覆盖的内容超出了UDP数据报 身的范围。为了计算校验和,UDP把伪首部 (PSEUDO-HEADER)引入数据报中。在伪首部中有一个值为0的填充八位组,用于保证 整个数据报的长度为16比特的整数倍。使用伪首部的目的是检验UDP数据报已达到正确
的目的地。

在UDP校验和的计算过程中用到的伪首部长度为12字节,如图5-31所示。



UDP校验和使用的各字段的 义如表5-13所示。




------------------------------------------------------------













...全文
1956 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-10-20
  • 打赏
  • 举报
回复
引用 13 楼 muzilanlan 的回复:
[quote=引用 10 楼 zhao4zhong1 的回复:] [quote=引用 9 楼 muzilanlan 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 请教楼主一个问题: 如果哪天实际遇到收发UDP丢包率达几乎99%的话,如何寻求改善?
99% 可能就不是改善的问题了。。。 UDP主要丢包原因及具体问题分析 可以参考下[/quote] 学习了。[/quote] 改天可以换个高清的头像,这个头像都看不出赵老师模样[/quote] http://bbs.csdn.net/topics/391951993
muzilan 2016-10-19
  • 打赏
  • 举报
回复
大家要多交流啊
muzilan 2016-10-19
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
[quote=引用 9 楼 muzilanlan 的回复:] [quote=引用 8 楼 zhao4zhong1 的回复:] 请教楼主一个问题: 如果哪天实际遇到收发UDP丢包率达几乎99%的话,如何寻求改善?
99% 可能就不是改善的问题了。。。 UDP主要丢包原因及具体问题分析 可以参考下[/quote] 学习了。[/quote] 改天可以换个高清的头像,这个头像都看不出赵老师模样
muzilan 2016-09-19
  • 打赏
  • 举报
回复
引用 11 楼 qq_33220449 的回复:
很不错,谢谢分享。。
O(∩_∩)O谢谢支持,你这头像很显眼啊
细水长流- 2016-09-03
  • 打赏
  • 举报
回复
很不错,谢谢分享。。
赵4老师 2016-08-09
  • 打赏
  • 举报
回复
引用 9 楼 muzilanlan 的回复:
[quote=引用 8 楼 zhao4zhong1 的回复:] 请教楼主一个问题: 如果哪天实际遇到收发UDP丢包率达几乎99%的话,如何寻求改善?
99% 可能就不是改善的问题了。。。 UDP主要丢包原因及具体问题分析 可以参考下[/quote] 学习了。
赵4老师 2016-08-08
  • 打赏
  • 举报
回复
请教楼主一个问题: 如果哪天实际遇到收发UDP丢包率达几乎99%的话,如何寻求改善?
muzilan 2016-08-08
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
请教楼主一个问题: 如果哪天实际遇到收发UDP丢包率达几乎99%的话,如何寻求改善?
99% 可能就不是改善的问题了。。。 UDP主要丢包原因及具体问题分析 可以参考下
muzilan 2016-08-07
  • 打赏
  • 举报
回复
引用 1 楼 cattpon 的回复:
感谢楼主整理分享~
引用 2 楼 Y878914422 的回复:
感谢楼主分享....
引用 4 楼 gefieder 的回复:
666666666666
引用 5 楼 nettman 的回复:
学习,收藏
引用 6 楼 qq_35804616 的回复:
来学习了~~
谢谢支持!
qq_35804616 2016-08-06
  • 打赏
  • 举报
回复
来学习了~~
nettman 2016-08-03
  • 打赏
  • 举报
回复
学习,收藏
hugh_z 2016-08-03
  • 打赏
  • 举报
回复
666666666666
赵4老师 2016-08-03
  • 打赏
  • 举报
回复
Y878914422 2016-08-03
  • 打赏
  • 举报
回复
感谢楼主分享....
cattpon 2016-08-03
  • 打赏
  • 举报
回复
感谢楼主整理分享~
学习并掌握C++2.0(11+14+17+20)的新特性,学习线程及线程池的应用 ---------------------------------------------------给小白学员的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其中一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论:   必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向:  精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控:  理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...) 3.项目实战(1) Qt项目:  至少要亲手练习10个实战项目(网络服务器、多线程、数据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)---------------------------------------------------  第1章 C++11新特性 41). nullptr关键字与新语法 42). auto和decltype类型推导 6 auto讲解 6 auto示例 7 decltype 83). for区间迭代 94). 初始化列表 105). 模板增强 11外部模板 11类型别名模板 12默认模板参数 126). 构造函数 13委托构造 13继承构造 147). Lambda 表达式 158). 新增容器 20std::array 20std::forward_list 21无序容器 22元组 std::tuple 239). 正则表达式 2610). 语言级线程支持 28多线程库简介 2811). 右值引用和move语义 31右值引用和move语义 32转移左值 3412). constexpr 35第2章 C++14新特性 36Lambda 函数 36类型推导 37返回值类型推导(Return type deduction) 37泛型lambda 39[[弃用的]]  [[deprecated]]属性 40二进制数字和数字分隔符 41第3章 C++17新特性 42安装GCC10.2 42安装msys2-x86_64-20200720 42更新镜像 42更新软件库 43安装 MinGW64 等必要的软件 43环境变量Path 43编译命令 43constexpr 44typename 45折叠表达式 47结构化绑定 48条件分支语句初始化 49聚合初始化 50嵌套命名空间 52lambda表达式捕获*this的值 53改写/继承构造函数 54用auto作为非类型模板参数 55__has_include 56fallthrough 57nodiscard 57maybe_unused 58第4章 C++20新特性 59编译命令 59concept 59typename 60explicit 61constinit 62位域变量的默认成员初始化 62指定初始化 63基于范围的for循环初始化 64放宽基于范围的for循环,新增自定义范围方法 65嵌套内联命名空间 66允许用圆括弧的值进行聚合初始化 67unicode字符串字面量 68允许转换成未知边界的数组 68likely和unlikely 69第5章 C++2.0(11/14/17/20)总结与分析 705.1 C语言与C++ 715.2 语言可用性的强化 725.2.1 常量 725.2.2 变量及其初始化 735.2.3 类型推导 745.2.4 控制流 765.2.5 模板 775.2.6 面向对象 815.3 语言运行期的强化 835.3.1 Lambda 表达式 835.3.2 右值引用 865.4 容器 885.4.1 线性容器 885.4.2 无序容器 895.4.3 元组 895.5 智能指针与内存管理 905.5.1 RAII 与引用计数 905.5.2 std::shared_ptr 905.5.3 std::unique_ptr 915.5.4 std::weak_ptr 91第6章 C++2.0多线程原理与实战 93什么是并发 93并发的方式 93为什么使用并发 95线程简介 96创建线程的三种方式 971. 通过函数 972.通过类对象创建线程 993.通过lambda表达式创建线程 101thread线程的使用 101互斥量与临界区 105期物Future 111条件变量 112原子操作 114内存模型 118第7章 C++2.0线程池原理与实战 120线程与线程池的基本原理 1201)、线程 1202)、线程的生命周期 1213)、什么是单线程和多线程 1214)、线程池 1225)、四种常见的线程池 123线程池的架构与流程 123线程池代码实战 125    

448

社区成员

发帖
与我相关
我的任务
社区描述
云计算开发
社区管理员
  • 云计算
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧