JavaEE:网络编程(UDP)

文章目录

    • UDP
    • UDP的特点
    • UDP协议端格式
    • 校验和
      • 前置知识
      • 校验和具体是如何工作的?


UDP

UDP的特点

UDP传输的过程类似于寄信.

  • 无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接.
  • 不可靠: 没有确认机制,没有重传机制,如果因为网络故障导致该段无法到达对方,UDP协议也不会给应用层返回任何错误信息.
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量.

UDP协议端格式

学习一个网络协议,主要就是学习"数据格式",“报文格式”.
在这里插入图片描述
上图为了排版,于是进行了换行,实际上UDP的数据是一整行的,并没有换行操作~
在这里插入图片描述
UDP报头是固定长度的,总共8个字节.
报头中的四个字段,没有指定分隔符,而是通过固定长度来进行区分的.

可以看到我们是使用2个字节的长度来表示端口号的.如果端口号超过2个字节,那么这个端口号就会在系统底层被"截断".

  • 源端口,目的端口: 在网络通信中,涉及到四个关键信息,源IP,目的IP,源端口,目的端口.

    我们可以认为它们分别对应发件人地址,收件人地址,发件人电话,收件人电话.

  • UDP报文长度:

UDP报文长度,就是报头长度+载荷长度.

报文长度的单位是"字节".
比如,报文长度为1024,这就表示整个UDP数据报就是1024字节.
由于是使用2个字节来表示这个长度,它的最大值就为65535,也就是64kb.

换句话说UDP能传输的数据最大长度就是64kb(包括UDP首部).

然而64kb在当今的互联网环境下,是一个非常小的数字.

一旦数据超过64kb,就可能导致数据被截断,就可能对公司造成损失.

到这里可能有人就会想到,如果把UDP的长度字段,扩展一下,不就行了?

  • 听起来确实是一个好方法,但是实际上,这是这是非常不靠谱的,不靠谱不是"技术问题",而是"政治问题".

    作为一个"网络协议"不是单方面修改就可以的,即使修改了你的服务器的内核中UDP的实现,可是,客户端那边,用户的电脑上,咋办???
    服务器要改,客户端也要改,客户端你咋改??
    就算你真的把用户的系统都改了,但是人家用户也不只是用你的服务器啊,还要用别人的啊.
    除非你能够把全世界所有的PC/手机/服务器所有涉及到UDP协议的地方,都进行统一修改.

相比于修改UDP,不如发明出一个新的协议来代替UDP,可能更简单一些~

校验和

前置知识

在网络传输的过程中,是非常容易出现错误的~

电信号/光信号/电磁波 如果收到环境的干扰,可能就会使里面传输的信号发生改变.(高中物理就教过我们,电厂/磁场 都是能相互影响的)

为了能够"发现"或者"纠正"这里出现的错误,于是我们引入了"校验和".

校验和具体是如何工作的?

校验和可以在要传输的数据中,引入额外信息,用来发现/纠正传输数据的错误.

在UDP中,使用2个字节,作为校验和.
UDP使用简单有效的方案,CRC校验和(循环冗余校验).

更具体一点,就是把UDP数据报里的整个数据,都进行遍历,分别取出每个字节,往一个两个字节的变量上进行累加,由于整个数据可能很多,加着加着可能使结果溢出了,但是溢出也没关系,重点不在于最终的和是多少,而是关心校验和的结果是否会在传输过程中发生改变.

在这里插入图片描述
接收方就可以根据数据的内容,按照同样的算法再算一遍校验和,得到checksum2.

如果传输的数据在网络通信过程中没有发生任何改变,此时算出来的checksum1 == checksum2.
反之,如果发现checksum1 != checksum2,我们就可以认为数据在网络传输过程中出错了.

在计算校验和的过程中,是否可能出现两个不同的数据,生成的校验和相同呢?
这个是可能会存在的,但是概率特别低.

这个问题对于CRC来说,概率可能比其他方案高一点.
除了CRC之外,还有一些其他的算法来实现校验和,比如MD5和SHA1.

MD5算法,本质上是一个"字符串hash算法",它背后的实现过程是一个"数学过程",我们可以简单理解为套公式~

