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

目录

[1. 再识的端口号](#1. 再识的端口号)

[1.1 端口号范围划分](#1.1 端口号范围划分)

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

[2. UDP 协议](#2. UDP 协议)

[2.1 UDP 协议格式](#2.1 UDP 协议格式)

[2.2 UDP 的特点](#2.2 UDP 的特点)

[2.3 UDP 的缓冲区](#2.3 UDP 的缓冲区)

[2.4 一些基于 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 号端口。

相关推荐
tan77º13 分钟前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
小白爱电脑38 分钟前
光纤的最小弯曲半径是多少?
网络
花落已飘2 小时前
多线程 vs 异步
linux·网络·系统架构
qq_171538855 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
网络·网络协议·tcp/ip
珹洺5 小时前
计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP
网络·tcp/ip·计算机网络
兮动人5 小时前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
怦然星动_6 小时前
eNSP中实现vlan间路由通信(路由器)
网络·智能路由器
海外空间恒创科技7 小时前
一台香港原生ip站群服务器多少钱?
服务器·网络协议·tcp/ip
zyx没烦恼8 小时前
TCP相关实验
服务器·网络·tcp/ip
DemonAvenger8 小时前
TCP连接池设计与实现:提升Go应用网络性能
网络协议·架构·go