【JavaEE精炼宝库】网络原理基础——UDP详解

news2025/1/23 14:59:35

文章目录

  • 一、应用层
  • 二、传输层
    • 2.1 端口号:
    • 2.2 UDP 协议:
      • 2.2.1 UDP 协议端格式:
      • 2.2.2 UDP 存在的问题:
    • 2.3 UDP 特点:
    • 2.4 基于 UDP 的应用层协议:

一、应用层

我们 Java 程序员在日常开发中,最经常与应用层打交道,在应用层一般是使用 HTTP 协议与自定义协议。

如何自定义协议?
答:

  1. 确定传输信息。
  2. 确定数据格式(xml、json、yml、protobuffer)。

二、传输层

负责数据能够从发送端传输接收端。

2.1 端口号:

端口号(Port)标识了一个主机上进行通信的不同的应用程序。
在这里插入图片描述

  • 端口号范围划分:

端口号是两个字节无符号整数(0 ~ 65535)。

  1. 0 ~ 1023 知名端口号: HTTP、FTP、SSH 等这些广为使用的应用层协议,他们的端口号都是固定的。
  2. 1024 ~ 65535 操作系统动态分配的端口号: 客户端程序的端口号,就是由操作系统从这个范围分配的。
  • 常见知名端口号(well-know port Number)了解即可:
  1. ssh 服务器,使用 22 端口。

  2. ftp 服务器,使用 21 端口。

  3. telnet 服务器,使用 23 端口。

  4. http 服务器,使用 80 端口。

  5. https 服务器,使用 443 端口。

我们自己写一个程序使用端口号时,要避开这些知名端口号。

  • 端口号的两个常见问题:
  1. 问题1:一个进程是否可以同时绑定多个端口号?
    答:可以。这个是非常可行的,而且在日常开发中经常使用到。举个栗子:一个服务器绑定两个端口,一个端口给普通用户使用,另一个端口给程序员 + 运营人员使用,以便进行日常维护,两个端口的功能可以是不一样的。

  2. 问题2:一个端口号是否可以同时被多个进程绑定?
    答:不能。好比“一山不容二虎,除非一公一母。”如果一个服务器是 TCP,一个是 UDP 此时,端口号即使在同一时刻重复了,是不影响的(一公一母),但是如果两个 TCP 或者两个 UDP,在同一时刻,使用同一个端口号,就会出现绑定失败的情况。

2.2 UDP 协议:

2.2.1 UDP 协议端格式:

下面 16 位指的是 16个bit 位。
在这里插入图片描述

  • 16 位 UDP 长度,表示整个数据报(UDP 首部 + UDP 数据)的最大长度。
  • 如果校验和出错,就会直接丢弃。
  • 各个术语在下面会做出详细介绍。

上面那张图由于排版问题,画的不是很好,下面我给出一张更加清晰的图:
在这里插入图片描述
一个 UDP 数据报由报头和载荷构成。

  • 源端口号:发送端的端口号。
  • 目的端口号:接收方的端口号。
  • UDP 长度:整个 UDP 数据报占多少个字节。
  • UDP 校验和(UDP Checksum):UDP 校验和是用于检测 UDP 数据报在传输过程中是否发生错误的一种机制。 举个栗子:如果发送方计算得到的校验和为 0x1234,接收方接收到数据后按照相同的算法计算校验和,在传输的过程中可能会出现 bit 翻转的情况,如果结果也为 0x1234,则说明数据在传输过程中没有发生错误。

UDP 中使用 CRC 算法来作为计算校验和的算法。 CRC 是一个简单粗暴的计算校验和的方式,循环冗余校验(校验和不是为了得到确切的值,只是为了判断算出来得值是否一样)。例如:设定 2 个字节得变量,把数据得每个字节取出来往这个变量上进行累加。如果结果溢出超过 2 个字节,溢出部分舍弃。

2.2.2 UDP 存在的问题:

UDP 长度描述了整个 UDP 数据报占的字节数,通过 UDP 长度,就能知道载荷一共是多少字节(全部的字节数 - 报头字节数)。

