当前位置: 首页 > news >正文

【运输层】网络数据报协议 UDP

目录

1、UDP 的特点

2、UDP 的首部格式


        UDP 只在 IP 协议之上增加了很少的一些功能,比如复用、分用以及差错检测等。

1、UDP 的特点

        UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。

        UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里边有许多的参数)。

        UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。也就是说,应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文,如下图所示:

        在接收方的 UDP,对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程。也就是说,UDP 一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片,这会降低 IP 层的效率。反之,若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,这也降低了 IP 层的效率。

        UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP 正好适合这种要求。

        UDP支持一对一、一对多、多对一和多对多的交互通信

        UDP的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

        UDP 工作原理:

        下图中在两个运输层之间有一条虚线,表示在两个运输层之间可以进行通信,而不是一条连接。但这种通信是不可靠的通信,即所发送的报文在传输过程中有可能丢失,同时也不保证报文都能按照发送的先后顺序到达终点。这正是 UDP 通信的特点:简单方便,但不可靠

2、UDP 的首部格式

        用户数据报 UDP 有两个字段:数据字段和首部字段。

        首部字段很简单,只有 8 个字节,由 4 个字段组成,每个字段的长度都是 2 字节。各字段意义如下:

        源端口:即源端口号。在需要对方回信时选用,不需要时可用全 0。

        目的端口:即目的端口号。这在终点交付报文时必须使用。

        长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)。

        检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。

        UDP 用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在 UDP 用户数据报之前增加 12 个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是 UDP 用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报前,得到一个临时的 UDP 用户数据报。

        检验和就是按照这个临时的 UDP 用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和

        至此,有关网络数据报协议 UDP 的介绍到此结束。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 指针的深入理解(六)
  • Prime Ring Problem(UVA 524)
  • 基于Springboot+Vue实现前后端分离酒店管理系统
  • 常规的k8s的监控指标
  • 微信小程序 电影院售票选座票务系统5w7l6
  • fakebook-攻防世界
  • JVM字节码与类加载——字节码指令集与解析
  • Java | Leetcode Java题解之第13题罗马数字转整数
  • I2C协议介绍
  • Vue - 你知道Vue中computed和watch的区别吗
  • RabbitMQ系统监控、问题排查和性能优化实践
  • 大话设计模式——六大基本设计原则(SOLID原则)
  • 0104练习与思考题-算法基础-算法导论第三版
  • 设计模式:迭代器模式
  • [StartingPoint][Tier1]Pennyworth
  • [nginx文档翻译系列] 控制nginx
  • exports和module.exports
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • java 多线程基础, 我觉得还是有必要看看的
  • Java 最常见的 200+ 面试题:面试必备
  • JAVA之继承和多态
  • leetcode98. Validate Binary Search Tree
  • node-glob通配符
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 构建二叉树进行数值数组的去重及优化
  • 关于for循环的简单归纳
  • 将 Measurements 和 Units 应用到物理学
  • 将回调地狱按在地上摩擦的Promise
  • 那些年我们用过的显示性能指标
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 与 ConTeXt MkIV 官方文档的接驳
  • 1.Ext JS 建立web开发工程
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • # C++之functional库用法整理
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • $forceUpdate()函数
  • (1)SpringCloud 整合Python
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (3)(3.5) 遥测无线电区域条例
  • (C11) 泛型表达式
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (补)B+树一些思想
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (第一天)包装对象、作用域、创建对象
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)Neo4j下载安装以及初次使用
  • (转)JAVA中的堆栈
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径