当前位置: 首页 > 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 的介绍到此结束。

http://www.lryc.cn/news/334397.html

相关文章:

  • 数据结构(初阶):顺序表实战通讯录
  • Outlook会议邀请邮件在答复后就不见了
  • 【C++】list模拟实现
  • ETL工具-nifi干货系列 第八讲 处理器PutDatabaseRecord 写数据库(详细)
  • 【MySQL】如何判断一个数据库是否出问题
  • SQLite数据库的性能问题并不是单纯地由数据量的大小决定的,而是受到多种因素的综合影响。以下是一些可能导致SQLite性能问题的因素
  • Blender怎么样启动默认移动和Cavity效果
  • Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
  • Laravel 开发Api规范
  • 蓝色wordpress外贸建站模板
  • windos环境,使用docker容器运行项目的,新增外部访问地址配置
  • 设计模式:生活中的组合模式
  • WPF OnStartup
  • docker-相关
  • 二十、Rust AOP 切面增强
  • 掌握Go语言:Go语言精细错误,清晰、高效的错误处理实践(32)
  • Spring与Web环境的集成
  • 二叉树的遍历——bfs广度优先搜索
  • 飞鸟写作可靠吗 #职场发展#经验分享#经验分享
  • Java 实现自定义注解
  • 代码随想录Day48
  • Web 后台项目,权限如何定义、设置、使用:菜单权限、按钮权限 ts element-ui-Plus
  • ADB 操作命令及其详细用法
  • 类的函数成员(三):拷贝构造函数
  • C#操作MySQL从入门到精通(8)——对查询数据进行高级过滤
  • Centos 7 安装通过yum安装google浏览器
  • 题目:学习使用按位与 。
  • 逐步分解,一文教会你如何用 jenkins+docker 实现主从模式
  • WebSocket 对于手游的意义
  • 安卓APP的技术质量:如何提高