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

运输层---UDP协议

目录

  • 一. 无连接运输:UDP
    • 1.1 定义
    • 1.2 特点
    • 1.3 应用
  • 二. UDP报文段结构
  • 三. UDP检验和
    • 3.1 定义
    • 3.2 检验和计算实例
    • 3.2 UDP检验和的局限

一. 无连接运输:UDP

在这里插入图片描述

1.1 定义

  • UDP(User Datagram Protocol)用户数据报协议:由 [RFC 768] 定义的协议。只做运输层协议能做的最少的工作,除了复用/分解功能以及少量差错检测外,几乎没有对IP协议增加别的东西。

运输层协议最低限度必须提供一种复用/分解服务。

  • 构成:从应用进程得到数据,附加上源端口号字段和目的端口号字段,以及两个其他的小字段(长度字段,检验和字段checksum)形成报文段交付给网络层。
    (网络层将UDP提供的报文段封装到IP数据报中,然后尽力而为地交付给目标主机。)

1.2 特点

UDP不提供不必要报文段交付之外的额外功能

    1. 尽力而为的交付不可靠数据传输服务):不保证可靠交付,主机不需要维护复杂的连接状态。

QUIC协议(Quick UDP Internet Connections):快速UDP因特网连接,是一种基于 UDP 的传输层协议。将UDP作为支撑运输协议并在UDP之上的应用层协议中实现可靠性保证了数据的完整性和有序性。

    1. 无连接的:通信时不需要创建连接(发送报文段之前,发送方域接收方运输层实体之间没有握手),减小了开销和发送数据前的时延。
    1. 无阻塞控制:不会影响发送端的发送频率。(与TCP相比发送时延少,交付时间短
    1. 无连接状态 :由于不提供可靠数据传输服务,也没有拥塞控制机制,UDP不维护连接状态,也不跟踪参数(接收/发送缓存,拥塞控制参数以及序号与确认号的参数)。
    1. 面向报文:只在应用层交下来的报文前增加了首部后就向下交付IP层
    1. 首部开销小:只有8个字节,相对于TCP的20个字节的首部要短
    1. 支持一对一、一对多、多对一、多对多的交互通信。

1.3 应用

  • DNS:

    • 使用UDP的优势:无需建立连接,运行速度快
    • 网络层将封装好的IP数据报发送给一个名字服务器,查询主机中的DNS应用程序等待响应。如果(由于底层网络丢失了查询或者响应或其他原因)未收到响应,要么向另一个名字服务器发送查询,要么通知调用它的应用程序无法获得响应。
  • 流媒体

一种网上即时传输影音以供观赏的一种技术与过程。
流媒体技术将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏。此技术使得数据包得以像流水一样发送。如果不使用此技术,就必须在使用前下载整个媒体文件。

  • SNMP

SNMP(Simple Network Management Protocol)是一种用于网络管理的应用层协议,它为网络管理员提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

在这里插入图片描述

二. UDP报文段结构

在这里插入图片描述

UDP报文段包含数据报头(首部)和数据区两部分:

  • 数据报头:由4个字段(每个字段有2字节)组成,分别是:源端口、目的端口、报文长度和校验和。
  • 数据区:包含UDP数据,长度在8字节~65535字节之间,在终点交付报文时需要用到。

数据报头具体释义如下:

  • 源端口:可选字段,通常包含发送数据报的应用程序所使用的UDP端口。需要对方回信时选用,如果不需要对方回信,可置0。
  • 目的端口:接收端计算机上UDP软件使用的端口,占据16位。
  • 报文长度:该字段占据16位,表示UDP数据报长度,包含UDP报文头和UDP数据长度。因为UDP报文头长度是8个字节,所以这个值最小为8。
  • 校验和:检测UDP数据在传输中是否出错,有错则丢弃。该字段可选,当源主机不想计算校验和,则置0。

实际上计算检验和时UDP包含了伪首部,其中包括了源IP地址、目的IP地址、协议号、以及UDP数据的长度,这些信息也要包含在计算校验和的过程中,以确保数据的完整性和正确性。

三. UDP检验和

3.1 定义

  • 目的: 提供差错检测功能,检测在被传输报文段中的差错 (如比特反转)
  • 实现:
    • 发送方: UDP数据报分成若干个16位的比特字(如果数据报的长度不是16位的整数倍,则在末尾填充0),对所有比特字进行求和运算,求和时遇到的任何溢出都被回卷,取累加和的反码作为校验和,放在 UDP报文段中的检验和字段。

进位回卷: 如果累加和超过16位,则将高位的进位加到低位上

ps:这里的取反码是指将16比特01数据中的0与1反转互换,即1变为0,0变为1。

  • 接收方:接收到UDP数据报后会重新计算校验和,然后将计算得到的校验和与接收到的校验和进行比较。如果两者相同,则说明数据在传输过程中可能没有发生错误;如果不同,则说明数据被修改或损坏。

校验范围+校验和=1111111111111111 则通过校验, 否则没有通过校验

在这里插入图片描述

3.2 检验和计算实例

在这里插入图片描述

回卷:取出超过16位比特的进位(也就是数字1),与最后一位相加(如果出现多次溢出,则重复回卷过程直到无溢出),得到最后的和,再进一步得到检验和。

3.2 UDP检验和的局限

    1. UDP虽然提供差错检测,但是对差错恢复无能为力
    1. 某种实现:丢弃受损报文段
    1. 其他实现:将受损报文段交给应用程序并给出警告
http://www.lryc.cn/news/110231.html

相关文章:

  • 【LeetCode】剑指 Offer Ⅱ 第3章:字符串(7道题) -- Java Version
  • 【python】绘图代码模板
  • RTT学习笔记12-KConfig 语法学习
  • 基于Mediapipe的姿势识别并同步到Unity人体模型中
  • Linux下进程的特点与环境变量
  • 以Llama-2为例,在生成模型中使用自定义LogitsProcessor
  • python 计算图片hash 缓存图片为key
  • 制造型企业如何实现车间设备生产数据的实时采集?需要5G网络吗?
  • 第2章 HTML中的JavaScript
  • 景联文科技高质量成品数据集上新啦!
  • flask------请求拓展
  • 大数据-玩转数据-FLINK-从kafka消费数据
  • 介绍Sping Boot的5个扩展点
  • Linux2.6内核配置说明
  • Pytest简介及jenkins集成
  • 【LeetCode】105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树
  • 堆内存和一些检测工具
  • 【JavaScript】元素获取指南
  • uniapp 返回上一页并刷新
  • Java阶段五Day21
  • 2023,谁在引领实时互动进入高清时代?
  • STM32(HAL)串口中断接收
  • word转pdf怎么转?几种常用方法分享
  • 自学(黑客)技术,入门到入狱!
  • js 函数、闭包及函数对象
  • SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--搭建Vue 前端工程[二]
  • Android 之 AudioManager ( 音频管理器 )
  • 2023爱分析·超自动化厂商全景报告|爱分析报告
  • 【C++进阶知识】04 - 函数默认实参、默认初始化、initializer_list
  • C语言笔试训练【第三天】