一、前言
接着上一次的博客,这次记录 “IPv4协议”部分的一个典型例题。
二、题目
1.如图所示网络。
请回答下列问题:
(1)主机在配置IP地址时,其正确的子网掩码和默认网关分别是多少?
(2)若路由器R在向互联网转发一个由主机192.168.1.5发送、ID=12345、length=500B、DF=1的IP分组时,则该IP分组首部的哪些字段会被修改?如何修改?
(3)若主机192.168.1.10向互联网ID=6789、length=1500B、DF=0的IP分组时,路由器需要将该IP分组分为几片(每片尽可能封装为最大片)?给出分片结果,包括每片的ID、DF、MF、length、offset的取值。
答案:
1)子网掩码:255.255.255.240,默认网关:192.168.1.1。
2)该IP分组首部的源IP地址、生存时间TTL和首部校验和字段会被修改,源IP地址192.168.1.5会被替换为130.11.22.3,生存时间TTL减1,首部校验和字段会重新计算。
3)路由器需要将该IP分组分为4片,分片结果如下:
第1片:{ID=6789,DF=0,MF=1,length=508,ffset=0};
第2片:{ID=6789,DF=0,MF=1,length=508,ffset=61};
第3片:{ID=6789,DF=0,MF=1,length=508,offset=122};
第4片:{ID=6789,DF=0,MF=0,length=36,offset=183}。
解析:
1)由图中主机192.168.1.0/28, 得“/28”是主机的子网掩码,即32位子网掩码有28个1:
11111111.11111111.11111111.11110000 = 255.255.255.240。
默认网关即主机通过的第一个路由器接口的IP地址:192.168.1.1。
2)由图知,采用 NAT 技术,所以将私网地址192.168.1.5更换为公网地址130.11.22,数据报中的生存时间 TTL因跳步一个路由器减1,首部校验和字段因为跳步进行重新校验。
附上一篇写的很详细的NAT技术的博文:
https://blog.csdn.net/gui951753/article/details/79593307
3)由题意,
最大分片封装的数据 d =[(M - 20)/ 8 ] * 8 = [(1500 - 20)/ 8 ] * 8 = 488 (下取整)
需要的总片数 n = (L - 20 )/ d = (1500 - 20 )/ 488 = 4(上取整)
每片的总长度字段为
每片的片偏移字段取值为
得到结果:
第1片:{ID=6789,DF=0,MF=1,length=508,ffset=0};
第2片:{ID=6789,DF=0,MF=1,length=508,ffset=61};
第3片:{ID=6789,DF=0,MF=1,length=508,offset=122};
第4片:{ID=6789,DF=0,MF=0,length=36,offset=183}。
IP分片格式格式(不确定):
Identification | DF | MF | Length | Fragment Offset
( Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。DF:Don’t Fragment,"不分片"位,如果将这一比特置1,IP层将不对数据报进行分片。MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。Length: 每片的总长度字段。Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。)