赞
踩
目录
TCP-确认应答号(Acknowledgement Number)
CWR (Congestion Window Reduced)
UDP首部的格式。除去数据的部分正是UDP的首部。UDP首 部由源端口号,目标端口号,包长和校验和组成。
表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端 口号。没有源端口号的时候该字段的值设置为0。可用于不需要返回的通信中。
表示接收端端口,字段长度16位。
该字段保存了UDP首部的长度跟数据的长度之和。单位为字节(8位字 节)。
校验和是为了提供可靠的UDP首部和数据而设计。在计算校验和时,附加在UDP伪首部与UDP数据报之前。通过在最后一位增加一个 0 将全长增加16倍。此时将UDP首部的校验和字段设置为 0 。然后以16 比特为单位进行1的补码和,并将所得到的1的补码和写入校验和字段。
接收主机在收到UDP数据报以后,从IP首部获知IP地址信息构造UDP伪首部,再进行校验和计算。校验和字段的值是校验和字段以外剩下部分的1的补码和。因此,包括校验和字段在内的所有数据之和结果为 16位全部为1 时,才会被认为所收到的数据是正确的。
其实就是发送UDP包时,一定知道IP的地址之类的,构造一个临时的空间,存放上述的源IP地址等,将临时空间,UDP首部,数据部分联合计算校验和。
接受UDP包时,根据IP首部得到IP地址,构造一个临时的空间,存放上述的源IP地址等,临时空间,UDP首部,数据部分加起来,如果为1,则正确。
另外, UDP中也有可能不用校验和。此时,校验和字段中填入0。这种情况下,由于不进行校验和计算,协议处理的开销就会降低,从而可以提高数据转发的速度。然而,如果UDP首部的端口号或是IP首部的IP地址遇到损坏,那么 可能会对其他通信造成不好的影响。因此,在互联网中比较推荐使用校验和检查。
为什么在进行校验和计算时,也要计算UDP伪首部呢?
TCP/IP中识别一个进行通信的应用需要5大要素,它们分别为"源 IP地址”、“目标IP地址”、“源端口”、“目标端口”、“协议号”。然而, 在UDP的首部中只包含它们当中的两项(源端口和目标端口),余下的3 项都包含在IP首部里。
假定其他3项的信息被破坏会产生什么样的后果呢?很显然,这极 有可能会导致应该收包的应用收不到包,不该收到包的应用却收到了包。
为了避免这类问题,有必要验证一个通信中必要的5项识别码是否 正确。为此,在校验和的计算中就引入了伪首部的概念。
此外,IPv6中的IP首部没有校验和字段。TCP或UDP通过伪首部, 得以对5项数字进行校验,从而实现即使在IP首部并不可靠的情况下仍 然能够提供可靠的通信传输。
TCP首部的格式。TCP首部相比UDP首部要复杂得多。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。