Java EE|TCP/IP协议栈之传输层UDP协议详解

news/2024/4/16 20:16:55/文章来源:https://blog.csdn.net/moteandsunlight/article/details/129128548

文章目录

    • 一、对UDP协议的感性认识
      • 简介
      • 主要特点
    • 二、UDP的报文结构
      • 协议端格式概览
      • 报文结构详解
        • 源端口
        • 目的端口
        • 16位UDP报文长度
        • 16位校验和
    • 参考

一、对UDP协议的感性认识

简介

UDP,是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI和TCP/IP协议族参考模型中的一种无连接的传输层模型。

UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。许多应用只支持UDP如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。**当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。**在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择。

主要特点

无连接、不可靠传输、面向数据报、全双工。

其中在之间的网络编程之套接字 UDP一文中,我已就UDP的无连接、面向数据包、全双工做了解释。所以这里我们需要重点解决的问题就是如何理解UDP的不可靠传输。

要想理解这个特点,我们就需要剖析好UDP的报文结构以及内部的一些原理。

二、UDP的报文结构

协议端格式概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4KO04uJ-1676885461888)(F:\typora插图\image-20230220165606281.png)]

这里报头每个字段都是使用两个字节描述,也就是说UDP的报头是8个字节。

报文结构详解

源端口

我们已经知道一次完整的网络通信,有一个通信五元组:源ip、源端口、目的ip、目的端口、协议号(进程要封装、解析的数据报的数据格式)。

这里边,UDP的包头就体现了,源端口就是发送方的端口号。

目的端口

顾名思义,接收方的端口号。

16位UDP报文长度

这个字段表示的长度不是UDP载荷 的长度,而是整个UDP报文的长度。

216=65536,也就是说16位表示的范围是0~65535(长度是非负数),也就是说64kb(210=1kb,2^6*10kb=64kb)。但是我们日常生活的数据一般是很大的,如果来自上层即应用层的数据报,超过了64kb怎么办?

对此,我们有两种解决办法

1.我们首先要知道,应用层代码是程序员自己根据业务编写的。所以,我们可以在应用层的代码层面上,对应用层的数据进行手动分包,拆分成多个UDP数据包进行传输。

2.不使用UDP,使用TCP。TCP对数据报的长度没有限制。

很显然,我们自己手动分包会衍生出来很多问题,所以这种情况下,我们是不使用UDP的。

16位校验和

校验和的作用是为了验证传输的数据是否是正确的。

网络传输过程中,很可能会受到一些干扰,在这些干扰下,可能出现“比特翻转”的情况。(比特翻转即1变0,0变1).

为什么可能会收到一些干扰,因为最终这些信息都需要转换成光信号/电信号进行传输,很可能会受到一些物理环境影响,比如电场、磁场或者高能射线等。

一旦发生比特翻转,很可能带来致命的打击。

校验和就不能降低数据发生比特翻转的概率,但是它能够很大程度上告诉我们它已经翻转了,这个数据已经脏了,我们不能使用。

校验和是针对数据内容进行一些列的数学运算,得到一个比较短的结果。

如果传输前后数据内容一直,得到的校验结果一定;

如果数据变了,得到的校验结果大概率也变了。

注意:校验和一致,也不代表着中间没有发生比特翻转。理论上存在,但是工程上我们将这种特殊情况忽略不计。

以上便是关于校验和,我们需要重点理解的东西。下边我们简单说几个比较知名的计算校验和的算法。

1.CRC:循环冗余校验。特点是简单粗暴,但是校验效果不佳。每个字节循环累加,溢出的高位舍去。

2.MD5:有一系列公式进行复杂运算。特点是定长、冲突概率小、不可逆。这里的定长是指无论原始数据多长,得到的MD5值都是固定长(4/8Byte)。冲突概率小是因为原数据只要改变一个地方,MD5值都会变化很大,冲突的概率极小。不可逆是通过原始数据计算很容易,通过MD5还原成原始数据很难,理论上不可实现,计算量极大。

应用:校验和、作为哈希值的获取方式、加密

3.SHAI:与MD5类似,但是计算方法不同

参考

UDP简介

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ 第二章

RocketMQ 第二章 7、SpringBoot整合RocketMQ SpringBoot 提供了快捷操作 RocketMQ 的 RocketMQTemplate 对象。 7.1、引入依赖 注意依赖的版本需要和 RocketMQ 的版本相同。 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rock…

【Java期末复习】《面向对象程序设计》练习库

目录 一、单选题 二、填空题 三、程序填空题 1、 super使用--有如下父类和子类的定义&#xff0c;根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类&#xff0c;求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…

会利用信息差赚钱的人才是聪明人

毕业后找不到工作&#xff0c;穷到只剩下时间&#xff0c;大小做了20多份副业兼职&#xff0c;终于找到了可靠的渠道&#xff0c; 我是专科生&#xff0c;学历不好&#xff0c;专业拉胯。毕业后&#xff0c;我找了两三份工作。要么工资太低&#xff0c;只能交房租&#xff0c;…

一种基于强化学习的自动变道机动方法

文章目录摘要前言相关的工作方法论动作空间奖励函数设计Q学习仿真结果结论摘要 变道是一项至关重要的车辆操作&#xff0c;需要与周围车辆协调。建立在基于规则的模型上的自动换道功能可能在预定义的操作条件下表现良好&#xff0c;但在遇到意外情况时可能容易失败。在我们的研…

