UDP 首部格式

【UDP 首部格式】源端口:
表示发送端端口,字段长度16位 。可选项,有时候可能不会设置源端口号 。没有源端口号的时候该字段的值设置为0 。可用于不需要返回的通信中 。
目标端口:
表示接收端端口,字段长度16位 。
包长度:
该字段保存了UDP首部的长度跟数据长度之和 。单位为字节(8位的字节),实际最大长度不可能超过65507字节 2^16() - 8字节UDP报头 ? 20字节IP头部
校验和:
校验和是为了提供可靠的UDP首部和数据 。
如果不使用校验和,该字段应被填充为全0 。这种情况下,由于不进行校验和计算,协议处理的开销就会降低,从而可以提高数据转发的速度 。
在计算校验和时,为了能够计算校验和,需要在UDP数据包前添加一个“伪首部”( 如下图) 。伪首部包括了IPv4头部中的一些信息,但它并不是发送IP数据包时使用的IP数据包的头部,而只是一个用来计算校验和而已 。接收主机在收到UDP报文以后,从IP首部获悉IP地址信息构造UDP伪首部 。在进行校验和计算 。
计算UDP伪首部的理由
识别一个通信应用需要5个因素 。"源IP地址"、"目标IP地址"、"源端口"、"目标端口"、"协议号" 。UDP首部只包含了(源端口和目标端口),用此来校验,如果其他三项信息被破坏,极有可能导致应收包应用收不到,不应该收包的应用收到 。
为此,有必要在通信中,验证这5项的识别码是否正确,就引入了伪首部的概念 。