ketyiaの学んだこと議事録

このサイトでは学んだことを記事にまとめていきます

パケットの中身を見てみよう!

こんばんは!

今回はプログラミングから離れて、ネットワークに流れているパケットってどういう構成になっているの?ということをまとめていきます!

下記の流れでまとめていきます!

・パケットって何?
IPv4パケット構造のフォーマットってどうなってるの?
Wiresharkで実際に見てみよう!

 

パケットって何?

 

データを通信するときに分割されたデータを「パケット」と言われています。

パケットの中には、送信元や宛先などの情報が入っていて、それらの情報を元にデータが送られます。データを受け取る時には、分割にされたこの「パケット」を元に戻して、通信成功となるわけです!

 

IPv4パケット構造のフォーマットってどうなってるの?

 

「パケットはデータを分割しているんだね!いや、なんでそんなことできるん?」
と思うかと思います!←自分だけ?

それはパケットの構造(フィールド)によって、情報をまとめられているから可能となっているのです!

そのパケットはどのような構造になっているのかをまとめていこうと思います!

適当ですが、パケットのフォーマットは下記の図の様になっています。

 

 

では、それぞれを簡単に記載していきます!

Versionフィールド

IPのバージョンを表しています。

IHLフィールド

32ビットを基準としたIPヘッダの長さを表しています。

 

Type of Serviceフィールド

IPパケットの品質(優先度)の区別を表しています。

 

Total Lengthフィールド

ヘッダを含むIPパケット全体の長さを表しています。

 

Identification ,Flags ,Fragment Offsetフィールド

パケットを分割、再構成する際に使用する情報を表しています。

 

Time to Liveフィールド

パケットのループを防ぐためのカウントを表しています。

 

Protocolフィールド

プロトコルを識別する情報を表しています。
以下が例です!
1番:ICMP
6番:TCP
17番:UDP

 

Header Checksumフィールド

IPパケットの伝送エラーがないかチェックする情報を表しています。

 

Source Addressフィールド

送信元IPアドレスの情報を表しています。

 

Destination Address フィールド

宛先IPアドレスの情報を表しています。

 

Optons , paddingフィールド

オプション(付加情報)の情報を表しています。paddingで32ビットに調整されます。
一般的には、省略されることが多いですが、ルーティングの指定等に使われています。

 

Dataフィールド

IPパケットとして運ばれるデータを表しています。

 


とこのような構成になっています!
パケットって、分割しているとしても、しっかりとした情報で詰め込まれていますね~

 

Wiresharkで実際に見ていこう!

 

では、そのパケットの中身をWiresharkで見てみましょう!

手順としては、下記を行いました!
①パケットトレーサーを起動
localhost(127.0.0.1)宛てへpingを流す ping -n 3 127.0.0.1
③②のやり取りをパケットトレーサーで確認する

取れたキャプチャはこちらになります!
※念のため、画像にモザイク入れさせてもらいます。。気になる方は、実際に確認してみると楽しいかもです!


パケット内のフィールドをすべて確認することができました!
※「option」と「padding」以外です。


パケットって、一見難しそうだなーと避けていたところがありますが、
こうして実際に確認してみると理解できて楽しいなと感じました~

 

今回はこんな感じです~
ここまで読んでいただきありがとうございました!

 

summarized in English

I did this using an wireshark to see what was in the packets.
The packet looks difficult at first glance, but I found it quite interesting when I looked at the contents!
I'm going to touch a lot of things in the future.