当前位置: 首页 > 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 号端口。

http://www.lryc.cn/news/2399241.html

相关文章:

  • Python try-except-else 语句详解
  • ApacheSuperset CVE-2023-27524
  • Windows Server部署Vue3+Spring Boot项目
  • malloc 是如何分配内存的?——C 语言内存分配详解
  • Opencl
  • 如何在 HTML 中添加按钮
  • 【优秀三方库研读】quill 开源库中的命名空间为什么要用宏封装
  • AlphaFold3运行错误及解决方法(1)
  • Linux--进程的程序替换
  • 调教 DeepSeek - 输出精致的 HTML MARKDOWN
  • 【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
  • GQA(Grouped Query Attention):分组注意力机制的原理与实践《一》
  • 【深度学习优化算法】02:凸性
  • JAVA国际版一对一视频交友视频聊天系统源码支持H5+APP
  • 策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码
  • 【C++】string类的模拟实现(详解)
  • 业界宽松内存模型的不统一而导致的软件问题, gcc, linux kernel, JVM
  • 多模态大语言模型arxiv论文略读(101)
  • 量化Quantization初步之--带量化(QAT)的XOR异或pyTorch版250501
  • Linux Maven Install
  • #Java篇:学习node后端之sql常用操作
  • 电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?
  • 如何查看电脑电池性能
  • kubernetes》》k8s》》kubectl proxy 命令后面加一个
  • 深入理解Linux系统进程切换
  • 网络安全运维实训室建设方案
  • DBeaver 连接mysql报错:CLIENT_PLUGIN_AUTH is required
  • 联通专线赋能,亿林网络裸金属服务器:中小企业 IT 架构升级优选方案
  • Web3时代的数据保护挑战与应对策略
  • Qwen3与MCP协议:重塑大气科学的智能研究范式