编程实验4
‘壹’ Python网络编程4--实现IP分片与网络路径MTU探测
实验拓扑如下,linux向R2发送IP分片,并在R2接口上抓包。
ICMP包校验和是连通头部信息加数据本身一起进行校验(ip包只需要校验头部信息)而Scapy自动添加ICMP校验和时只会计算第一分片的数据,当三个分片到达目标主机进行重组后校验不通过,将重组后的数据包丢弃;因此在手动设置IP分片时,需要手动将校验和添加入ICMP首部中。
由于手动计算校验和过程较复杂,可通过wireshark抓包,可以获取到正确的校验和。
抓包结果如下,由于单个数据包长度超过MTU,系统自动将ICMP request包分片发送,同样的ICMP reply系统也进行了分片。
当主机发送分组的长度超过MTU又不可以分片(IP flags位DF置1),则这个分组丢弃,并用ICMP差错报文向主机报告。
参考:( https://fasionchan.com/network/ip/fragmentation/ )
