您當前的位置:首頁 > 遊戲

什麼是分片標誌位

作者:由 jasonj333 發表于 遊戲時間:2021-03-29

資料包mtu是什麼意思

“如果你看過前面MTU和MSS的文章,你應該知道資料如果太大,在傳送中極易丟失,故而在網絡卡上對每條資料幀的大小做了限制,這就是MTU,它的意思是從網路層發到二層的資料(ip頭+ipPayload),不能大於MTU,如果大了就會丟棄,這就要求資料包在網路層要把資料包分成符合MTU大小的分片包。但是,有的報文為了資料的完整性,並不想在網路層由於MTU的關係而進行分片,它寧願丟棄,也不願意分片後傳送,這個怎麼辦呢?

分片標誌位

上面的問題要怎麼辦?很簡單,既然報文是在網路層分片的,我只要在網路層新增一些資訊,用來表明是否允許分片即可,這就是網路層協議頭裡的分片標誌位欄位

什麼是分片標誌位

DF

“表示是否允許分片,0表示可以,1表示不允許

所以如果你不想報文在網路傳送過程中由於MTU的關係,可能需要在經過某個路由器網絡卡時需要而進行分片,你就可以把報文的IP首部裡的DF值設定為1,這樣路由器就無法分片,把報文丟棄,同時發ICMP給源主機

這裡就帶出了DF的另一個作用:

“發現路徑MTU,PMTUD,path mtu discovery,透過把DF設定為1,當路徑中的某些網絡卡MTU太小又不能分片,就會發icmp給源主機,這個icmp報文裡有這個網絡卡的mtu的大小資訊,源主機就能發現路徑上的最小mtu,這就是path mtu。源主機根據pmtu,就可以重新發送小一些的ip包

MF

“表示該ip包是否是最後一片,0表示最後一片,1表示不是最後一片

這個標誌位有什麼用途?

資料包在網路層分片後傳送,在接收端,也需要在網路層重組,等待分片包進行重組什麼時候結束?就是以接收到最後一片資料包為止。如果最後一片遲遲未到,重組的資料包就是不完整的,就不能發給上層,就需要把整個包丟棄。只有完整的資料包才可以發給上層

標簽: 分片  MTU  網路層  資料包  報文