Table of Contents
Ethernet
- Ethernetとは?
- Ethernetのフレームと各要素の役割
Ethernetとは
家庭やオフィスなどで使われているローカルエリアネットワーク(内部ネットワーク)のプロトコルを指している。物理層とデータリンク層のデータ転送方式とフレームを規定している。
Ethernetのフレームと各要素の役割
フレームは送受信データの型のこととして理解する。
- プリアンブル(前置き)
送信デバイスが受信デバイスに「送信するよ」を知らせるフィールド。
形は「10101010」7個+「10101011」1個(8バイト、64ビット)で、
その特殊な形で受信側は「データが届く」と判断できる。 - 宛先、送信先MACアドレス
デバイスごとにMACアドレスは違うので、一意性があり、ネットワークインターフェースカードなどに埋め込まれている。
その6バイト、48ビットの識別IDで、受信側は受信したデータが自分宛なのか判断できる。違う場合、廃棄する。 - タイプ
ネットワーク層でどのプロトコルを使っているのかを表す識別ID(6バイト、48ビット)。IPv4プロトコルだと0X0800、ARPプロトコルだと0X0806になる。 - ペイロード
データそのものを表す。長さには46バイト~1500バイトという範囲がある。
データは46バイト以下の場合、足りない分はパディングで補足する。
1500バイト以上の場合、余った分は別のフレームで発送する。 - FCS
ペイロードが送受信中に壊れたかどうかをチェックするためのフィールド(32ビット、4バイト)。送信側ではペイロードに対して、計算を行い、その結果を格納する。受信側ではもう一度ペイロードに対して計算を行い、その結果と送信側で出た結果と一致なのかを見る。違う場合、廃棄する。
Ethernetにより拡張されたプロトコル–PPPoe
- PPPoeとは
- PPPoeの動作
PPPoE(Point-to-Point Protocol over Ethernet)はEthernetでカプセル化したPPPということを指している。
そもそもPPPは一対一で通信路を作り、その上でIPパケットを送信するプロトコルだ。
PPPの役割はLCP(Link Control Protocol)、NCP(Network Control Protocol)、CHAP(Challenge Handshake Authentication Protocol)という三つのプロトコルで成り立っている。それぞれの役割は下記通り、
LCP:リンクの接続の管理
NCP:ネットワーク層とのネゴシエーションの管理
CHAP:ユーザ、パスワードの認証
例として、旧式のダイヤルアップ接続はPPPを利用していた。リモートで企業のネットワークに接続する用のVPNにも使われている。
PPPoEは、ISP(インターネットサービスプロバイダー)と接続する際に使用され、複数のユーザー認証とセッション管理を行うことができる。
PPPoeの動作
sequenceDiagram participant クライアント participant PPPoEサーバー Note over クライアント, PPPoEサーバー: ディスカバリステージ クライアント->>PPPoEサーバー: PADI(サービス発見要求)<br>「PPPoEサーバーはどこ?」 PPPoEサーバー->>クライアント: PADO(サービス発見応答)<br>「ここにいるよ」 クライアント->>PPPoEサーバー: PADR(サービス要求)<br>「接続してください」 PPPoEサーバー->>クライアント: PADS(サービス確認)<br>「接続します」 Note over クライアント, PPPoEサーバー: セッションステージ クライアント->>PPPoEサーバー: LCP(リンク設定要求)<br>「リンク設定を始めます」 PPPoEサーバー->>クライアント: LCP(リンク設定応答)<br>「リンク設定を承認します」 クライアント->>PPPoEサーバー: 認証要求(CHAP/PAP)<br>「ユーザー認証してください」 PPPoEサーバー->>クライアント: 認証応答<br>「認証成功」 クライアント->>PPPoEサーバー: IPCP(IP設定要求)<br>「IPアドレスを設定してください」 PPPoEサーバー->>クライアント: IPCP(IP設定応答)<br>「IPアドレスを設定します」 クライアント->>PPPoEサーバー: データ通信<br>「データを送信します」 PPPoEサーバー->>クライアント: データ通信<br>「データを受信します」 クライアント->>PPPoEサーバー: LCP終了要求<br>「セッションを終了します」 PPPoEサーバー->>クライアント: LCP終了応答<br>「セッションを終了しました」
MACアドレスを求める用のプロトコル–ARP
レイヤ2で通信する時には、MACアドレスが必要だが、宛先のIPアドレスがわかっているが、MACアドレスがわかっていない場合、ARPプロトコルでMACアドレスを探し出す。
送信側はブロードキャストで「このIPアドレスアドレスを持っているデバイスがいるの?」と送信する。
そのIPアドレスを持っている受信側だけは返信し、フレームの送信元に自分のMACアドレスを付けるので、これで最初の送信側は宛先のMACアドレスを得て、もともと送信したいフレームにつけて、送信する。
sequenceDiagram participant 送信側 participant 受信側 Note over 送信側: 宛先IPアドレスはわかっているが、MACアドレスが不明 送信側->>受信側: ARPリクエスト(ブロードキャスト) Note over 受信側: 自分のIPアドレスと一致する場合 受信側->>送信側: ARPリプライ(ユニキャスト、「私です。これが私のMACアドレスです」) 送信側->>送信側: ARPリプライを受信し、宛先MACアドレスを取得 送信側->>受信側: もともと送信したいフレームを送信(MACアドレスを付与して)