无符号 2 字节数的范围为:0 ~ 65535(1024 * 64)。也就是说一个 UDP 数据报最长就是 64 KB,不能再长了。对于现在来说有点短,随便拿手机拍个照片,10 MB左右,所以使用 UDP 开发程序会有很大的制约。最好的解决方法是将 UDP 改写成 TCP,TCP 对于应用层数据包的大小是无限制的。

既然 UDP 有上面的长度限制,那么为什么不对 UDP 进行升级呢?

答:这里的升级难点不在于技术,而是 zz 问题,升级到更高的字节数,成本很高。单个主机升级是没有意义的,需要对端一起升级(不然会出现解析错误的情况),由于 UDP 是系统内核实现的,如果全世界都是使用同一个操作系统,升级的成本还会小一点,但是市面上存在各种各样的操作系统,很难统一升级。

2.3 UDP 特点:

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

其特点有:

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

2.4 基于 UDP 的应用层协议:

  • NFS:网络文件系统。

  • TFTP:简单文件传输协议。

  • DHCP:动态主机配置协议。

  • BOOTP:启动协议(用于无盘设备启动)。

  • DNS:域名解析协议。

当然,也包括我们自己写 UDP 程序时自定义的应用层协议。

结语:
其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

在这里插入图片描述

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

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

相关文章

2024年大模型LLM还有哪些可研究细分领域?

Pretraining部分 Data Collection 整个pretrain阶段最重要的部分就是数据收集,尽管OpenAI已经给我们了一套标准化的数据收集流程并也有很多开源机构给予了预训练数据(例如common crawl [1],starcoder等网络数据 [2])&#xff0c…

清华大学终于把Python整理成了《漫画书》

前言 随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?小编这里整理了一套python编程零基础自学教程,清华大佬196小时讲完的,全程干货无废…

如何将avi格式转换为flv格式呢?

FLV是随着FLASH MX的推出发展而来的一种视频格式,目前被众多新一代视频分享网站所采用,是目前增长较快,也较为广泛的视频传播格式。 FLV格式可以轻松导入FLASH播放器中,另外它还能起到保护版权的作用,非常受欢迎。那么…

uniapp实现可视化图表(轻量、内存小)

图表官网:uCharts官网 - 秋云uCharts跨平台图表库 用原生组件: 选择自己需要的模块,以小程序为例: 把min.js下载下来 把min.js放到小程序代码中,引用即可,使用案例看官网, 在官网中选择想要的…

Embedding技术之Graph Embedding

Graph Embedding用于处理互联网中的图数据——社交网络、知识图谱、行为关系类型图数据。 1、DeepWalk——基于随机游走的Graph Embedding DeepWalk 是一种用于学习图(网络)中节点的低维向量表示(即节点嵌入)的算法。 DeepWalk …

51单片机-第八节-蜂鸣器

一、什么是蜂鸣器? 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可…

供应商较多的汽车制造业如何选择供应商协同平台?

汽车制造业的供应商种类繁多,根据供应链的不同环节和产品特性,可以大致分为以下几类。 按供应链等级分包括: 一级供应商通常具有较高的技术水平和生产能力,能够满足汽车厂商对零部件的高品质、高性能和高可靠性的要求。 二级供应…

正点原子imx6ull-mini-Linux驱动之Linux CAN 驱动实验

CAN 是目前应用非常广泛的现场总线之一,主要应用于汽车电子和工业领域,尤其是汽车 领域,汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。CAN 总线目前是自动化领 域发展的热点技术之一,由于其高可靠性,CAN 总线…

SpringBoot整合MyBatis-Plus实现多数据源数据迁移

SpringBoot整合MyBatis-Plus实现多数据源数据迁移(达梦数据库、mysql) 1. 相关pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version> </dependency&g…

【python安装离线包】

python安装离线包 一、离线包下载1.1 离线包单个下载1.2 离线包批量下载 二、离线包安装2.1 离线包单个安装2.2 离线包批量安装 一、离线包下载 目的&#xff1a;我们在工作中可能会遇到内网环境、离线环境、或者python的源无法下载三方库的情况&#xff0c;此时就得需要我们自…

