編程實驗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/ )
