一、UDP 协议端报文结构
??UDP 报文分为 UDP 报头和 UDP 数据(UDP载荷)两部分。报头由4个16位长字段组成,分别是源端口、目的端口、UDP长度和校验和。
- UDP 报文结构示意图:
字段含义:
- 源端口:占据 UDP 报文的前16 位,包含发送数据报应用程序的 UDP 端口号。接收端的应用程序把这个字段包含的值作为回馈响应的地址。由于字段是可选的,故可以设置为0,这样的接收端就不会回馈给发送端响应。
- 目的端口:接收端应用程序的 UDP 端口,占据16位。
- UDP长度:16位UDP数据报的长度,表示整个数据报(UDP报头+UDP数据)的最大长度。UDP 报头长度是8个字节,所以这个值最小是6个字节。
- 检验和:检验和主要是为了检验数据在传输过程中是否发生损坏。
- UDP数据:发送端要发送的数据。
- UDP报文注意事项
- UDP 报文拼装的过程,其实就是所谓的“封装”。
- 16位UDP数据报的长度,表示整个数据报(UDP报头+UDP数据)的最大长度。
- UDP 数据报的最大长度是64KB。
- 使用 UDP 来传输数据,一定要警惕大的报文,如果报文超过64KB,此时可能会丢失一部分数据。
- 检验和的主要作用其实就是“证伪”,一旦校验和出错,数据就会直接丢弃。
二、UDP协议的特点
-
无连接 ??只需知道对端的IP和端口号就直接进行传输,不需要建立连接。 -
不可靠 ??没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。 -
面向数据报 ?? 应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。 ?? 例如:如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节 -
半双工 ?? UDP 只有接收缓冲区,没有发送缓冲区。 UDP 没有真正意义上的发送缓冲区,发送的数据会直接交给内核,由内核将数据传给网络协议进行后续的传输。
UDP 具有接收缓冲区,但是接收缓冲区不能保证接收的UDP数据报的顺序和发送的数据报顺序一致;如果缓冲区
已满,后续到达的数据就会被丢弃。
-
大小受限 ?? UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)。
三、基于UDP的应用层协议
- NFS :网络文件系统
- TFTP :简单的文件传输协议
- DHCP :动态主机配置协议
- BOOTP : 启动协议(用于无盘设备启动)
- DNS :域名解析协议
|