欢迎浏览高耳机的博客
希望我们彼此都有更好的收获
感谢三连支持!
在网络编程中,UDP(用户数据报协议)以其轻量级和高效性而著称。这篇博客我们就来探讨UDP的报文结构,以及在使用UDP时需要注意的一些关键事项。
UDP代码实战:UDP 实现的 Echo Server 和 Echo Client 回显程序-CSDN博客
目录
UPD的基本特性
UPD报文结构及特性扩展
UDP%E6%97%B6%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9-toc" style="margin-left:40px;">使用UDP时的注意事项
UPD的基本特性
无连接:
UDP是无连接的协议,知道对端的IP和端口号就直接进行传输,不需要建立连接。
不可靠传输:
UDP没有确认机制和重传机制。如果数据因为网络故障无法到达对方,UDP协议层也不会给应用层返回任何错误信息。
面向数据报:
应用层交给UDP的数据报文,UDP原样发送,既不会拆分,也不会合并。发送端和接收端必须匹配数据报的大小。
拥塞控制的缺失:
与TCP不同,UDP不进行拥塞控制。这意味着UDP不会根据网络的拥塞情况调整其传输速率,这可能导致在网络拥塞时数据包的大量丢失,但也使得UDP在某些情况下能够更快速地发送数据。
UPD报文结构及特性扩展
-
报文长度(Length)
-
校验和/检验和(Checksum)
-
源端口号和目的端口号(Source Port & Destination Port)
- 类型:各16位
- 描述:用于标识发送和接收的端口号,是通信双方的标识。这两个字段各占16位,用于标识发送和接收端的端口号。虽然UDP是无连接的,但端口号对于区分同一主机上的多个服务至关重要。
-
UDP数据(Data)
- 类型:长度可变
- 描述:实际要传输的数据内容。
UDP%E6%97%B6%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9">使用UDP时的注意事项
-
最大长度限制
一个UDP能传输的数据最大长度是64K(包含UDP首部)。超过这个大小,需要在应用层手动分包和拼装。 -
基于UDP的应用层协议
包括NFS(网络文件系统)、TFTP(简单文件传输协议)、DHCP(动态主机配置协议)、BOOTP(启动协议)、DNS(域名解析协议)等都是基于UDP的。 -
校验和出错处理
如果校验和出错,UDP会直接丢弃数据报,不会进行重传或通知上层应用。 -
端口号的使用
编写程序时,应避免使用知名端口号(SSH服务器使用22端口, FTP服务器使用21端口, Telnet服务器使用23端口, HTTP服务器使用80端口, HTTPS服务器使用443端口),这些端口号通常被广泛使用的服务所占用。 -
多播和广播支持
UDP支持多播和广播,适用于一对多或多对多的通信场景。 -
粘包问题
虽然UDP是面向数据报的,但在某些情况下可能会出现“粘包”问题,即两个UDP数据报合并在一起传输。 -
性能考虑
由于UDP的简单性,它在延迟敏感型应用中表现更好,如实时视频和音频传输。但对于需要可靠传输的应用,可能需要在应用层实现额外的机制。
在网络编程中,Echo Server 和 Echo Client 回显是一种经典的示例,用于演示基本的网络通信。Echo Server 接收来自客户端的数据,并将相同的数据发送回客户端。这种模式在测试网络连接和理解网络通信原理时非常有用。在这篇博客中,我们介绍了UDP的特性和报文结构以及一些注意事项,理解了这些,我们可以开始着手进行实战:UDP 实现的 Echo Server 和 Echo Client 回显程序-CSDN博客
如有不足之处请多多指出
我是高耳机