私の本業はネットワークエンジニアなのですが、ネットワークの技術ってほんと理解しづらいんですよね。最近になってネットワーク技術の基礎をやっと理解出来てきたのですが、エンジニアになりたての頃は勉強しても全然本質が理解出来なくて、四苦八苦したものです。特に理解できなかったのでヘッダーの説明です。ehterのヘッダーとか、IPのヘッダーとか、説明の図がどれも違ってて、何故違うのかさっぱり分かりませんでした。この、説明のための図が違うことで、ネットワーク技術の基本中の基本であるヘッダーのことが理解しづらくなってると感じました。ヘッダーのことをしっかりと理解するだけで、ネットワーク技術への理解が全然違うので、ネットワークエンジニアであれば、各機器のConfigを覚えるのも大事ですが、ヘッダーのことを理解することはもっと大事だと覚えておきましょう。
なので、全くヘッダーのことを理解しないままネットワークの仕事を続けていた私が、ヘッダーを理解するまでに至った思考の流れを書いていきたいと思います。
私がヘッダーが分かりづらかった理由
まず、ネットでヘッダーのことを検索すると、下記の2パターンの図でよく解説されています。
■IPヘッダーを32bit区切りで改行して説明している図
■各種ヘッダーが横一列になって解説している図
どちらも間違っている訳ではないんですが、何故表現の仕方が違うのか分からなくて、この時点でネットワークエンジニア初心者だった私は混乱しました。私はどっちを基準に考えればいいのか分からなくなって、エンジニアになりたての頃は理解する意欲を失ってしまいましたんね……。
今の私の理解としては、32bit区切りで改行している図を使って説明してる人は、RFCに忠実な人なのではないかと考えてます。様々なネットワーク技術の仕様を定義しているRFC(Request for Comments)では、ヘッダーの詳細は基本的に32bit区切りで表現しています。なので、RFCに忠実な人が書いている説明記事だと、32bit区切りなのかなと。
そして、横一列になっている図を使って説明をしている人は、32bit区切りであるよりも、横一列で表現した方が人間には分かりやすいはずだという考えから、表現の仕方を変えたはずです。確かに素人としては、32bit区切りで表現されているよりも、横一列のフォーマットの方が分かりやすい気がします。
次に、各種ヘッダーの解説をする時の図にも混乱しました。
■ehterヘッダーの図
この図では、ehterヘッダーの説明してるわけですが、そこでWiresharkで実際に流れてるフレームをキャプチャしてみると、図のような構造を持ったフレームが無い……ehterヘッダーだけでデータを運ぶようなことはもう殆どないので当然です。説明のためにポイントを絞った図になってるので、そりゃ同じフレームが流れてるわけないのは当たり前なんですが、こんなところで理解不能に陥って理解するのをやめてたのを覚えてます。
という訳で何が言いたいかというと、色んな人たちの説明の仕方や図がちょっとずつ違ってて、どれが本当なのかさっぱり理解出来なかったということです。理解した今となっては、「それらはどれも間違ってないから、それらを頭の中で繋げて整理して、理解するのが勉強だ」ということなんだなと分かるんですけどね……。
ヘッダーを理解した瞬間
そんな感じでネットワークエンジニアやりながらも全くヘッダーのことなんて理解しないまま仕事してたんですが、検証の仕事をするようになってパケットキャプチャをよく見るようになり、ヘッダーのことを何とかすっきり理解できないものかと考えて色々調べていたんですが、私がヘッダーのことを理解できたのは、「TCP/IP 4階層モデル」を知った時でした。まぁこの時点でちゃんと基礎から勉強してなかったのがバレバレなんですが、お察しくださいませ。
TCP/IP 4階層モデルは、下記リンク先の記事を参照ください。
TCP/IP 4階層モデルとは? | Think IT(シンクイット)
https://thinkit.co.jp/story/2015/04/30/5800
これを見てはっと気が付いたんですよ。各種ヘッダーは、以下のように整理・分類できるという事に。
・ehternetヘッダー=ネットワークインターフェイス層
・IPヘッダー=インターネット層
・TCP or UDPヘッダー=トランスポート層
・データ部分=アプリケーション層
これに気が付いてからは、ヘッダー構造への理解が加速しましたね。上記4つの領域が基本となってインターネットの通信は成り立ってて、それ以外の場合、例えばPPPoEとかIPsecとかはヘッダーが付いたり外れたりしてるだけなんだと理解できたんですよ。このことを理解してからネットワークの参考書読んだら、きっちりTCP/IP 4階層モデルのこと書いてあるし……はい私のただの不勉強ってことですよね。分かっております。
ただ、この事実に気が付いた経緯は、誰かの参考になると思います。もしあなたが不勉強のままで、ヘッダー構造を理解できていないなと感じていたら、TCP/IP 4階層モデルを勉強して、パケットキャプチャとにらめっこしてみてください。もしかしたら、ぐーんとネットワーク技術のことが理解出来て、ネットワークが楽しくなるかもしれません。