【正确答案】
【答案解析】[答案要点]
(1)先分析网络的体系结构
这是一个典型的应用层→TCP传输层→IP网络层→数据链路层→物理层的模型,其中在应用层和物理层不需要考虑首部的开销,其他层都需要。
通过数据链路层给出的条件,例如:
A→R1的链路:最大帧长度=1024B,去掉帧头14B,则可得出IP数据报最大长度=1024-14=1010B。同理,
R1→R2的链路:IP数据报最大长度=(512-8)B=504B。
R2→B的链路:IP数据报最大长度=(512-12)B=500B。
上面得到的各个链路的最大IP数据报长度是进行分片的重要依据。
另外,用户数据在传输层的数据报长度=数据部分+首部=(900+20)B=920B;交给IP网络层后,IP数据报长度=IP首部+TCP数据报长度=(20+920)B=940B。这就是将要分片的原始数据报。
(2)进行分片处理
在A→R1上:主机将长度为940B的IP数据报交给路由器,而路由器能接收的IP数据报最大长度=1010B,所以这个940B的IP数据报是不需要分片的。
总长度=940B,标识=X,DF=0,MF=0,片偏移=0。
在R1→R2上:只能支持504B的数据报,而用户数据报为940B,所以必须分片;在IP中规定,除了最后一个分片外,其他的分片的数据报长度必须是8的整数倍数,所以对于只能支持504B的IP数据报,数据部分为504-20=484B,取整为480(8的倍数)。1<(940-20)/480<2,所以需要分两片。第一片数据报的数据部分长度为480B,第二片数据报的数据部分长度为(940-20)B-480B=440B。
第一片数据报:总长度=500B,标识=X,DF=0,MF=1,片偏移=0。
第二片数据报:总长度=460B,标识=X,DF=0,MF=0,片偏移=60。
同理,在R2→B上:由于该段链路允许最大IP数据报长度为500B,所以无需再进行分片。