はじめに
ネスぺを勉強していると、PPPという古いプロトコルを目にします。
What is PPP?
PPP(Point-to-Point Protocol) はインターネット標準化組織 IETF(Internet Engineering Task Force) により標準化されたプロトコルで、OSI参照モデルの第2層に位置します。1990年代から2000年にかけてダイアルアップ接続やADSL接続で主に使われていたプロトコルです。
電話回線を利用した従量課金制を支えるプロトコルだったこともあり、PPPには以下の特徴があります。
- コネクション型である。
- 認証を標準装備している。
- 上位層の役割を一部肩代わりする(e.g. IPの時、IPアドレスの自動割り当てを行う)。
これは想像ですが、第2層プロトコルに認証を標準搭載し、かつコネクション型にすることによりアカウントごとの通信量を識別しやすくする目的があったのだろうと思います。
現在も PPPoE というプロトコルとして、イーサネットを介した認証・コネクション管理・課金機能を制御するために利用されています。
押さえる用語と関係性
基本概念
PPP は OSI参照モデルにおける第2層の コネクション型プロトコル です。PPPは役割に応じて2種類のパケットに分類されます。
- LCP (Link Control Protocol)
- NCP (Network Control Protocol)
LCP
LCPは 接続を確立する際に やり取りされるパケットです。 コネクションの確立/切断 や、 ユーザ認証 を実施します。後に説明するNCPとは異なり、上位層に依存しないプロトコルです。
LCPによる通信確立には2つのフェーズがあります。
- リンク確立フェーズ
- 認証フェーズ
はじめに リンク確立フェーズ でリンクを確立し、その後 認証フェーズ でユーザ認証を実施します。
認証フェーズでは以下のように一般的な認証用プロトコルが利用されます。
- PAP (Password Authentication Protocol)
- CHAP (Challenge Handshake Authentication Protcol)
チャレンジレスポンス方式ってなんだっけ?
CHAPはチャレンジレスポンス方式を実装したプロトコルです。リプレイ攻撃を防ぐため、毎回異なるサーバからの情報とパスワードを演算した結果を照合します。
- サーバからクライアントに「 チャレンジ 」と呼ばれる文字列を送信。
- ユーザがパスワードを入力。
- クライアント側でチャレンジ・パスワードを演算。結果をサーバに送信(①)。
- サーバ側でも独立して演算を行います(②)。
- ①と②を照合し、同一であれば認証成功です。
チャレンジはノンスとも呼ばれています。
NCP
NCP(Network Control Protocol) は、上位層(IPなど)の設定を肩代わりします。
具体的には、DHCPの代わりにIPアドレスの割り当てをしたり、DNSサーバ通知をしたりします(L2なのにややこしいですよね)。特に上位層がIPだった場合、NCPは IPCP(Internet Protocol Control Protocol) として振る舞い、先述の役割を果たします。
フレームフォーマット
PPPはMTU=1500のプロトコルで、フレームは以下のフィールドで構成されています。
| 順序 | 要素 | オクテット(具体値) |
|---|---|---|
| 1 | フラグ | 1(01111110) |
| 2 | アドレス | 1(11111111) |
| 3 | 制御 | 1(00000011) |
| 4 | タイプ | 2 |
| 5 | データ | ~1500 |
| 6 | FCS(チェックサム) | 4 |
| 7 | フラグ | 1(01111110) |
PPPはフレームの始まりを フラグ と呼ばれる1オクテットのフレームで表現します。1が6つ連続しています。
データ フィールドの中でたまたま1が6つ連続してしまうと区別できなくなるため、データフィールドの中では1が5つ連続したところで強制的に0が注入されます。受信者はこの0を削除し、元のデータを復元します。
また、 アドレス 、 制御 フィールドは常に同じ値が入ります。これは、PPPがHDLCという第2層プロトコルを模倣して作られたことによります。HDLCではこれらのフィールドに異なる値が入りますが、PPPでは変更する必要がないため固定値が入っています。
PPPoE
PPPoE (PPP over Ethernet)は、イーサネットでPPPの機能を利用するためのプロトコルです。 1999年にRFC2516として標準化されました。
イーサネットにはデフォルトで認証・コネクション管理・課金に必要な機能が実装されていません。そこで、PPPのフレームヘッダをイーサネットヘッダに合体させてしまったのがPPPoEです。
| 順序 | 要素 | オクテット |
|---|---|---|
| 1 | Ethernetヘッダ | 14 |
| 2 | PPPoEヘッダ | 6 |
| 3 | PPPヘッダ | 2 |
| 4 | データ | ~1492 |
| 5 | FCS | 4 |
各ヘッダの詳細は今回は割愛します。詳しくは先述のRFC等をご覧ください。
イーサネットと比較すると前述のPPP固有機能が付与される一方、PPPoEヘッダ・PPPヘッダが追加された分、MTUは1492に減少します。
#…PPP…ぴょんぴょんぴょんぴょん
参考文献
- 株式会社わくわくスタディワールド 瀬戸美月, 徹底攻略 ネットワークスペシャリスト教科書 令和8年度, 翔泳社, 2025, 782p.
- "WAN - HDLC と PPP", ネットワークエンジニアとして, https://www.infraexpert.com/study/wan6.html
- "【NTT西日本】PPP(Point-to-Point Protocol)|ICT用語集|法人・企業向けICTサービス・ソリューション", ICT用語集, NTT西日本, https://business.ntt-west.co.jp/glossary/words-00120.html
- "RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE)", IETF Datatracker, Internet Engineering Task Force, https://datatracker.ietf.org/doc/html/rfc2516
- "PPPoE(PPP over Ethernet)とは", ネットワークエンジニアとして
, https://www.infraexpert.com/study/wan9.html - "IPCPとは", IT用語辞典 e-Words, https://e-words.jp/w/IPCP.html
