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

JavaEE初阶-网络原理1

文章目录

  • 前言
  • 一、UDP报头
  • 二、UDP校验和
    • 2.1 CRC
    • 2.2 md5


前言

学习一个网络协议,最主要就是学习的报文格式,对于UDP来说,应用层数据到达UDP之后,会给应用层数据报前面加上UDP报头。
UDP数据报=UDP包头+载荷


一、UDP报头

在这里插入图片描述
如上图UDP的报头主要就分为四个部分,分别占据两字节的空间。
前两个源端口号和目的端口号很好理解就是客户端以及服务器的端口号,用来表示主机上的程序的。第三个UDP长度,因为只占了两个字节的空间,所以UDP数据包的长度加上包头最多只能达到64kb的长度,这是很局限的。不禁会想,为什么不把UDP的长度设置的高一点呢?实际上UDP出现的时代很早,那时64kb已经完全满足通信需求了,只是随着我们现在网络的发展才越来越不够用了。那为什么现在不能够改一下UDP提高它的长度呢?对于这件事也没想象中的简单,单个主机的修改或升级是没有意义的,需要对端也升级,也就是说要升级全世界得一起升级,这个成本难以想象。并且如果单独你升级了,和别人通信不了,站在别人的角度就是你那边除了bug。

二、UDP校验和

数据在网络传输的过程中是很容易出错的,我们需要有办法去对传输的数据进行校验,校验分为两层,第一层就是发现是否出错,第二层就是找到错误在哪并且纠错,这两层本质上都是要引入额外的冗余信息,但是第二层的代价比较大,在UDP数据报中实现到了第一层,发现是否有错。
校验和就是拿着数据进行一系列计算得到结果,如果数据部分发生改变此时得到的结果也就不一样。在通信过程中就是接收方拿到UDP数据包后计算数据包的校验和然后和UDP首部的校验和比较,相同则代表未发生意外,相异则说明数据出了问题。

2.1 CRC

UDP中使用CRC算法(循环冗余校验)计算校验和,这种算法首先设定两个字节的变量,然后把数据报中的每个字节取出来往这个变量上累加,如果结果超出两个字节,溢出部分就舍弃。
这个方法主要是为了让数据的每个字节都参与到运算中去都能够影响结果,最终算的是啥不关键,关键在于接收方算出的校验和和发送方算的是否相同。
假设使用一个很大的变量来保存最终总结果,能够得到精确值,但是也是用来完成相同/不同的比较,具体多少也不关键,所以为了节省空间,高位就可以不要了,就留最低两个字节即可。

2.2 md5

除了CRC之外,还有一个很常用的方法md5,可以作为字符串hash算法。
md5的三个特点:
(1)定长:无论你的输入是什么,md5的输出都是定长的字符串。
(2)不可逆:通过原输入计算md5成本很低,将md5字符串还原成原输入成本非常高,仅仅理论上可行。
(3)分散:输入的内容哪怕改变一点点,差异都很大。

http://www.lryc.cn/news/394596.html

相关文章:

  • leetcode秋招冲刺 (专题16--18)
  • 学懂C#编程:实用方法——string字符串指定连接符拼接之 string.Join 的详细用法
  • Javascript常见数据结构和设计模式
  • 【ChatGPT】全面解析 ChatGPT:从起源到未来
  • html+css+js贪吃蛇游戏
  • 新手必学:掌握Excel中这些常用公式,轻松提升数据处理能力
  • 经济寒冬:竞品凶猛,你的产品如何求生?
  • 信号量——Linux并发之魂
  • 自动驾驶中的逆透视变换(Inverse Perspective Mapping,IPM)详解
  • Python地震波逆问题解构算法复杂信号分析
  • C语言 -- 深入理解指针(二)
  • HTTP协议详解
  • 一年时间业绩增长2倍,茅台保健酒业公司在川销售的“三板斧”
  • 土豆炒肉做法
  • VPS拨号服务器:独享的高效与安全
  • 网络安全设备——防火墙
  • Redis 管道技术
  • 使用vue3-treeselect问题
  • 每日直播分享车载知识:硬件在环、UDS诊断、OTA升级、TBOX测试、CANoe、ECU刷写、CAN一致性测试:物理层、数据链路层等
  • flex布局---子元素未设置高度,默认与父元素同高---侧轴方向的拉伸
  • 资源分享—2021版三调符号库
  • 解决selenium手动下载驱动问题
  • 使用fifo IP核,给fifo写数据,当检测到ALMOST_EMPTY时,为什么不能立即赋值
  • 【Python123题库】#汽车迷 #编写函数输出自除数 #身份证号基本信息
  • 普通人怎么利用GPT赚钱之SEO优化内容
  • LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像
  • 景联文科技打造高质量图文推理问答数据集,赋能大语言模型提升推理能力
  • 用网络编程完成windows和linux跨平台之间的通信(服务器)
  • 力扣3148.矩阵中的最大得分
  • 解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决