【Java EE】网络原理——UDP

目录

1.应用层

2.传输层

2.1端口号

2.1.1端口号的范围划分

2.1.2一个端口号可以被多个进程绑定吗?

2.1.3一个进程可以绑定多个端口号吗?

3.UDP协议

3.1UDP的格式

3.1.1 UDP的源端口号

3.1.2 UDP的目的端口号

3.1.3 UDP长度

3.1.4UDP校验和

3.2UDP的特点

3.3UDP使用注意事项

3.4基于UDP的应用层协议


1.应用层

如何定义协议(1)确定传输信息(2)确定数据格式(xml,json,yml,protobutfer)。

现成的协议:典型代表HTTP协议。

2.传输层

socket api 都是传输层协议提供的。(操作系统内核实现)

负责数据能够从发送端到接受端。

2.1端口号

端口号标识了一个主机上不同通信的不同的应用程序。

端口号的组成 :IP地址(确认主机)+端口号(主机上的应用程序)。IP地址在网络层上,端口号在传输层上。

端口号是两个字节表示的无符号整数。

扩展:

一个字节:有符号:-128~+127;无符号:0~255

两个字节:有符号:-32768~+32767;无符号:0~65535

四个字节:有符号:-21忆~+21忆;无符号:0~42忆9千万

2.1.1端口号的范围划分
  • 0~1023:知名端口号,HTTP,FTP,SSH等这些广为使用的应用层协议,他们的端口号是固定的。
  • 1024~65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范分配的。

扩展:

知名端口号

  • ssh服务器,使用22端口号
  • ftp服务器,使用21端口号
  • telnet服务器,使用23端口号
  • http服务器,使用80端口号
  • https服务器,使用433端口号
2.1.2一个端口号可以被多个进程绑定吗?

同一个机器上,同一时刻内,端口号不能重复被绑定。

那么。如何确定在当前机器上某个端口号是否被其他进程使用呢?

使用netstart命令

netstart - ano | finder 9090
//netstart封装好api的一个可执行程序。
//Finder筛选查找,查询出当前主机中是否有9090端口号
// | 管道,报多个命令组合起来,把第一个命令的输出当做第二个命令的输入。

两个进程不能同时绑定一个端口号:

如果一个是TCP,一个是UDP,此时重复并不影响。

如果是两个TCP或者两个UDP,都会绑定失败。

2.1.3一个进程可以绑定多个端口号吗?

一个进程同一时刻可以绑定多个端口号。

一个进程可以使用多个Sever Socket绑定多个端口号。

管理端口:程序员+运行人员。

业务端口:普通用户

调试端口:程序员

3.UDP协议

3.1UDP的格式

UDP数据报=UDP报头+UDP载荷

3.1.1 UDP的源端口号

源端口号:这个数据是从哪里来。

3.1.2 UDP的目的端口号

目的端口号:这个数据传输到哪里。

3.1.3 UDP长度

描述了整个UDP数据报战了多少个字节,最大长度为64kb。

3.1.4UDP校验和

目的:(1)能够发现出错。(2)能发现哪一位出错,并进行纠正。

本质上,是引入额外的冗余信息,验证原有信息。

CRC算法作为校验和

md5的特点:

  • 定长:无论输入多长,得出的结果是固定长度。
  • 分散:数的内容改变一点点,最终结果差异都很大。
  • 不可逆:可以通过原数据计算出md5,但是知到md5不能计算出原数据。

md5破解只是查找。

还有sha1和md5差不多。

3.2UDP的特点

UDP传输具有的特点:

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

UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据最大长度是64kb(包含首部)

如果我们需要传输的数据超过64kb,就需要在应用层手动的分包,多次发送,并在接收端手动拼装。

3.4基于UDP的应用层协议
  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

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

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

相关文章

springboot项目中前端页面无法加载怎么办

在springboot前后端分离的项目中,经常会出现前端页面无法加载的情况(比如:前端页面为空白页,或者出现404),该怎么办??? 一个简单有效的方法:: 第…

24 | MySQL是怎么保证主备一致的?

MySQL 主备的基本原理 内部流程 备库 B 跟主库 A 之间维持了一个长连接。主库 A 内部有一个线程,专门用于服务备库 B 的这个长连接。一个事务日志同步的完整过程是这样的: 在备库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及要从哪个位置开始…

钉钉群定时发送消息1.0软件【附源码】

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 有时候需要在钉钉群里提醒一些消息。要通知的群成员又不方便用定时钉的功能,所以写了这么一个每日定时推送群消息的工具。 易语言程序,附上源码与模块&#x…

【记录42】centos 7.6安装nginx教程详细教程

环境:腾讯云centos7.6 需求:安装nginx-1.24.0 1. 切入home文件 cd home 2. 创建nginx文件 mkdir nginx 3. 切入nginx文件 cd nginx 4. 下载nginx安装包 wget https://nginx.org/download/nginx-1.24.0.tar.gz 5. 解压安装包 tar -zxvf nginx-1.24.0.…

ESD静电问题 | 选型TVS单向还是双向?

【转自微信公众号:Amazing晶炎科技】

Mysql进阶-索引篇

Mysql进阶 存储引擎前言特点对比 索引介绍常见的索引结构索引分类索引语法sql分析索引使用原则索引失效的几种情况sql提示覆盖索引前缀索引索引设计原则 存储引擎 前言 Mysql的体系结构: 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接…

C语言例题38、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,最后留下来的是原来第几号人员?

