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

传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区

目录

1. 再识的端口号

1.1 端口号范围划分

1.2 知名端口号(Well-Know Port Number)

2. UDP 协议

2.1 UDP 协议格式

2.2 UDP 的特点

2.3 UDP 的缓冲区

2.4 一些基于 UDP 的应用层协议


        传输层(Transport Layer)是计算机网络体系结构(OSI 七层模型)中的第四层,位于网络层(IP 层)之上,应用层之下。它的核心功能是为端到端(End-to-End)的通信提供可靠或高效的数据传输服务,确保应用程序之间的数据正确、有序的交互。

1. 再识的端口号

        端口号(port)标识了一个主机上进行网络通信的不同的应用程序。用于当主机接收到数据时,给数据传输到哪个进程提供指向。

1.1 端口号范围划分

        0-1023:知名端口号,HTTP,FTP,SSH 等这些广为使用的应用层协议,它们的端口号都是固定的。

        1024-65535:操作系统动态分配的端口号。客户端程序的端口号就是由操作系统从这个范围分配的。 

1.2 知名端口号(Well-Know Port Number)

        ssh 服务器:使用 22 端口。

        ftp 服务器:使用 21 端口。

        telnet 服务器:使用 23 端口。

        http 服务器:使用 80 端口。

        https 服务器:使用 443 端口。

2. UDP 协议

2.1 UDP 协议格式

        如上图,一整个数据块称为一个 UDP 报文,也叫做数据报。UDP 协议使用固定 8 个字节表示报头,其中前 4 个字节表示该报文的源端口号和目的端口号。

        16 位 UDP 长度:表示整个数据报(UDP 报头 + 数据)的长度。由于该字段为 16 位无符号整数,理论范围为 0-65535 字节。但受限于底层网络层的最大传输单元(MTU,1500 字节),实际长度一般远小于该上线。一个数据报的最大长度(理论上)为 65535 字节 = 64kb,如果需要传输的数据超过 64kb,就需要在应用层手动的分包多次发送,并在接收端手动拼装。

        16 位 UDP 校验和:用于检测 UDP 数据报再传输过程中是否发生比特错误(如因电磁干扰导致的位翻转)。它是一个可选字段(不使用时需将该字段置为 0),但是实际应用中通常会启用。校验范围包括报头、数据部分,甚至包含一个伪首部,这里对该字段不做详细介绍。

2.2 UDP 的特点

        UDP 传输的过程类似于寄信。是一个一个数据报进行传输的。

        (1)无连接:知道对端的 IP 和端口号就直接进行传输,不需要建立连接。

        (2)不可靠:没有确认机制和重传机制,所以数据是否传输到对端是不确定的,数据丢失后是不会进行重传的。如果因为网络故障数据报无法发到对方,UDP 协议也不会给应用层返回任何错误信息。

        (3)面向数据报:UDP 传输时是以一个一个数据报为单位进行传输的,该传输方式不能够灵活的控制读写数据的次数和数量。换句话说,如果网络没有问题的情况下,发送方向套接字中写入几次,接收方就要从套接字中读取几次。并且应用层交给 UDP 多长的报文,UDP 原样发送,既不会拆分也不会合并。

2.3 UDP 的缓冲区

        UDP 协议没有真正意义上的发送缓冲区。调用 sendto 函数会直接将数据交给内核,由内核将数据传给网络层协议。

        UDP 具有接收缓冲区。但是这个接收缓冲区不能保证收到的 UDP 数据报的顺序和发送时的顺序一致;如果接收缓冲区满了,再到达的数据报就会被丢弃。

        UDP 也是全双工的,可以同一时刻进行读写。

2.4 一些基于 UDP 的应用层协议

        域名系统(DNS):用于将域名转换为 IP 地址,是互联网中非常重要的协议。DNS 通常使用 UDP 协议进行数据传输,因为域名查询的数据包通常较小,且需要快速响应,UDP 协议可以提供更快的传输速度,无需 TCP 协议那样复杂的连接管理机制。DNS 使用 53 号端口。

        网络时间协议(NTP):用于同步网络中各个设备的时间。NTP 要求能够快速地获取和发送时间信息,虽然 UDP 不提供可靠传输,但 NTP 可以通过多次交互来保证时间同步的准确性,所以通常基于 UDP 协议运行,使用 123 号端口。

        动态主机配置协议(DHCP):主要用于动态分配 IP 地址、子网掩码、网关等网络参数。DHCP 数据包一般较小,且希望能快速完成配置,UDP 能满足这些需求,可提供更快的数据传输速度和更少的网络开销。

        简单文件传输协议(TFTP):是一种简单的文件传输协议,用于在本地网络内传输小文件,如固件、配置文件等。它对数据传输的速度要求较高,但对数据可靠性和安全性的要求相对较低,适合使用 UDP 协议。TFTP 使用 69 号端口。

相关文章:

传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区