相比于MD5的计算细节,我们更关心它的特点[重点掌握]:

  1. 定长: 无论输入的字符串,长度多长,算出的MD5的结果都是固定长度.(适合做校验和算法)
  2. 分散: 输入的内容,哪怕只有一点点发生改变,经过计算得到的MD5值都会相差很大.(适合做hash算法)
  3. 不可逆: 根据输入内容,计算MD5,非常简单,但是如果已知MD5值,还原出原始的内容,这在理论上是不可行的.(适合作为加密算法)

说个题外话,MD5解密网站,并非是真的解密,而是它把大量常见的字符串MD5值,提前通过哈希表的方式存储好了.

MD5不可逆(不止MD5还有其他很多加密算法)都是建立在人类当下的算力水平之上的.破解的计算量非常非常大,使用当前人类最厉害的计算机,也要连续算几十年,几百年…

本文到这里就结束啦~

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

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

相关文章

社交电商中“信任”基础与“链动 2+1 模式 O2O 商城小程序”的价值探索

摘要:本文深入探讨了在基于社交的商业模式中,“信任”作为重要基础条件的关键作用。详细分析了在产品同质化日益严重的当下,人与人之间口口相传的宣传方式优势。同时,全面引入“链动 21 模式 O2O 商城小程序”,深入阐述…

【python对遥感数据进行数据清洗和归一化处理,以高分6号卫星(WFV)数据为例】

python对遥感数据进行数据清洗和归一化处理,以高分6号卫星(WFV)数据为例 处理遥感数据,如高分6号卫星(GF-6)的宽视场成像仪(WFV)数据,通常涉及数据读取、数据清洗&…

软硬件项目运维方案(Doc原件完整版套用)

1 系统的服务内容 1.1 服务目标 1.2 信息资产统计服务 1.3 网络、安全系统运维服务 1.4 主机、存储系统运维服务 1.5 数据库系统运维服务 1.6 中间件运维服务 2 运维服务流程 3 服务管理制度规范 3.1 服务时间 3.2 行为规范 3.3 现场服务支持规范 3.4 问题记录规范…

领夹麦克风什么牌子好,无线麦克风哪个好,领夹麦克风品牌排行榜

无线领夹麦克风已成为现代生活中不可或缺的沟通工具,但市场中仍存在一些未被广泛认知的陷阱,例如:部分产品因设计缺陷,如电池寿命短、抗风噪能力弱,影响了用户体验。作为一名音频设备测评师,我将揭示无线领…

原生+jquery写自动消失的提示框

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>自动消失消息提示</title> <style>/…

2.4 卷积2

2.4.2 复正弦波与整体方案 在2.3节中&#xff0c;我们提出了关于复正弦输入的频域输出及其意义的两个问题。为了研究这些问题&#xff0c;我们让一个具有真实脉冲响应 h [ n ] h[n] h[n]&#xff08;即 h Q [ n ] 0 h_Q[n] 0 hQ​[n]0&#xff09;的LTI系统通过输入复正弦…

将本地离线Jar包上传到Maven远程私库上,供项目编译使用

背景 因项目对接需求&#xff0c;需对接第三方Jar(海康人脸识别服务网关API)&#xff0c;在项目集成时&#xff0c;处于本地编译、远程持续构建的需要将离线Jar推送到远程Maven仓库。 实施步骤 进入到离线Jar包同文件夹下 配置Maven配置文件中远程账户信息 需要在Idea配置的…

字节跳动算法岗面试亲历:高效流程大公开,通关诀窍全掌握

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 个人情况 985 本硕项目一个论文一篇无实习经历 时间节点 7.2 技术面一面 …

[通信原理]确知信号1:傅里叶分析

傅里叶分析 周期函数可以用直流分量、正弦函数和余弦函数构成的无穷级数来表示&#xff0c;这些函数是正交的&#xff0c;意味着它们之间没有任何相关性。‌ 必须指出&#xff0c;并非任意周期信号都能进行傅里叶级数展开&#xff0c;函数需满足狄利赫里条件才能被展开。通常…

油耳用棉签还是挖耳勺?好用的无线可视挖耳勺推荐

很多小伙伴在清理耳朵时在考虑用棉签好还是挖耳勺好&#xff0c;用棉签清理的耳道很容易将棉絮残留在耳道中引起耳道感染。而普通的挖耳勺在使用过程中容易因为操作不旦弄伤到耳朵。所以在掏耳的过程中建议大家使用可视挖耳勺会更安全和精准。但也存在品牌繁杂的情况&#xff0…