python元类编程

1.1.propety动态属性 在面向对象编程中&#xff0c;我们一般把名词性的东西映射成属性&#xff0c;动词性的东西映射成方法。在python中他们对应的分别是属性self.xxx和类方法。但有时我们需要的属性需要根据其他属性动态的计算&#xff0c;此时如果直接使用属性方法处理&…

vulnhub zico2

总结&#xff1a;脏牛提权 目录 下载地址 漏洞分析 信息收集 木马上传 反弹shell 提权 下载地址 zico2.ova (Size: 828 MB)Download: https://www.dropbox.com/s/dhidaehguuhyv9a/zico2.ovaDownload (Mirror): https://download.vulnhub.com/zico/zico2.ova使用方法&…

16_FreeRTOS队列集

目录 队列集 队列集相关API函数介绍 队列集使用流程 实验源码 队列集 一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集! 作用:用于对多个队列或信号量进行“监听”其中不管哪一个消息到来&#xff0c;都…

jQuery.NiceScroll - 有史以来最好的 nicescroll 版本——在现代浏览器和移动设备上极其流畅和一致,资源使用率低(中文文档)

jQuery.NiceScroll特征依赖关系使用配置参数有史以来最好的 nicescroll 版本——在现代浏览器和移动设备上极其流畅和一致&#xff0c;资源使用率低 官网:nicescroll.areaaperta.com GitHub:github.com/inuyaksa/jquery.nicescroll CDN引入: https://www.bootcdn.cn/jquery.nic…

上海亚商投顾:沪指放量大涨 券商等权重板块全线飙升

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数今日集体反弹&#xff0c;沪指、深成指单边拉升&#xff0c;午后均涨超2%&#xff0c;上证50大涨超2.7%&…

[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2019-6339)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

java final关键字 详解

概述&#xff1a;作用&#xff1a;细节&#xff1a;演示&#xff1a;总结&#xff1a;一、概述 : final [ˈ faɪnl]&#xff0c;最终的&#xff0c;最后的&#xff0c;决定性的&#xff0c;不可改变的。final作为Java中的一个关键字可以用来修饰类&#xff0c;方法&#xff0c…

Vbs_To_Exe制作简易exe程序

文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI&#xff08;解决中文乱码问题&am…

LVS中的keepalived高可用

文章目录前言一、Keepalived简介二、keepalived工作原理三、配置文件四、实验1.某台Real Server down2.LVS本身down实验过程&#xff1a;五、代码详细演示整体过程调度器安装软件、设置测试keepalived对后端RS的健康检测backup服务主机设置前言 一、Keepalived简介 Keepalived是…

UG NX二次开发(C#)-导出-导出Parasolid文件(.x_t文件)

文章目录 1、前言2、在UG NX中的操作2、采用NXOpen二次开发实现1、前言 UG NX提供了多种文件的导入与导出功能,本文采用NXOpen.net来实现Parasolid文件(.x_t文件)的导出功能。 2、在UG NX中的操作 打开UG NX的一个三维模型,如下图所示。 点击“文件”->“导出”->“…

企业级信息系统开发学习笔记1.2 初探Spring——利用组件注解符精简Spring配置文件

文章目录零、本讲学习目标一、课程引入二、打开项目 - SpringDemo三、利用组件注解符精简Spring配置文件&#xff08;一&#xff09;创建新包&#xff08;二&#xff09;复制四个类&#xff08;三&#xff09;修改杀龙任务类&#xff08;四&#xff09;修改救美任务类&#xff…

html常用font-family设置字体样式

<table border"1" cellpadding"0" cellspacing"0" ><tr><td><h3 style"font-family: 黑体;">黑体&#xff1a;SimHei</h3></td><td><h3 style"font-family: 华文黑体;">华…

Prometheus集群分布式架构浅析

集群行为是一种常见于自然界中鱼群、鸟群、蜂群等低等群居生物的集体行为&#xff0c;受此启发形成了无人机集群的概念。无人机集群不是多无人机间的简单编队&#xff0c;而是通过必要的控制策略使之产生集群协同效应&#xff0c;从而具备执行复杂多变、危险任务的能力。目前无…

如何快速、全面、深入地掌握一门编程语言

思考路线 如何快速&#xff1f; 什么样的Demo才能让人觉得你掌握了它&#xff1f; 空 判断&#xff1a;构造一个可以判断所有空的 is_empty 函数 for 循环&#xff1a;i 和 集合迭代两种 时间获取&#xff1a;年/月/日 时分秒 时间戳与时间格式互转 休眠时间函数 字符串处理…

Word控件Spire.Doc 【Table】教程(17):如何在 C#、VB.NET 中删除 Word 表格中的行和列

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

PCB设计中降低噪声与电磁干扰的24个窍门

电子设备的灵敏度越来越高&#xff0c;这要求设备的抗干扰能力也越来越强&#xff0c;因此PCB设计也变得更加困难&#xff0c;如何提高PCB的抗干扰能力成为众多工程师们关注的重点问题之一。本文将介绍PCB设计中降低噪声与电磁干扰的一些小窍门。 下面是经过多年设计总结出来的…