イーサネットのフレームについての情報を整理しました。
参照サイト
http://ascii.jp/elem/000/000/427/427324/
参照サイト
図解!ネットワークの仕組み
主にEthernet Ⅱ(DIX)のフレーム形式と
IEEE802.3のフレーム形式が有る。
プリアンプル部 プリアンプル(64bit)
ヘッダ部 宛先MACアドレス(48bit) | 発信元MACアドレス(48bit) | タイプ(16bit)
データ部 データ(46~1500byte)
FCS部 FCS(32bit)
プリアンプル部 プリアンプル(56bit) | SFD(8bit)
ヘッダ部 宛先MACアドレス(48bit) | 発信元MACアドレス(48bit) | 長さ/タイプ(16bit)
データ部 データ(46~1500byte)
※宛先SAP、発信元SAP、制御、データ、パディングが有る。
FCS部 FCS(32bit)
今となっては10BASEのための互換性のために残してるだけ。
Wiresharkで通常の方法でパケットキャプチャしても載ってこない。
最初に有るもの。
受信側がデータを受け取る準備をするための信号(同期信号)のこと。
7バイト。(=56ビット)
フレーム開始部。
Start Frame Delimiter。
1バイト。(=8ビット)
48ビットのユニークな値。
※0か1が48個並んでいるって言うこと。24個目まではベンダー固有の値。
例 000000001111111100000000111111110000000011111111
※それを、8ビットずつに区切る。
1~8個目、9~16個目、17~24個目、25~32個目、33~40個目、41~48個目。
※で、それらを2進数から16進数に変換する。それが馴染みのあるMACアドレス。
1536(0x0600)以上の場合はタイプを表す。
0800(0x0800)はIPv4、
0806(0x0806)はARP、
86dd(0x86dd)IPv6。などなど。
それ以下の場合はデータ部の合計バイト数を表す。
Ethernet Ⅱ フレームの場合、
ARPパケットならばタイプ0806の後に
Hardware type、Protocol type、
Hardware size、Protocol sizeと続いていく。
IPv4の場合(ICMP,TCP,HTTP,DNSパケット等々)ならば
タイプ0800の後にHeader length、
Differentiated services Field、
Total lengthと続いていく。
0x06がIP。
IPなどの上位層のパケットが入る。
水増し、詰め物、などの意味。
データを固定長として扱いたい時に
無意味なデータを追加して長さを合わせる。
送信側は、フレームの最初からデータ部最後迄の
CRC値を計算し、FCSフィールドに入れる。
受信側はフレームのCRC値を計算したやつと
表記されてるFCSフィールドのCRC値を比較して誤り検出を行う。