运输层---UDP协议

news2024/12/27 21:26:48

目录

  • 一. 无连接运输: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.coloradmin.cn/o/839945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字图像处理 使用 GIST 图像描述符

一、简述 GIST描述符是一种用于场景识别的全局图像特征,它能够有效地描述图像的空间结构信息。GIST描述符最初是在这篇论文中提出的:A Computational Approach to Edge Detection 1998。 图像的 GIST 描述符可以通过分析空间频率和方向来捕获。直观上,GIST 总结了图像不同部分…

九、pig安装

1.上传pig包 2.解压文件 3.改名 4.赋权 5.配置环境变量 export PIG_HOME/usr/local/pig export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin:$PIG_HOME/bin 6.测试

ensp-DHCP服务实验

ensp-DHCP服务实验 日期:6-26 📎DHCP服务器.zip📎dhcp服务作业.docx

剑指 Offer 50. 第一个只出现一次的字符

题目描述 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例 思路1 如果一个字符首次出现indexOf和最后一次出现lastIndexOf的位置相同,说明只出现了一次 从左到右遍历即可得到第一个不重复出现的数字cla…

c++11 标准模板(STL)(std::basic_ofstream)(三)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ofstream : public std::basic_ostream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istrea…

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说&#xff0c;训练的过程需要保存中间结果&#xff08;不管是GPU还是CPU&#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)&#xff0c;后向传播由top_diff计算bottom_diff&#xff08;如果某个变量打开梯度进行训练的话&#xff…

AcWing 4310:树的DFS ← vector、auto、邻接表

【题目来源】https://www.acwing.com/problem/content/description/4313/【题目描述】 给定一棵 n 个节点的树。 节点的编号为 1∼n&#xff0c;其中 1 号节点为根节点&#xff0c;每个节点的编号都大于其父节点的编号。 现在&#xff0c;你需要回答 q 个询问。 每个询问给定两…

Godot 4 源码分析 - Path2D与PathFollow2D

学习演示项目dodge_the_creeps&#xff0c;发现里面多了一个Path2D与PathFollow2D 研究GDScript代码发现&#xff0c;它主要用于随机生成Mob var mob_spawn_location get_node(^"MobPath/MobSpawnLocation")mob_spawn_location.progress randi()# Set the mobs dir…

面试热题(x的平方根)

给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 这道题虽然是简单题…

Laravel 5 报错信息存在严重漏洞

靠自己生活&#xff0c;灵魂都是安宁的。 简介 Laravel是一套简洁、优雅的PHPweb开发程序框架&#xff0c;并且具有简洁的表达&#xff0c;是一个比较容易理解且强大的&#xff0c;它提供了强大的工具用以开发大型网站的应用。 漏洞复现 使用Whoops错误库来显示\Whoops\Han…

mysql报错:name ‘_mysql‘ is not defined

原因是&#xff1a; Mysqldb 不兼容 python3.5 以后的版本 解决办法&#xff1a; 使用pymysql代替MySQLdb 在项目应用下的__init__.py 添加上去 import pymysqlpymysql.version_info (1, 4, 13, "final", 0) pymysql.install_as_MySQLdb()

找不到org.apache.http.annotation.NotThreadSafe的类文件

问题现象 最近在做一个调用包含请求体的GET请求功能的时候&#xff0c;引用了 httpclient-4.5.2.jar 和 httpcore-4.4.5.jar。 在工程编译环节报错如下&#xff1a; 原因分析 httpcore 和 httpclient 的版本不匹配。 解决方案 将 httpcore 的版本由 4.4.5 改为 4.4.4&am…

常用工具的常用操作1

写在前面 记录可能用到的各种工具常见技巧。 1&#xff1a;sublime 1.1&#xff1a;操作多列 首先选中要操作的列所在的行&#xff1a; 然后点击selection&#xff0c;spit lines&#xff1a; 接下来移动左右键就可以操作了&#xff0c;删除或者批量添加内容&#xff1a; 1…

客户流失分析预测案例 -- 机器学习项目基础篇(7)

客户流失 它是指现有的客户、用户、订阅者或任何类型的回头客停止与公司开展业务或结束与公司的关系。 客户流失的类型 合同客户流失&#xff1a;当客户签订了服务合同并决定取消服务时&#xff0c;例如有线电视&#xff0c;SaaS。自愿流失&#xff1a;当用户自愿取消服务时…

QtWebApp同时开启http服务和https服务,接受来自客户端的不同请求并进行相应的处理

零、前言 在 QtWebApp开发https服务器&#xff0c;完成客户端与服务器基于ssl的双向认证&#xff0c;纯代码操作 一文中已经用纯代码的形式完成了客户端和服务端的 https 协议交互。 不过&#xff0c;只是开放了https服务&#xff0c;更多情况下&#xff0c;http服务和https服…

解决 Android Studio 的 Gradle 面板上只有关于测试的 task

文章目录 问题描述解决办法 笔者出问题时的运行环境&#xff1a; Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17 问题描述 笔者最近发现一个奇怪的事情。笔者的 Android Studio 的 Gradle 面板上居然除了用于测试的 task 之外&#xff0c;其它什…

Spring Security6入门及自定义登录

一、前言 Spring Security已经更新到了6.x,通过本专栏记录以下Spring Security6学习过程&#xff0c;当然大家可参考Spring Security5专栏对比学习 Spring Security5专栏地址&#xff1a;security5 Spring Security是spring家族产品中的一个安全框架&#xff0c;核心功能包括…

驱动工作原理

驱动原理 在Linux操作系统中&#xff0c;硬件驱动程序中实现对硬件直接操作&#xff0c;而用户空间&#xff0c;通过通用的系统调用接口&#xff08;open() 打开相应的驱动设备,ioctl()控制相应的功能等&#xff09;&#xff0c;实现对硬件操作&#xff0c;应用程序没有直接操作…

百度Apollo规划算法——OBB障碍物检测代码解析

百度Apollo规划算法——Box障碍物检测代码解析 前言代码代码分析f1f2f3f4f5f6 参考 前言 本文主要分析Apollo代码中函数bool Box::HasOverlap(const Box2d &box) const {}的数学原理。 在阅读此部分代码时&#xff0c;第一遍没看懂return的一堆什么意思&#xff0c;百度之后…

work weekly

每周汇报&#xff1a;围绕着项目范围及需求内容完成情况多少、人力资源情况、整体进度情况、成本情况、【范围】多少工作、【资源】投入多少人、【时间】花费多少时间、【成本】花了多少钱 【质量】一般没有特别要求的默认软件开发过程规范要求响应时间 【沟通】这里不说了 …