UDP首部的格式
除去数据的部分正是UDP的首部。UDP首部由源端口号,目标端口号,包长和校验和组成。
a.源端口号(Source Port)
表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候该字段的值设置为0。可用于不需要返回的通信中。
b.目标端口号(Destination Port)
表示接收端端口,字段长度16位。
c.包长度(Length)
该字段保存了UDP首部的长度跟数据的长度之和。单位为字节(8位字节)。
d.校验和(Checksum)
校验和是为了提供可靠的 UDP首部和数据而设计。
附加在UDP伪首部与UDP数据报之前。通过在最后一位增加一个 “0” 将全长增加16倍。此时将UDP首部的校验和字段设置为"0"。然后以16比特为单位进行1的补码和,并将所得到的1的补码和写入校验和字段。
接收主机在收到UDP数据报以后,从IP首部获知IP地址信息构造UDP伪首部,再进行校验和计算。
校验和字段的值是校验和字段以外剩下部分的1的补码和。
包括校验和字段在内的所有数据之和结果为"16位全部为1"时才会被认为所收到的数据是正确的。
UDP中也有可能不用校验和。此时校验和字段中填入0。由于不进行校验和计算,协议处理的开销就会降低,从而可以提高数据转发的速度。
在互联网中比较推荐使用校验和检查。
注:校验和计算中计算UDP伪首部的理由:
在UDP的首部中只包含它们当中的两项(源端口和目标端口),余下的3项都包含在IP首部里。有必要验证一个通信中必要的5项识别码是否正确。 为此,在校验和的计算中就引入了伪首部的概念。
IPv6中的IP首部没有校验和字段。TCP或UDP通过伪首部,得以对5项数字进行校验,从而实现即使在IP首部并不可靠的情况下仍然能够提供可靠的通信传输。
TCP首部格式
TCP中没有表示包长度和数据长度的字段。可由IP层获知TCP的包长由TCP的包长可知数据的长度。
1.源端口号 (Source Port)
表示发送端端口号,字段长16位。
2.目标端口号 (Destination Port)
表示接收端端口号,字段长度16位。
3.序列号(Sequence Number)
字段长32位。序列号(有时也叫序号) 是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。
序列号不会从0或1开始ÿ