Unity实现原始的发射子弹效果

1 创建一个炮塔&#xff0c;按下空格-坦克会发射一个小球2.小球会掉在地上滚下来-添加组件3 间隔几秒后自动销毁程序逻辑&#xff1a;1.在场景中创建一个炮塔\子弹拿到代码里的变量里程序逻辑&#xff1a; 2.if语句检测用户有没有按下空格程序逻辑&#xff1a; 3.在炮塔坐标的位…

UWA支持鸿蒙HarmonyOS NEXT

华为在开发者大会上&#xff0c;宣布了鸿蒙HarmonyOS NEXT将仅支持鸿蒙内核和鸿蒙系统的应用&#xff0c;不再兼容安卓应用&#xff0c;这意味着它将构建一个全新且完全独立的生态系统。 为此&#xff0c;UWA也将在最新版的UWA SDK v2.5.0中支持鸿蒙HarmonyOS NEXT&#xff0c…

出差乘坐高铁,车票如何开电子发票?

出差乘坐高铁&#xff0c;车票如何开电子发票 如果您由于公务乘坐火车/高铁&#xff0c;但事后需要打印报销发票&#xff0c;该如何操作呢&#xff1f;车票可以开电子发票吗&#xff1f; 目前火车票/高铁票没有电子发票。 高铁、火车等交通工具的票务流程涉及改签、退票等多…

Mysql梳理6——order by排序

目录 6 order by排序 6.1 排序数据 6.2 单列排序 6.3 多行排列 6 order by排序 6.1 排序数据 使用ORDER BY字句排序 ASC&#xff08;ascend&#xff09;:升序DESC(descend):降序 ORDER BY子句在SELECT语句的结尾 6.2 单列排序 如果没有使用排序操作&#xff0c;默认…

怎么办!AI美女网红,把我包围了!附实操教程和工具

在这个看脸的时代&#xff0c;我们已经习惯了社交媒体上那些光鲜亮丽的网红美女。 但你有没有想过&#xff0c;这些让你心动的“美女”&#xff0c;可能根本不是真人&#xff1f; 对&#xff0c;你没听错&#xff0c;我说的就是那些由AI生成的美女网红&#xff0c;她们已经悄悄…

仓库14代快刷屏功耗

基站4.2inchBW&#xff0c;4.2寸仓储868M标签&#xff1a; 测试仪器 监听周期&#xff1a;500ms. 休眠平均电流为868nA; 消耗电量为367pWh. 休眠 监听60s平均电流为76.7uA; 60s消耗电量为4.22uWh. 监听60s 通讯刷屏最高电流24.5mA; 消耗电量为24.3uWh. 通讯刷屏

IPv6(三)

文章目录 IPv6报文 IPv6报文 IPv6基本报头有8个字段&#xff0c;固定大小为40字节&#xff0c;&#xff0c;每个IPv6数据都必须包含报头&#xff0c;基本报头提供报文转发的基本信息&#xff0c;会被转发路径上面的所有路由器解析 IPv6报头长度为40字节Version&#xff1a;版本…

Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)

目录 前言Demo 前言 对于python用户的登录&#xff0c;以下只是提供一个Demo用于学习 更多的python知识点可从我的专栏中进行学习 python专栏详细分析Flask中的蓝图Blueprint&#xff08;附Demo&#xff09;详细分析Flask部署云服务器&#xff08;图文介绍&#xff09;构建F…

yolov5-7转onnx并推理(包括缩放图推理与原始图片推理)

一、yolov5转onnx 先安装onnx, onnxruntime-gpu, ( pip install 就可以) 1. 静态模型&#xff1a; python export.py --weights yolov5s.pt --include onnx2.动态模型&#xff1a; python export.py --weights yolov5s.pt --include onnx --dynamic3.这里谈谈静态与动态的…

打开C嘎嘎的大门:你好,C嘎嘎!(1)

前言&#xff1a; 小编在学习完一些数据结构以后&#xff0c;终于&#xff0c;我还是来到了这一步&#xff0c;开始学习我小学就听说过的C&#xff0c;至于为什么标题写的C嘎嘎&#xff0c;因为小编觉着这样好念而且有意思&#xff0c;今天是小编学习C嘎嘎的第一天&#xff0c;…