传输层协议 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 号端口。

相关推荐
网硕互联的小客服2 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
浩浩测试一下2 小时前
Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
网络·网络协议·tcp/ip·安全·网络安全·php
leagsoft_10033 小时前
联软NSPM自动化策略管理 助力上交所加速国产化替代提升运维效率
运维·网络·自动化
Think Spatial 空间思维3 小时前
【实施指南】Android客户端HTTPS双向认证实施指南
android·网络协议·https·ssl
昔我往昔4 小时前
https和http有什么区别-http各个版本有什么区别
网络协议·http·https
漫步者TZ4 小时前
【Netty系列】解决TCP粘包和拆包:LengthFieldBasedFrameDecoder
java·网络协议·tcp/ip·netty
leagsoft_10034 小时前
筑牢企业网管域安全防线,守护数字核心——联软网管域安全建设解决方案
网络·安全·网络安全
苦学编程的谢5 小时前
Java网络编程API 1
java·开发语言·网络
alien爱吃蛋挞6 小时前
【JavaEE】万字详解HTTP协议
网络·网络协议·http
Bright16687 小时前
mkcert实现本地https
网络协议·http·https