【Ethernet】車載ネットワーク その19【IPフラグメント②】

車載ネットワーク

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/

はじめに

BLFに埋まっていたEthernetFrameをIPフラグメントに着目して解析する。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

BLFに埋まっていたEthernetFrameをIPフラグメントに着目して解析

フクさん
フクさん

じゃ、再度前回のEthernetFrameを出すよ。

// Ehternetヘッダ
0x01,0x00,0x5e,0x00,0x01,0x01,// (宛先MACアドレス)
0x10,0x6f,0x3f,0x0f,0xd6,0xdd,// (送信元MACアドレス)
0x08,0x00,(タイプ=0x0800=IPv4)

// IPヘッダ
0x45,// (version=4,ヘッダ長=5)
0x00,// (サービス種別=0)
0x05,0xdc,// (全長=0x05dc=1500)
0x6a,0xdc,// (識別子=0x6adc)
0x20,0x00,// (フラグ=001b=継続,断片化位置=0x00)
0xff,// (生存期間=255TTL)
0x11,// (プロトコル=0x11=UDP)
0x6a,0x0f,// (チェックサム=0x6a0f)
0xc0,0xa8,0x0A,0x0B,// (送信元アドレス=192.168.10.11)
0xec,0x00,0x01,0x03,// (宛先アドレス=236.0.1.3)

// UDPヘッダ
0xb0,0x00,// (送信元ポート番号=45056)
0x09,0x79,// (宛先ポート番号=2425)
0x2a,0x6d,// (データ長=0x2a6d=10861)
0x00,0x00,// (チェックサム)

// データ
0x01,0x00,0x20,0x00,0xf4,0x50,0x71,0xda,0x02,0x00,0x9a,…
太郎くん
太郎くん

うん、こんなんだった。

IPヘッダのフラグ情報

フクさん
フクさん

ここで着目するのは、IPヘッダのフラグのところ。

太郎くん
太郎くん

フラグ=001b=継続
ってなってるね。

太郎くん
太郎くん

これの情報の内訳ってどうなってるの?

フクさん
フクさん

3bit構成になってて、こんな意味になってる。

012
予備 禁止 継続 
フクさん
フクさん

bit0は予備で常に0。
bit1が1の場合は断片化を禁止。つまりIPフラグメントではないことを明示している。
bit2が1の場合は断片化された後続のパケットが存在するパケットであることを意味してて、0の場合は後続のパケットが存在しないことを意味する。

太郎くん
太郎くん

ということは、今回は
禁止bitが0、継続bitが1。
つまりIPフラグメントってことになるのか・・・。

断片化位置

太郎くん
太郎くん

断片化位置=0x00ってのはなんだろ?

フクさん
フクさん

所謂offsetだねー。

太郎くん
太郎くん

うーん、日本語を英語に変換してくれと言ったわけじゃないんだけどー。

フクさん
フクさん

IPフラグメントされたフレームが全体のフレームのどこにいるかってのを示す値だね。
0x00ってことは先頭のデータってことを示している。

太郎くん
太郎くん

まぁ途中からそうなんだろなーって思ってたけど。

フクさん
フクさん

この感じで次回は2つ目のEthernetFrameを見てみようか。

まとめ

フクさん
フクさん

まとめだよ。

  • IPフラグメントに着目してEthernetFrameを確認。
    • IPヘッダのフラグでIPフラグメントになるかどうかが決定する。
    • 断片化位置で全体のどこのデータかが分かるようになっている。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました