JavaEE 第21节 UDP数据报结构剖析

news2024/9/21 16:39:07

目录

  • 前言
  • 报文结构
    • 1、源端口号&目的端口号
    • 2、UDP长度
    • 3、校验和
      • 概念
      • 校验和计算方法

前言

本篇文章会围绕UDP报文的结构,对此协议展开详细的讲解,比如报文中每个字段的作用、以及填写方式。
阅读完这篇文章,你会对UDP数据报结构有个透彻的认识,进而体会UDP协议持有相关特性的原因。

报文结构

UDP协议是面向数据报进行传输的。例如发送端发送一个100字节的数据报,那么接收端只能一次性把这个100字节的数据报接收。 而不能分段接收!比如100个字节,分成10次接收,每次接收10个字节,这样是不允许的,因为UDP协议中数据传输最小的单位就是一个数据报,而不是字节。


如图,一个UDP数据报的结构:

在这里插入图片描述
UDP正文部分功能很简单,用于存储需要传输的数据,不用过多介绍,这里主要讲解UDP报头部分的四个字段的功能。

1、源端口号&目的端口号

分别存储客户端和服务器端应用程序的端口号。2个字节,8个比特位,刚好覆盖端口号的大小,即0——65535。
注意: UDP是传输层协议,不太关心IP地址,因此不会把IP地址封装到UDP数据报中,需要把数据报传递个网络层,由网络层对IP地址进行封装。

2、UDP长度

UDP长度的单位是字节,也就是说UDP长度是用来表示这个数据报的内存大小的
例如,一个数据报长度是100,那么这个数据报的内存大小就是100个字节(包含8字节数据报报头)。
由于长度字段只分配了2个字节进行存储,因此其数据报长度的表示范围只能在[8,65535]。
一个数据报的内存结构图:
在这里插入图片描述

也就是说,UDP协议,一次传输的数据大小最多是64KB。放到当今的互联网时代,64KB算不上多,这也算是UDP协议的一个局限。因为这个协议诞生年代久远,是1980年推出的,当时没有想到现在互联网发展速度如此之快。

3、校验和

概念

校验和(checksum)以需要传输的实际数据(包括IP地址以及报头、载荷)作为参数,进行相关计算得到的一个二进制数字。发送端把校验和计算好,填入对应字段,发送给客户端,接收端拿到数据,会用相同的计算方式重新计算校验和,如果和原来的校验和不匹配,说明当前传输过来的数据出现了错误,需要把它丢弃。
注意,UDP协议把数据报丢弃后,不要求重传,这也是为什么说UDP协议传输不可靠的原因,如果确实需要重传,需要采用其他方式进行,比如应用层重传机制等。

校验和计算方法

详细的计算流程不用掌握,大致了解即可。
UDP校验和的计算方法,一般采用“一的补码”进行计算:

  1. 准备伪头部:
    • 伪头部的生成需要借助网络层,以为它需要获取IP地址以及协议号。因此伪头部并不是UDP数据报的一部分,它只是计算校验和临时生成的数据。伪头部具体包含以下内容:

      • 源IP地址(32位)
      • 目的IP地址(32位)
      • 保留字段(8位,值为0)
      • 协议类型(8位,UDP的值为17)
      • UDP长度(16位,即整个UDP报文的长度,包括头部和数据部分)

伪头部的目的是确保IP地址和协议类型在计算校验和时被考虑到,从而提高校验和的可靠性。

  1. 准备UDP头部和数据部分:

    • UDP头部和数据部分一同参与校验和的计算。UDP头部由以下字段组成:

      • 源端口(16位)
      • 目的端口(16位)
      • UDP长度(16位)
      • 校验和字段(16位,初始化时置为0)
      • 数据部分是指UDP报文中实际传输的用户数据。
  2. 将所有字段组合在一起:

    • 将伪头部、UDP头部、数据部分按顺序组合在一起形成一个数据流。
    • 将连续的数据流按照16位(2个字节)一组分割。
  3. 以16位为单位进行逐个加法:

    • 将数据流中的每两个字节(16位)视为一个单元,逐个相加。如果结果超过了16位(即出现溢出),将溢出的高位加到低位上。
  4. 取反:

    • 将得到的加和值取反(即按位取反),生成最终的16位校验和值。
  5. 填入校验和字段:

    • 将计算得到的校验和值填入UDP头部的校验和字段。

除了上面这个算法,关于校验和的计算,还有很多其他常用的算法,比如CRC、MD5、SHA等。这些算法根据不同的场景或者协议被广泛使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2091317.html

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

相关文章

不知道电脑驱动软件哪个好,试试这几款免费不限速的驱动安装软件

每一台电脑都需要安装相关的驱动才能保证设备的正常运行,然而,很多用户搜索下载的驱动安装软件不是捆绑各类软件就是限速下载或者需要开通会员。下面小编就来和大家分享几款免费且不限速的驱动安装软件,帮助大家找到最适合自己的驱动管理工具…

idea使用maven

文章目录 IDEA集成Maven配置Maven环境 全局配置:创建Maven项目POM配置详解 IDEA集成Maven 我们要想在IDEA中使用Maven进行项目构建,就需要在IDEA中集成Maven 配置Maven环境 当前工程设置 1、选择 IDEA中 File > Settings > Build,Execution,Dep…

7,sql 基本的创建库表查询数据

