格来云究极风暴觉醒:IP数据报首部校验和算法

来源:百度文库 编辑:高校问答 时间:2024/04/28 23:03:20

普通的IP首部长20个字节,除非含有选项字段。
第一帧:4位版本
4位首部长度
8位服务类型(TOS)
16位总长度(字节数)
第二帧:16位标识
3位标志
13位片偏移
第三帧:8位生存时间(TTL)
8位协议
16位首部校验和
第四帧:32位源IP地址
第五帧:32位目的IP地址
第六帧:选项(如果有)
第七帧:数据
1.4位版本:IP所用版本,有IPv4, IPv6

2.4位首部长度:指的是占32bit字的数目,包含任何选项。由于它是一个4bit字段,因此首部最长为60个字节。

3.服务类型(TOS)包括一个3bit的优先权子字段(忽略),4bit的TOS子字段和1bit未用位但须置0。4bit的TOS分别代表:最小延时、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中一位,如4位均为0,则意味着是一般服务。

4.总长度字段指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长为16bit,所以IP数据报最长可达65535(超级通道的MTU为65535。它的意思其实不是一个真正的MTU,它使用了最长的IP数据报)。当数据报被分片时,该字段的值也随着变化。

尽管可以传一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片,而且主机也要求不能接收超过576字节的数据报。由于TCP把用户数据分成若干片,因此一般来说这个限制不会影响TCP。UDP的应用(如RIP,TFTP,BOOTP,DNS,及SNMP),它们都限制用户数据报长度为512字节,小于576字节从而避免IP数据报分片。

但是现在大多数的实现(支持网络文件系统(NFS)的实现)允许超过8192字节(8K)的IP数据报。

总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网最小帧长为46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。

5.标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会增1。

6.TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设定(通常为32或64)一旦经过一个处理它的路由器,它的值就减1。当该字段值为0时,数据报就被丢弃,并发过ICMP报文通知源主机。

7.首部校验和字段是根据IP首部计算检验和码。它不对后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均包含有同时覆盖首部和数据检验和码。为了计算一份数据报IP校验和,首先把校验字段置为0。然后对首部中每个16bit进行二进制反码求和,结果存放检验的字段中。当收到一份数据报后,同样对首部中的每个16bit进行二进制反码求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此如果在传输过程中没发生任何差错,那么接收方计算的校验和结果应全为1。如果不全为1(即校验和错误),那么IP就丢弃收到的数据报。但不生成差错报文,由上层去发现丢失的数据报并进行重传。

ICMP,IGMP,TCP和UDP都采用相同校验和算法,尽管TCP和UDP除了本身的首部和数据外,在IP首部中还包含不同的字段。

由于路由器经常只修改TTL字段(减1),因此当路由器转发一份报文时可以增加它的校验和,而不需要对IP整个首部进行重新计算。

8.每一份IP数据报都包含源IP地址和目的IP地址。

9、选项:是数据报中一个可变长的信息。目前这些选项定义如下:

。安全和处理限制(用于军事领域)

。记录路径(让每个路由器都记录下它的IP地址)

。时间戳 (让每个路由器都记录下它的IP地址和时间)

。宽松的源站选路 (为数据报指定一系列必须经过的IP地址)

。严格的源站选路(与宽松源站选路类似,但是要求只能经过这些指定的地址,不能经

过其它地址)。

这些选项很少被使用,并非所有的主机和路由都支持这些选项。

选项字段一直都是以32bit作为界限,在必要时必须插入值为0的填充字节。这样就保证IP首部始终是32bit的整数倍速(这是首部长度字段所要求的