• ベストアンサー

フラグメントオフセットについて

フラグメントオフセットについて 識別番号とフラグメントオフセットでパケットの再組み立てをしてると思うのですが 識別番号は、同じデータには同じ値で、まずそのデータが同じデータかどうか判断する。 そしてフラグメントオフセットは、パケットがそのデータの何バイト目かを値で、13bit x 8分の値(フラグメントオフセットの1ビットが8ビット分表すため)を表現できると勉強しました。 しかし、13bit X 8 以上のデータなら、そのあとどのような処理があるのでしょうか? 回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

>断片化と再構築 >IPパケットの最大長は65535オクテットであるが(…略…) http://ja.wikipedia.org/wiki/IPv4 という上限はそこに由来しているわけです。 断片化(fragment)は8バイト単位のブロックでおこなわれ,ブロック連番は13ビット長のオフセット値で表される。よって,8バイト×(2の13乗)=8×8192 =65536バイト。 ですから,質問文にある次の計算式は間違いです。 >13bit x 8分の値(フラグメントオフセットの1ビットが >8ビット分表すため)を表現できると勉強しました。 13ビット長のフラグメントオフセットのビットパターン 0000000000000 ~ 1111111111111 のそれぞれが8バイトのブロックを指している。よって,8×(2の13乗)バイトの長さのIPパケットを扱える,というのが正しいです。 それより長いIPパケットということは,規約上はあり得ない異常なIPパケットということになります。フラグメントオフセット部は13ビット長で変わりませんから,同一識別子で,かつ,重複した同一オフセット値をもつものが複数出現するということですね。 参考までに,CiscoのあるFirewallソフトウェアは次のように動作するとのこと。 >有効なIPパケット(65535バイト)より長いことを自ら報告する >フラグメントが到着した場合。これは、既知のバグを持つ >IPスタックを破壊するための攻撃、または破損したIPスタック >からのパケットを意味する可能性があります。 >PIXは、その同じIP IDの全パケットフラグメントを自動的に廃棄します。 http://www.cisco.com/web/JP/product/hs/security/pix/prodlit/pix22_ds.html#a018

jayjay_3
質問者

お礼

確かに間違いでした。お恥ずかしい。 勉強になりました! ありがとうございました!