目录 1. 再识的端口号 1.1 端口号范围划分 1.2 知名端口号(Well-Know Port Number) 2. UDP 协议 2.1 UDP 协议格式 2.2 UDP 的特点 2.3 UDP 的缓冲区 2.4 一些基于 UDP 的应用层协议 传输层(Transport Layer)是计算机网络…...

Python try-except-else 语句详解

try-except-else 是 Python 中用于异常处理的重要结构,它允许你优雅地处理可能出现的错误,并在没有错误发生时执行特定代码。下面我将详细解释这个结构及其用法。 基本语法 try:# 可能引发异常的代码块 except [ExceptionType]:# 异常处理代码块 else:…...

ApacheSuperset CVE-2023-27524

前言:CVE-2023-27524 是一种远程代码执行漏洞,攻击者通过该漏洞可在受影响系统上执行任意代码,从而获得未授权访问权 CVE-2023-27524 GitHubhttps://github.com/horizon3ai/CVE-2023-27524 任务一 代理 | 拉取镜像 vi /etc/proxychains4.conf //最下面修…...

Windows Server部署Vue3+Spring Boot项目

在Windows Server 上部署Vue3 Spring Boot前后端分离项目的详细步骤如下: 一、环境准备 安装JDK 17 下载JDK MSI安装包(如Oracle JDK 或 OpenJDK) 双击安装,配置环境变量: JAVA_HOME:JDK安装路径&#xf…...

malloc 是如何分配内存的?——C 语言内存分配详解

文章目录 malloc是如何分配内存的?——C语言内存分配详解一、引言二、内存分配的基本概念1. 虚拟内存与物理内存2. 进程内存布局 三、malloc函数详解1. 函数原型与功能2. 关键特性 四、malloc的底层实现机制1. 内存分配器的角色2. 分配策略3. 内存碎片问题 五、glib…...

Opencl

**OpenCL(Open Computing Language)**是一种用于异构平台(包括CPU、GPU、FPGA、DSP等)上的并行计算框架和编程标准。它由Khronos Group制定,旨在提供一种跨平台、统一的编程接口,使开发者可以利用不同硬件设…...

如何在 HTML 中添加按钮

原文:如何在 HTML 中添加按钮 | w3cschool笔记 (请勿将文章标记为付费!!!!) 在网页开发中,按钮是用户界面中不可或缺的元素之一。无论是用于提交表单、触发动作还是导航&#xff0…...

【优秀三方库研读】quill 开源库中的命名空间为什么要用宏封装

将命名空间封装成宏的作用与优势 QUILL_BEGIN_NAMESPACE 和 QUILL_END_NAMESPACE 这种宏封装是 C++ 库开发中的常见技巧,主要解决以下问题并提供显著优势: 1. 解决核心问题:命名空间嵌套与版本控制 问题场景: 库需要支持多版本共存(如 quill::v1, quill::v2),但希望默认…...

AlphaFold3运行错误及解决方法(1)

1. chemical_component_sets.pickle 运行alphafold3遇到下面的问题: FileNotFoundError: [Errno 2] No such file or directory: /xxx/xxx/anaconda3/envs/alphafold3/lib/python3.11/site-packages/alphafold3/constants/converters/chemical_component_sets.pickle搜索你的系…...

Linux--进程的程序替换

问题导入: 前面我们知道了,fork之后,子进程会继承父进程的代码和“数据”(写实拷贝)。 那么如果我们需要子进程完全去完成一个自己的程序怎么办呢? 进程的程序替换来完成这个功能! 1.替换原理…...

调教 DeepSeek - 输出精致的 HTML MARKDOWN

【序言】 不知道是不是我闲的蛋疼,对百度AI 和 DeepSeek 的回答都不太满意。 DeepSeek 回答句子的引用链接,始终无法准确定位。有时链接只是一个域名,有时它给的链接是搜索串如: baidu.com/?q"搜索内容"。 百度AI 回答句子的引用…...

【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理

基于 MSYS2(MINGW64)中 Python 的 Poetry 虚拟环境包编译失败处理笔记 一、背景 在基于 MSYS2(MINGW64)中 Python 创建的 Poetry 虚拟环境里,安装 Suna 开源项目相关包时编译失败,阻碍项目正常部署。 后端…...

GQA(Grouped Query Attention):分组注意力机制的原理与实践《一》

GQA(Grouped Query Attention)是近年来在大语言模型中广泛应用的一种注意力机制优化方法,最初由 Google 在 2023 年提出。它是对 Multi-Query Attention (MQA) 的扩展,旨在平衡模型性能与计算效率。 🌟 GQA 是什么&…...

【深度学习优化算法】02:凸性

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

JAVA国际版一对一视频交友视频聊天系统源码支持H5+APP

全球畅连无界社交:JAVA国际版一对一视频交友系统源码(H5APP双端覆盖) 在全球化社交需求激增的今天,构建一个支持多语言、适配国际支付且功能丰富的视频交友平台,成为出海创业者和企业的核心诉求。JAVA国际版一对一视频…...

策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码

