16位源端口号:存储源进程所使用的端口号。
16位目的端口号:存储目的进程使用的端口号。
16位UDP长度:标记处UDP协议的长度,表示整个UDP数据报的长度(UDP头部+UDP数据)。
因为UDP头部的长度为8字节,16位UDP长度的最小值为8,最大值即为2^16-1 = 65535,所以UDP协议可以传送的最大的数据报大小为65535。
16位UDP校验和:进行数据的确认,如果在接收端校验和不正确,则直接抛弃该报文。
校验和该如何计算?
UDP的发送过程
应用层交给UDP多长的数据,UDP就会将数据填补在首部的后面,既不会进行拆分,也不会进行合并。
如果发送端使用sendto一次发送10kb数据给接收端,则接收端必须使用sendfrom一次接收完10kb的数据,不能分两次每次接收5kb。
UDP的缓冲区
UDP没有真正意义上的发送缓冲区,调用sendto会直接交给内核,由内核将数据传递给网络层协议进行后续的传输动作。
UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报文的顺序一致;如果缓冲区满了,再到达的UDP报文就会被直接丢弃。
基于UDP的应用层协议
- NFS:网络文件系统
- TFTP:简单文件传输协议
- DHCP:动态主机配置协议
- BOOTP:启动协议(用于无盘设备启动)
- DNS:域名解析协议