#include <stdio.h> #define MAX_CALLER 3void main() {int j 0;int p_total;//人数int p_caller 0;//每3人循环计数&#xff1a;1,2,3int p_exit 0; //退出游戏的人数int people[255] {0};//参与游戏人员名单printf("请输入参与游戏人数&#xff1a;");s…

CCF-Csp算法能力认证,202206-1归一化处理(C++)含解析

前言 推荐书目&#xff0c;在这里推荐那一本《算法笔记》&#xff08;胡明&#xff09;&#xff0c;需要PDF的话&#xff0c;链接如下 「链接&#xff1a;https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码&#xff1a;6vdq”复制这段内容后打开手机迅雷…

Macbook pnpm 安装 node-sass 报错(node-gyp)

换了 Macbook M3 Pro 后安装项目依赖时报错&#xff0c;提示 node-sass 安装出错。 &#xff08;此外&#xff0c;ValueError: invalid mode: rU while trying to load binding.gyp 也是类似原因。只需要确保 node-gyp 运行条件就可以&#xff09; 原因是 node-gyp 运行环境缺…

手写SpringBoot核心功能流程

本文通过手写模拟实现一个简易版的Spring Boot 程序&#xff0c;让大家能以非常简单的方式知道Spring Boot大概的工作流程。 工程依赖 创建maven工程&#xff0c;并创建两个module springboot模块&#xff1a;手写模拟springboot框架的源码实现 test模块&#xff1a;业务系统…

提升工作效率,用ONLYOFFICE打造高效团队协作环境

作为一名深耕技术领域已有六七年的开发者&#xff0c;同时又是断断续续进行技术创作将近六年的一个小小作者&#xff0c;我在工作和日常生活中&#xff0c;使用过各色各样的软件。 而在最近几年&#xff0c;一款名为ONLYOFFICE的开源办公套件逐渐走进并融入我的工作与生活&…

使用Vue连接Mqtt实现主题的订阅及消息发布

效果如下&#xff1a; 直接贴代码&#xff0c;本地创建一个html文件将以下内容贴入即可 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

为什么职场关系越来越冷漠?

不知道从什么时候开始&#xff0c;我们的职场关系变得越来越冷漠了。 早上上班打卡的时候&#xff0c;一个个都低着头&#xff0c;眼神紧紧盯着手机&#xff0c;生怕错过什么重要的信息&#xff1b; 下班后大家一哄而散&#xff0c;各自抱着手机“享受”生活&#xff0c;谁也…

如何添加、编辑、调整WordPress菜单

我们最近在使用WordPress建站建设公司网站。我们是使用的hostease的主机产品建设的WordPress网站。在建设网站使用遇到了一些WordPress菜单使用方面的问题。好在hostease提供了不少帮助。 下面把WordPress菜单使用心得分享一下。 本文将详细介绍WordPress菜单的各种功能&#x…

Total Store Orderand(TSO) the x86 MemoryModel

一种广泛实现的内存一致性模型是总store顺序 (total store order, TSO)。 TSO 最早由 SPARC 引入&#xff0c;更重要的是&#xff0c;它似乎与广泛使用的 x86 架构的内存一致性模型相匹配。RISC-V 还支持 TSO 扩展 RVTSO&#xff0c;部分是为了帮助移植最初为 x86 或 SPARC 架…

1-3ARM_GD32点亮LED灯

简介&#xff1a; 最多可支持 112 个通用 I/O 引脚(GPIO)&#xff0c;分别为 PA0 ~ PA15&#xff0c;PB0 ~ PB15&#xff0c;PC0 ~ PC15&#xff0c;PD0 ~ PD15&#xff0c;PE0 ~ PE15&#xff0c;PF0 ~ PF15 和 PG0 ~ PG15&#xff0c;各片上设备用其来实现逻辑输入/输出功能。…

使用DBeaver连接postgreSql提示缺少驱动

重新安装电脑之后用dbeaver链接数据库的时候&#xff0c;链接PG库一直提示缺少驱动&#xff0c;当选择下载驱动的时候又非常非常慢经常失败&#xff0c;尝试了一下更改源然后下载库驱动就非常快了&#xff0c;当然也包括dbeaver的自动更新。 方法&#xff1a;点击菜单栏【窗口…

霸榜!近期不容错过的3个AI开源项目,来了

在人工智能领域的迅速发展下&#xff0c;各种AI开源项目如雨后春笋般涌现&#xff0c;今天就来为大家介绍近期三个热门的AI开源项目&#xff0c;它们不仅技术前沿&#xff0c;而且非常实用&#xff0c;对于技术爱好者和业界专家来说&#xff0c;绝对不容错过。 一键创作漫画和视…

基于无监督学习算法的滑坡易发性评价的实施(k聚类、谱聚类、Hier聚类)

基于无监督学习算法的滑坡易发性评价的实施 1. k均值聚类2. 谱聚类3. Hier聚类4. 基于上述聚类方法的易发性实施本研究中的数据集和代码可从以下链接下载: 数据集实施代码1. k均值聚类 K-Means 聚类是一种矢量量化方法,最初来自信号处理,旨在将 N 个观测值划分为 K 个聚类,…

生信分析进阶2 - 利用GC含量的Loess回归矫正reads数量

在NGS数据比对后&#xff0c;需要矫正GC偏好引起的reads数量误差可用loess回归算法&#xff0c;使用R语言对封装的loess算法实现。 在NIPT中&#xff0c;GC矫正对检测结果准确性非常重要&#xff0c;具体研究参考以下文章。 Noninvasive Prenatal Diagnosis of Fetal Trisomy…