原创内容第907篇,专注智能量化投资、个人成长与财富自由。 这位兄弟的策略公开了,年化494%,夏普比率5.86,最大回撤7%,欢迎大家前往围观: http://www.ailabx.com/strategy/683ed10bdabe146c4c0b2293 系统代…...

【C++】string类的模拟实现(详解)

文章目录 上文链接一、整体框架二、构造函数1. default2. copy3. range 三、析构函数四、拷贝构造(1) 传统写法(2) 现代写法 五、赋值重载(1) 传统写法(2) 现代写法 六、获取元素1. operator[ ] 七、迭代器1. begin2. end 八、容量相关1. size2. reserve3. clear 九、修改操作1…...

业界宽松内存模型的不统一而导致的软件问题, gcc, linux kernel, JVM

当不同CPU厂商未能就统一的宽松内存模型(Relaxed Memory Model)达成一致,很多软件的可移植性会收到限制或损害,主要体现在以下几个方面: 1. 可能的理论限制 1.1. 并发程序的行为不一致 现象上,同一段多线程…...

多模态大语言模型arxiv论文略读(101)

ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文标题:ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文作者:Wenjun Huang, Jiakai Pan, Jiahao Tang, Yanyu Ding, Yifei Xing, …...

量化Quantization初步之--带量化(QAT)的XOR异或pyTorch版250501

量化(Quantization)这词儿听着玄,经常和量化交易Quantitative Trading (量化交易)混淆。 其实机器学习(深度学习)领域的量化Quantization是和节约内存、提高运算效率相关的概念(因大模型的普及,这个量化问题尤为迫切)。 揭秘机器…...

Linux Maven Install

在 CentOS(例如 CentOS 7 或 CentOS 8)中安装 Maven(Apache Maven)的方法主要有两种:使用包管理器(简单但可能版本较旧),或者手动安装(推荐,可获得最新版&…...

#Java篇:学习node后端之sql常用操作

学习路线 1、javascript基础; 2、nodejs核心模块 fs: 文件系统操作 path: 路径处理 http / https: 创建服务器或发起请求 events: 事件机制(EventEmitter) stream: 流式数据处理 buffer: 处理二进制数据 os: 获取操作系统信息 util: 工具方…...

电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?

2024年10月9日,国家能源局综合司发布了《分布式光伏发电开发建设管理办法(征求意见稿)》,意见稿规定了户用分布式光伏、一般工商业分布式光伏以及大型工商业分布式光伏的发电上网模式,当选择全部自发自用模式时&#x…...

如何查看电脑电池性能

检查电脑电池性能的方法如下: 按下winR键,输入cmd回车,进入命令行窗口 在命令行窗口输入powercfg /batteryreport 桌面双击此电脑,把刚刚复制的路径粘贴到文件路径栏,然后回车 回车后会自动用浏览器打开该报告 红…...

kubernetes》》k8s》》kubectl proxy 命令后面加一个

命令后面加一个& 在Linux终端中,如果在命令的末尾加上一个&符号,这表示将这个任务放到后台去执行 kubectl proxy 官网资料 是 Kubernetes 提供的一个命令行工具,用于在本地和 Kubernetes API Server 之间创建一个安全的代理通道。…...

深入理解Linux系统进程切换

目录 引言 一、什么是进程切换? 二、进程切换的触发条件 三、进程切换的详细步骤 1、保存当前进程上下文: 2、更新进程控制块(PCB): 3、选择下一个进程: 4、恢复新进程上下文: 5、切换地址空间: 6…...

网络安全运维实训室建设方案

一、网络安全运维人才需求与实训困境 在数字化时代,网络安全已成为国家安全、社会稳定和经济发展的重要基石。随着信息技术的飞速发展,网络安全威胁日益复杂多样,从个人隐私泄露到企业商业机密被盗,从关键基础设施遭受攻击到社会…...

DBeaver 连接mysql报错:CLIENT_PLUGIN_AUTH is required

DBeaver 连接mysql报错:CLIENT_PLUGIN_AUTH is required 一、必须要看这个 >> :参考文献 二、补充 2.1 说明 MySQL5、6这些版本比较老,而DBeaver默认下载的是MySQL8的连接库,所以连接旧版本mysql报错:CLIEN…...

联通专线赋能,亿林网络裸金属服务器:中小企业 IT 架构升级优选方案

在当今数字化飞速发展的时代,中小企业面临着日益增长的业务需求与复杂多变的市场竞争环境。如何构建高效、稳定且具性价比的 IT 架构,成为众多企业突破发展瓶颈的关键所在。而亿林网络推出的 24 核 32G 裸金属服务器,搭配联通专线的千兆共享带…...

Web3时代的数据保护挑战与应对策略

随着互联网技术的飞速发展,我们正步入Web3时代,这是一个以去中心化、用户主权和数据隐私为核心的新时代。然而,Web3时代也带来了前所未有的数据保护挑战。本文将探讨这些挑战,并提出相应的应对策略。 数据隐私挑战 在Web3时代&a…...