レイヤ2(データリンク層)


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>「セッションを終了しました」
クライアントPPPoEサーバーディスカバリステージPADI(サービス発見要求)「PPPoEサーバーはどこ?」PADO(サービス発見応答)「ここにいるよ」PADR(サービス要求)「接続してください」PADS(サービス確認)「接続します」セッションステージLCP(リンク設定要求)「リンク設定を始めます」LCP(リンク設定応答)「リンク設定を承認します」認証要求(CHAP/PAP)「ユーザー認証してください」認証応答「認証成功」IPCP(IP設定要求)「IPアドレスを設定してください」IPCP(IP設定応答)「IPアドレスを設定します」データ通信「データを送信します」データ通信「データを受信します」LCP終了要求「セッションを終了します」LCP終了応答「セッションを終了しました」クライアントPPPoEサーバー

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アドレスを付与して)
送信側受信側宛先IPアドレスはわかっているが、MACアドレスが不明ARPリクエスト(ブロードキャスト)自分のIPアドレスと一致する場合ARPリプライ(ユニキャスト、「私です。これが私のMACアドレスです」)ARPリプライを受信し、宛先MACアドレスを取得もともと送信したいフレームを送信(MACアドレスを付与して)送信側受信側

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index