【Java EE】网络原理——UDP

news2025/1/11 8:39:10

目录

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:域名解析协议

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

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

相关文章

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托,洗鞋工厂为中心,利用互联网+社区服务商模式,实现了新时代下的家庭洗护服务, 将客户﹣﹣社区服务商&#xfe63…

为什么说TailwindCSS是2024 年前端最优的 CSS 框架?

如果有一本圣经,大家都按照圣经的标准写网页,那世界将更加的标准化和美好。这本圣经就是TailwindCSS。 什么是 Tailwind CSS? Tailwind CSS 是一个流行的 CSS 框架,旨在帮助开发者快速构建现代化的、响应式的 Web 界面。与其他 …

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日,一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌,苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前,苏州金龙海格客车在塞尔维亚保有量近200台,是在塞尔维亚保有量最大的中国客车…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 2.pom.xml文件中引入需要的maven <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&g…

PyQt5 解决界面无响应方案

文章目录 前言版本案例解决方案QThreadQTimer 局部变量创建异步线程导致 UI 未响应如果 QTimer 不使用 self.time 写法 个人简介 前言 在PyQt5中&#xff0c;GUI线程通常指的是Qt的主事件循环线程&#xff0c;也称为主线程。主线程负责处理GUI事件、更新UI界面等任务。在PyQt5…

学习CSS3动画教程:手把手教你绘制跑跑卡丁车

学习之前&#xff0c;请先听一段音乐&#xff1a;等登&#xff0c;等登&#xff0c;等登等登等登&#xff01;没错&#xff0c;这就是我们当年玩的跑跑卡丁车的背景音乐&#xff0c;虽然后来有了QQ飞车&#xff0c;但还是更喜欢跑跑卡丁车&#xff0c;从最初的基础板车&#xf…

js逆向,参数加密js混淆

关键词 JS 混淆、源码乱码、参数动态加密 逆向目标 题目1&#xff1a;抓取所有&#xff08;5页&#xff09;机票的价格&#xff0c;并计算所有机票价格的平均值&#xff0c;填入答案。 目标网址&#xff1a;https://match.yuanrenxue.cn/match/1目标接口&#xff1a;https://ma…

KVM:无法检查 QEMU 二进制文件 /usr/bin/qemu-kvm: 没有那个文件或目录

报错信息&#xff1a; 解决方法&#xff1a; 将qemu的安装路径添加到系统的环境变量中&#xff0c;以便于系统可以正确的识别qemu的位置 在此之前可以先查找一下安装的路径&#xff1a; [rootlocalhost ~]# sudo find / -name qemu-system-x86_64 /usr/share/bash-completi…

大数据面试题 —— 数据仓库

目录 数据仓库是什么数据仓库和数据库的区别为什么要对数据仓库分层数仓分层&#xff0c;以及每一层的作用维度建模的三种模型范式建模、维度建模维度建模过程&#xff0c;如何确定这些维度 ***维度模型的各个维度之间是怎么聚合的聚合过程的数据倾斜怎么解决&#xff1f;数据质…

2024年最新【SpringBoot2】开发实用篇-测试_springboot2 test(1),2024年最新2024春招BAT面试真题详解

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

AI论文速读 | 2024[IJCAI]时空解耦掩码预训练的时空预测

题目&#xff1a; Spatial-Temporal-Decoupled Masked Pre-training for Spatiotemporal Forecasting 作者&#xff1a;Haotian Gao ; Renhe Jiang&#xff08;姜仁和&#xff09; ; Zheng Dong ; Jinliang Deng (邓锦亮); Yuxin Ma ; Xuan Song&#xff08;宋轩&#xff09; …

Python软件安装使用

一、搭建 Python 环境 需要安装的环境主要是两个部分 : 运行环境: Python 开发环境: PyCharm 具体详细安装见此篇博客&#xff1a;Python安装教程 二、创建一个项目 a) 创建一个项目 b) 选择项目所在的位置 , 并选择使用的 Python 解释器 . 注意 , 一般情况下 , PyCh…

活动回顾 |观测云 AI Agent 探索实践

亚马逊云科技“构建全球化软件和互联网新生态——ISV 行业”论坛上&#xff0c;观测云产品架构师刘锐发表了题为“AI Agent 可观测性探索与实践”的主题演讲&#xff0c;不仅展示了观测云在人工智能领域的前沿技术&#xff0c;更强调了在日益复杂的系统环境中&#xff0c;实现有…

软件设计师笔记(一)-基础要点

本文内容来自笔者学习zst 留下的笔记&#xff0c;虽然有点乱&#xff0c;但是哥已经排版过一次&#xff0c;将就着看吧&#xff0c;查缺补漏&#xff0c;希望大家都能通过&#xff0c;记得加上免费的关注&#xff01;谢谢&#xff01;csdn贴图真的很废人&#xff01; 目录 一、…

复杂链表的复制

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/ 代码实现&#xff1a; /* // Defini…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Slider的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 输入类控件 | Slider的使用及说明 文章编号&#xff1a;…

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

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

数据防泄密

随着各行各业业务数据信息化发展&#xff0c;各类产品研发及设计等行业&#xff0c;都有关乎自身发展的核心数据&#xff0c;包括业务数据、代码数据、 机密文档、用户数据等敏感信息&#xff0c;这些信息数据有以下共性&#xff1a; — 属于核心机密资料&#xff0c;万一泄密…

C语言—操作符详解(操作符、进制转换、原码反码补码、结构体)

1.操作符分类 算术操作符&#xff1a; 、- 、 * 、 / 、%移位操作符&#xff1a;<< >> //移动的是二进制位位操作符&#xff1a;& | ^ //使用二进制位进行计算赋值操作符&#…

Linux系统运维:修改docker容器与宿主机之间的端口映射,解决端口占用问题

目录 一、问题 二、docker端口映射 &#xff08;一&#xff09;docker端口映射定义 1、相关概念&#xff1a; 2、默认情况下&#xff0c;Docker容器会有一个端口映射&#xff1a; 3、端口范围&#xff1a; &#xff08;二&#xff09;配置相关 1、指定端口映射 2、随机…