PPP
2つの機器を1対1でつなぐ回線の上で使う、データリンク層のプロトコル。回線の確立、認証、ネットワーク層の設定をまとめて行える。
イマシルちゃんの解説
イーサネットは、たくさんの機器が同じネットワークにつながる前提の仕組みだったよね。
でも、2台だけを1本の回線でつなぐなら、もっとシンプルでいいんだ。
そこで使われるのがPPP!
「つなぐ準備」「本人確認」「IPアドレスなどの設定」を順番にこなしてくれるから、
プロバイダにつなぐときなんかに大活躍してきたんだよ。
より深い解説
定義
PPP(Point-to-Point Protocol)は、RFC 1661で定められた、2点間(ポイントツーポイント)の回線で使うデータリンク層のプロトコルである。ダイヤルアップ回線のような交換回線でも、専用線でも使える。また、送信と受信を同時に行う全二重の回線を前提にしている。
非同期(調歩同期)の回線と同期の回線の両方に対応しており、フレームの形はHDLCをもとにしている。
接続のフェーズ
PPPは、次のフェーズを順に進んで通信を始める。
| 順番 | フェーズ | 使うプロトコル | 行うこと |
|---|---|---|---|
| 1 | リンク確立 | LCP | 最大受信単位(MRU)や、使う認証方式などを相手と取り決める |
| 2 | 認証(省略可) | PAP、CHAP | 接続してきた相手が正しい利用者かを確かめる |
| 3 | ネットワーク層プロトコル | NCP(IPならIPCP) | IPアドレスの割り当てなど、ネットワーク層の設定を行う |
| 4 | 通信 | データを送受信する | |
| 5 | リンク終了 | LCP | 回線を切断する |
認証は、リンク確立フェーズの後に行う。LCPで「どの認証方式を使うか」を取り決めてから、その方式で認証する流れである。
フレームの構造
| フィールド | 長さ | 内容 |
|---|---|---|
| フラグ | 1バイト | 0x7E。フレームの区切り |
| アドレス | 1バイト | 0xFF固定(1対1なので宛先を区別する必要がない) |
| 制御 | 1バイト | 0x03固定 |
| プロトコル | 2バイト | 中身の種類。0x0021=IPv4、0xC021=LCP、0xC023=PAP、0xC223=CHAP、0x8021=IPCP |
| 情報 | 可変 | データ本体 |
| FCS | 2または4バイト | 誤り検出 |
PPPoE
PPPoE(PPP over Ethernet、RFC 2516)は、PPPのフレームをイーサネットの上で運ぶ方式である。光回線などのインターネット接続で、プロバイダが利用者を認証し、IPアドレスを割り当てるのに広く使われてきた。
PPPoEでは、イーサネットのデータ部にPPPoEヘッダー(6バイト)とPPPのプロトコルフィールド(2バイト)が入るため、IPパケットの最大長(MTU)は 1500 − 8 = 1492バイトになる。この差を考えずに大きなパケットを送ると、一部のWebサイトだけ表示できないといった障害の原因になる。