UDP报文结构
报头大小为8个字节.
16位源端口号与16位目的端口号:
16个比特位可表示65536个端口号,分别为0-65535,其中1-1023为为专属端口号,用来为一些知名服务器提供服务,例如:
HTTP服务器专属端口号80
FTP 文件传输协议的端口号为21
16位长度:
表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8.
UDP报文最大长度约为64KB.
16位校验和:
通过一定数学公式以数据内容做为参数来进行计算得到一个结果称为校验和.
由于网络传输并非那么稳定(可能受外部环境干扰),所以这时候就使用校验和来检验数据传输是否正确,如果校验和错误,则表明数据传输错误,如果校验和正确并不能证明传输的数据就一定正确(属于是检错,不检对).
UDP的特点
无连接
知道对方端口号与ip地址就可以直接进行发送数据,不需要建立连接.
不可靠
没有安全机制,只管发送数据报,至于接受方是否收到,是不知道的也不会进行重传.
面向数据报
应用层给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并.
缓冲区
UDP只有接收缓冲区,没有发送缓冲区.
通俗一点就是说udp发送的数据不会等待,直接提交给系统内核,由内核进行处理,而接收缓冲区是将接受来的数据放入缓冲区,由socket对象进行读取,需要注意的是UDP接收缓冲区接收的数据顺序,不一定与发送的数据顺序一样,接受缓冲区满后再到达的数据会丢失.
基于UDP的应用层协议
NFS:网络文件系统
TFTP:简单文件传输协议
DHCP:动态主机配置协议
BOOTP:启动协议(用于无盘设备启动)
DNS:域名解析协议