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

車載ネットワーク

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

はじめに

BLFに埋まっていたEthernetFrameを解析していく回。

UDPではあるようなので、UDPヘッダの構成に則って情報を分解&確認。

したのだが、どうやら最大長を超えてる・・・。
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のトランポート層

フクさん
フクさん

じゃー、BLFに埋まっていたEthernetFrameを先頭から分解していく。

太郎くん
太郎くん

えっと、
外枠がEthernetFrameで、
その中にIPヘッダがいるんだっけ?

フクさん
フクさん

そうそう。
IPヘッダを見るとトランポート層が分かるようになってるんで、
それを持ってさらに該当トランポート層のヘッダに分解する感じ。

太郎くん
太郎くん

ちなみにトランポート層のプロトコルは何になってるのかな?

フクさん
フクさん

先に答えを言っちゃうとUDPだったねー。

太郎くん
太郎くん

ってことは割とシンプルな通信ってことかな?

フクさん
フクさん

うーん、どうだろうねぇ。

太郎くん
太郎くん

(なんだ、妙に含みのある言い方だな・・・。)

BLFに埋まっていた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,…
太郎くん
太郎くん

そういえば、UDPヘッダの構成は教えてもらってないけど、

  • 送信先ポート
  • 宛先ポート
  • データ長
  • チェックサム

で構成されてるのか。

太郎くん
太郎くん

まとめると、このフレームって、

  • IPv4
  • 送信元IPアドレス:192.168.10.11
  • 宛先アドレス:236.0.1.3
  • プロトコル:UDP
  • 送信元ポート:45056
  • 宛先ポート:2425
  • データ長:10861

ってことだね。

太郎くん
太郎くん

あれ?

フクさん
フクさん

(気が付いたか。)

IPフラグメント仕様

太郎くん
太郎くん

データ長が10861[byte]ってなってるんだけど、
EthrnetFrameって1518[byte]が最大長じゃなかったっけ?
それを超えてるんだけど・・・。

フクさん
フクさん

うん。
これは、IPフラグメント仕様というものが適用されてるんだよねー。

太郎くん
太郎くん

IPフラグメント?

フクさん
フクさん

Wikipediaから説明文持ってきた。

IPフラグメンテーション(英: IP fragmentation)とは、Internet Protocol (IP) におけるデータグラムの断片化であり、MTUが通常のデータグラムのサイズより小さいリンク上でもパケットが転送できるようにする。日本語ではIP分割と呼ぶ資料もある。

Wiipediaより
太郎くん
太郎くん

うーん、つまり
1518[byte]に収まらないデータは分割するような仕様がIP層にあるってこと?

フクさん
フクさん

そうそう。

太郎くん
太郎くん

・・・。

フクさん
フクさん

・・・。

太郎くん
太郎くん

説明してくれーー!!

フクさん
フクさん

(まぁそうなるわな)

まとめ

フクさん
フクさん

まとめだよ。

  • BLFのEthernetFrameを分解してみた。
    • UDPだった。
    • データ長がEthernetFrameの最大長を超えていた。
      • つまり、IPフラグメント仕様が使われている。

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

コメント

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