Can GPT-3 Perform Statutory Reasoning?

文章目录 题目摘要相关工作SARAGPT-3 对美国法典的了解GPT-3 在对合成法规进行简单推理时遇到困难结论 题目 GPT-3 可以进行法定推理吗&#xff1f; 论文地址&#xff1a;https://arxiv.org/abs/2302.06100 摘要 法定推理是用事实和法规进行推理的任务&#xff0c;法规是立法机…

音频应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

音频应用编程 Linux 下 ALSA 框架概述 ALSA 简介&#xff1a;ALSA 是 Advanced Linux Sound Architecture&#xff08;高级的 Linux 声音体系&#xff09;的缩写 地位与功能&#xff1a;现已成为 Linux 下的主流音频体系架构&#xff0c;提供音频和 MIDI 支持&#xff0c;替代…

无线网络工具Aircrack-ng使用大全(非常详细)零基础入门到精通,收藏这一篇就够了

Aircrack-ng是一个与802.11标准的无线网络分析有关的安全软件&#xff0c;主要功能有 网络侦测 。可以捕获无线网络数据包&#xff0c;并对其进行分析和处理&#xff0c;以便获取无线网络的关键信息和加密密钥。 数据包嗅探 。可以嗅探802.11a、802.11b、802.11g的数据。 WEP和…

腾讯云AI代码助手:智能编程的未来之窗

腾讯云AI代码助手&#xff1a;智能编程的未来之窗 智能编程的未来之窗 引言配置环境介绍腾讯云 AI 代码助手使用实例生成文档功能解释代码功能生成测试功能精准修复错误功能技术对话功能 智能编程获得的帮助与提升对腾讯云AI代码助手的建议结语 引言 今天七七给大家带来一款非常…

养老院人员定位系统组成部分包括哪些?

现代养老服务需要更高的精细化支持&#xff0c;养老院人员定位系统是一项非常重要的技术应用&#xff0c;该系统通常包括硬件设备、软件平台以及数据存储和处理模块等组成部分。 首先&#xff0c;养老院人员定位系统的核心就是硬件设备&#xff0c;一般由定位终端设备、传感器、…

逻辑数据平台,多源异构实时数据高效同步的新途径

多源异构数据库的实时数据同步&#xff0c;需要将不同来源、格式和结构的数据进行整合、清洗、转换、合并、分析&#xff0c;形成统一的、一致的视图。其中&#xff0c;数据清洗是将数据中的噪声、异常值、不一致和重复的数据去除&#xff0c;提高数据质量&#xff1b;数据整合…

正则表达式介绍与基础

正则表达式介绍与基础 首先是正则表达式的特殊符号&#xff1a; [:alnum:]代表英文大小写字母及数字 [:alpha:]代表英文大小写字母 [:blank:]代表空格和 tab 键 [:cntrl:]键盘上的控制按键&#xff0c;如 CR,LF,TAB,DEL [:digit:]代表数字 [:graph:]代表空白字符以外的其…

SpringBoot MybatisPlus selectOne的坑

目录 一、问题 二、问题解决 三、其他方法 一、问题 selectOne在查询多条数据时会报错&#xff0c;查询语句并不会加 limit 1。 One record is expected, but the query result is multiple records。 二、问题解决 在QueryWrapper上添加如下&#xff1a; QueryWrapper&…

windows11/10 如何快速的安装Halcon21.05 (包括深度学习部分)(已解决)

声明&#xff1a;Halcon21.05 是网页安装&#xff0c;不是安装包安装&#xff0c;虽然前期需要下载它的安装包。 现在开始&#xff0c;先下载安装包 halcon21版本下载连接地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/142qWteiIgHm6QuZVOkX_pw?pwd2tw5 提取码&…

ATA-7020高压放大器在铁电材料测试中的应用研究

铁电材料因其在电场作用下发生自发电极化的独特性质而在材料科学中备受关注。对铁电材料进行测试和研究是理解其性能和应用潜力的关键步骤之一。高压放大器在铁电测试中的应用发挥着至关重要的作用&#xff0c;为科学家们提供了精确控制和测量电场的手段。本文将深入介绍高压放…