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

文章目录

  • 一、应用层
  • 二、传输层
    • 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.rhkb.cn/news/402863.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【排序篇】插入排序与选择排序

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1. 排序的概念及其应用1.1 排序的概念1.2 排序的应用场景1.3 常见的排序算法 2.常…

Vue3+vite+ts 项目使用mockjs

1、安装mockjs npm i mockjs 2、安装vite-plugin-mock npm i vite-plugin-mock -D 3、安装axios npm i axios 4.在src目录下创建mock文件夹,在文件夹内创建login.ts等文件,并在文件夹内放置以下内容(注:URL要和真实请求地址保持一致&am…

走向绿色:能源新选择,未来更美好

当前,全球范围内可再生能源正经历着从辅助能源向核心能源的深刻转型,绿色能源日益渗透至居住、出行、日常应用等多个领域,深刻影响着我们的生活方式,使我们能够更加充分地体验清洁能源所带来的优质生活。 一、绿色能源与“住” …

搭建知识中台:让企业告别低效率

在当今这个信息爆炸、知识更新日新月异的时代,企业面临着前所未有的挑战与机遇。如何在浩瀚的信息海洋中高效筛选、整合并利用知识资源,成为决定企业竞争力的关键因素之一。因此,搭建知识中台,构建企业知识管理的核心枢纽&#xf…

day 28 HTTP协议

一、TCP粘包问题 TCP发送数据是连续的,两次发送的数据可能粘连成一包被接收到 解决粘包问题方法: 1.接收指定长度:(不稳定) 2.睡眠:(效率低) 让每次…

19010 最小的特殊数字

### 详细分析 1. 读取输入的N和K,以及N个数字。 2. 使用回溯算法生成所有可能的数字组合。 3. 对于每个组合,检查是否满足没有前置0且能被K整除。 4. 记录满足条件的最小数。 5. 输出满足条件的最小数,如果没有满足条件的数输出-1。 ### 代码…

java流程控制之分支结构(附有案例说明)

顺序结构:从上到下依次执行 前向引用 分支结构:根据条件选择的执行某段代码 1.if -else 结构 分支结构 if-else 1、格式1 if(条件表达式){ 语句块 } 2、格式2 if(条件表达式){ 语句块&#xff1b…

鸡爪全自动包冰衣设备:

一、快速冷冻,效率高 速冻挂冰机是一种能够快速降温并迅速冷冻食品的冷藏设备。其采用强制循环风冷技术,可以将食品迅速降温到所需温度,使食品更加新鲜。相比于传统的冷冻方式,速冻挂冰机的速度更快,效率更高&#xf…

2021年上半年网络工程师考试上午真题

2021年上半年网络工程师考试上午真题 网络工程师历年真题含答案与解析 第 1 题 以下关于RISC和CISC计算机的叙述中,正确的是( )。 (A) RISC不采用流水线技术,CISC采用流水线技术(B) RISC使用复杂的指令,CISC使用简…

超级外链工具,可发9600条优质外链

超级外链工具,是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链,大大提高外链发布工作效率,是广大草根站长们必备的站长工具。 外链工具只是网站推广的辅助工具,一般适用于短时间内无法建设大量外链…

欧拉远程桌面 安装tigervnc

注意:安装远程tigevnc前提必须已经安装桌面环境,以下为ukui桌面环境,dde稍有区别; 1、关闭selinux 注意:selinux为安全措施也可以加入对应规则 setenforce 0 sed -i s/^SELINUXenforcing.*/SELINUXdisabled/ /etc/sel…

坚鹏讲人才第12期:引领数字化未来—数字化人才与导师共赢之路

坚鹏讲人才第12期:引领数字化未来—数字化人才与导师共赢之路 ——抢占名额先机 成为坚鹏弟子 加速数字化转型 数字化浪潮汹涌而至,你是否感到迷茫、困惑、焦虑?想不想一脚油门冲进未来,和我一同探寻数字化人才的奥秘&#xf…

基于STM32开发的智能温室控制系统

基于STM32开发的智能温室控制系统 目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化传感器数据采集控制与状态指示Wi-Fi通信与远程监控应用场景 农业温室智能控制室内植物养护管理常见问题及解决方案 常见问题解决方案结论 1. 引…

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication,网页即时通信)于2011年6月1日开源,并被纳入万维网联盟的W3C推荐标准,它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台:可以在Web,Android、…

C# VisionPro 海康相机SDK源代码

运行界面如下所时: 实时图像效果如下: Winform窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Fo…

LabVIEW光纤管道泄漏检测系统

光纤管道泄漏定位系统利用干涉型光纤传感器和数据采集卡进行信号获取与处理,实现了高灵敏度的泄漏点定位。通过软件对泄漏信号进行实时降噪处理和数据库管理,提高了系统的自动化和智能化水平。 项目背景: 长输管道在石油、天然气等行业中发挥…

XSS和DOM破坏案例

XSS案例 环境地址&#xff1a;XSS Game - Learning XSS Made Simple! | Created by PwnFunction 1.Ma Spaghet! 源码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParam…

Python爬虫——某网站的视频数据

一、选题背景 1.背景 随着大数据时代的来临&#xff0c;网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的&#xff0c;如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题&#xff0c;而爬虫技术就是为了解决这些问题而生的。对于身为数据…

【业务场景实战】你知道布隆过滤器怎么用吗?

布隆过滤器想必大家都听过&#xff0c;背过Redis面试题的兄弟应该都知道&#xff0c;布隆过滤器是解决缓存穿透问题的一种方法。但可能很少用过 布隆过滤器主要是为了解决海量数据的存在性问题。对于海量数据中判定某个数据是否存在且容忍轻微误差这一场景&#xff08;比如缓存…

03 网络编程 TCP传输控制协议

目录 1、TCP基本特征 2、TCP通信流程基本原理 &#xff08;1&#xff09;基本原理 &#xff08;2&#xff09;TCP通信代码实现 &#xff08;3&#xff09;核心API解析 1&#xff09;地址绑定--bind 2)设置监听-listen 3)等待连接请求-accept-产生一个已连接套接字 4&a…