-- 创建库 CREATE DATABASE IF NOT EXISTS test04_dql; 切换到这个库USE test04_dql;-- 创建员工表 DROP TABLE IF EXISTS t_employee; ---创建字段CREATE TABLE t_employee (eid INT NOT NULL COMMENT 员工编号,ename VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900…

网站建设完成后, 做seo必须知道的专业知识之--黑帽SEO

黑帽SEO是指通过不道德或不公平的手段,试图提高网站在搜索引擎中的排名。下面将详细探讨黑帽SEO的各个方面: 定义与原理 定义概述:黑帽SEO涉及使用作弊策略和技巧,目的在于快速提升网站的搜索引擎排名,而非通过正当的…

Django+Vue音乐推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

C语言试题生成与考试系统/在线考试系统/试题管理系统

摘要 学生考试实现智能化管理的帮手需要有试题生成与考试系统,这样能够提高管理员的管理效率,试题生成与考试系统需要提供给用户查询的功能。计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的…

【Linux操作系统】重装系统配置文件一条龙

【Linux操作系统】重装系统配置文件一条龙 文章目录 【Linux操作系统】重装系统配置文件一条龙虚拟机网络配置安装net-tools工具解决屏幕自适应问题解决虚拟机与主机复制粘贴问题文件互通安装ssh服务vscode远程写代码改中文中文输入法支持apt更新源 下面一切案例均在ubantu22.0…

7个流行的开源数据治理工具

数字化时代,数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程,并为决策以及智能化服务提供支撑。大数据有大用途,但是也可能隐藏着巨大的风险,特别是如果我们对数据的情况不是很了解的时候&…

Java技术栈 —— Spark入门(三)之实时视频流

Java技术栈 —— Spark入门(三)之实时视频流转灰度图像 一、将摄像头数据发送至kafka二、Kafka准备topic三、spark读取kafka图像数据并处理四、本地显示灰度图像(存在卡顿现象,待优化) 项目整体结构图如下 参考文章或视频链接[1] Architectur…

RocketMQ学习(二)

文章目录 1. 案例介绍1.1 业务分析1)下单2)支付 1.2 问题分析问题1如何保证数据的完整性?使用MQ保证在下单失败后系统数据的完整性 问题2如何处理第三方支付平台的异步通知通过MQ进行数据分发,提高系统处理性能 2. 技术分析2.1 技…

Visual Studio 快速跳转至特定程序行的快捷键

Visual Studio 快速跳转至特定程序行的快捷键 linuxWindows在Visual Studio中在Visual Code中在Notepad中Win11中的普通记事本 总结 linux :numWindows Ctrl G在Visual Studio中 在Visual Code中 Ctrl G也是可以的 在Notepad中 Ctrl G也是可以的 Win11中的普通记事本…

模型 生产微笑曲线

系列文章 分享 模型,了解更多👉 模型_思维模型目录。产业链中,研发设计和品牌营销环节附加值高,制造环节附加值低。 1 生产微笑曲线的应用 1.1 大杨集团的“微笑曲线”到“武藏曲线”转型 武藏曲线简介说明:在制造业…

JavaScript的对象详解

作为程序员,我们常常会听见一种说法,那就是面向对象编程。那到底什么是对象呢?有改如何面向对象编程呢?今天我们就来详细讲讲 什么是对象呢? 对象是JavaScript中一个非常重要的概念,这是因为对象可以将多个…

Java项目怎么从零部署到Linux服务器上?

目录 一.Java环境(JDK)安装 二.数据库(MySQL)安装 三.部署上线 ▐ 部署Jar包 ▐ 运行程序 ▐ 开放端口 一个Java项目首先需要一个支持它编译的Java环境,因此首先要保证服务器上安装的有相应的JDK 一.Java环境&a…

为什么使用雪花算法,有什么优缺点,如何解决?为什么不使用UUID的方法,如何解决系统回拨的问题?

为什么使用雪花算法,有什么优缺点,如何解决?为什么不使用UUID的方法,如何解决系统回拨的问题? 生成的id应该满足下面的条件: 首先是全局唯一,不能出现重复的ID之后是总体应该是递增的&#xf…

8个平面设计必备素材网站,免费下载。

平面设计师应该去哪里找免费可商用素材网站?我推荐这8个,赶紧收藏好。 1、菜鸟图库 菜鸟图库-免费设计素材下载 菜鸟图库是一个非常大的素材库,站内包含设计、办公、自媒体、图片、电商等各行业素材。网站还为新手设计师提供免费的素材&…

基于django的失物招领系统的设计与实现/ 基于Python的失物招领系统的设计与实现/失物招领管理系统

失物招领系统的设计与实现 摘要:伴随着我国全面推动信息化的趋势,我国的很多行业都在朝着互联网的方向进发。结合计算机技术的失物招领系统能够很好地解决传统失物招领存在的问题,能够提高管理员管理的效率,改善服务质量。优秀的失物招领系统…

感染了后缀为.Wormhole勒索病毒如何应对?数据能够恢复吗?

引言: 在当今日益复杂的网络安全环境中,勒索病毒成为了企业和个人面临的一大威胁。其中,.Wormhole勒索病毒以其独特的传播机制和强大的加密能力,尤为引人注目。本文将深入探讨.Wormhole勒索病毒的特点、感染途径、危害以及相应的…

XSS LABS 靶场初识

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:XSS LABS 靶场简介 XSS LABS 靶场是一个专注于跨站脚本攻击(Cross-Site Scripting,XSS)教育和训练的平台。平台中有一系列精心设计的关于 XS…

若依框架 MyBatis 改为 MyBatis-Plus 的实现步骤

本文只做了简单的实现,具体的细节需根据自己的需求进一步实现。如果实现中遇到问题欢迎留言讨论。 引入 MyBatis-Plus 引入相关依赖(pom.xml) 推荐先直接在顶级 pom.xml 中直接依赖,等调试通过之后,在去按需依赖&…