はじめに
PPPという名前は、ルーターの設定やPPPoEの説明で見かけることがあります。しかし、Ethernetと何が違い、LCPやNCPが何をしているのかは分かりにくいところです。
PPP(Point-to-Point Protocol)は、2つの機器を1対1で結ぶポイントツーポイントリンク上で、IPなどのネットワーク層プロトコルのデータを運ぶためのデータリンクプロトコルです。通信を始める前にリンクそのものを設定し、必要に応じて相手を認証し、その後に利用するネットワーク層プロトコルを設定します。
この記事では、PPPの役割と、LCP・認証・NCPを経てデータ通信へ進む流れを中心に解説します。
この記事で分かること
- PPPがどのような通信で使われるプロトコルか
- LCPとNCPがそれぞれ何を設定するのか
- PAPとCHAPによる認証の基本的な違い
- PPPとPPPoEの関係
PPPとは
PPP(Point-to-Point Protocol)は、2つの機器を1対1で接続するポイントツーポイントリンクで、ネットワーク層のデータを運ぶためのデータリンクプロトコルです。OSI参照モデルでは第2層のデータリンク層に位置します。
PPPには、ネットワーク層のデータをカプセル化する仕組み、データリンク接続を確立・設定するLCP(Link Control Protocol)、ネットワーク層プロトコルごとの設定を行うNCP(Network Control Protocol)の3つの要素があります。
Ethernetも上位層のデータをリンク上で運ぶデータリンク技術ですが、PPPは1対1のポイントツーポイントリンクを前提とし、リンクの確立や設定を行う仕組みを持つ点が特徴です。データリンク層全体の役割は「データリンク層とは?MACアドレスやフレームの役割を分かりやすく解説」で解説しています。
PPPで通信を始める流れ
PPPでは、物理的に接続しただけで直ちにネットワーク層のデータを送るのではなく、リンクの設定から順に通信可能な状態を作ります。基本的な流れは、LCPによるリンク確立、必要に応じた認証、NCPによるネットワーク層の設定、データ転送です。
LCPでデータリンク接続を確立する
最初にLCPを使ってPPPリンクを確立します。LCPは、カプセル化に関するオプションや受信できる最大サイズなどを相手と調整し、リンクが通信に使える状態かを確認します。また、必要な場合はどの認証方式を使うかもLCPの設定項目として取り決めます。
LCPはリンクを開始するときだけでなく、接続を終了するときにも使われます。つまり、PPPにおけるデータリンク接続そのものを管理する役割を持っています。
必要に応じて相手を認証する
LCPで認証を使用することが決まった場合は、ネットワーク層の通信を始める前に相手を認証します。代表的な方式がPAPとCHAPです。
| 方式 | 基本的な仕組み | 特徴 |
|---|---|---|
| PAP | IDとパスワードを使って認証する | パスワードを平文で送るため、認証方式としては弱い |
| CHAP | 相手から送られたチャレンジと共有している秘密情報から応答値を計算する | 秘密情報そのものをリンク上へ送らずに認証できる |
CHAPは「毎回パスワードを変更する方式」ではありません。認証側がチャレンジを送り、相手側がチャレンジと共有秘密から計算した応答を返し、その結果を照合するチャレンジレスポンス方式です。
NCPでネットワーク層を設定する
認証が完了した後、または認証を使用しない場合は、NCPを使って実際に利用するネットワーク層プロトコルを設定します。
NCPは1つの特定プロトコル名ではなく、ネットワーク層プロトコルごとに用意される制御プロトコルの総称です。たとえばIPv4をPPP上で利用する場合には、IPCP(Internet Protocol Control Protocol)を使ってIPに必要な設定を行います。
NCPによる設定が完了すると、そのネットワーク層プロトコルのデータをPPPリンク上で送受信できるようになります。
PPPのフレームは何を運ぶのか
PPPでは、フレーム内のProtocolフィールドによって、後続のInformationフィールドに何が格納されているかを識別します。そのため、LCPやNCPの制御情報だけでなく、IPなどのネットワーク層データも同じPPPの仕組みで運べます。
PPPをHDLCに似た形式でフレーミングする場合は、フレームの開始・終了を示すFlag、Address、Control、Protocol、Information、誤り検出に使うFCSなどで構成されます。ただし、送信データ中の特殊な値を区別するための透過化処理はリンク方式によって異なります。非同期リンクなどではオクテット単位の処理、ビット同期リンクではビット単位の処理が使われるため、「PPPでは常に5個の1の後へ0を挿入する」と一律には説明できません。
PPPoEとは
PPPoE(PPP over Ethernet)は、PPPをEthernet上で利用するための方式です。Ethernet上で通信相手を見つけてセッションを確立するDiscovery段階と、その後にPPPの通信を行うPPP Session段階があります。
PPPoEを利用すると、Ethernetを使う環境でも、PPPが持つリンク設定や認証などの仕組みを利用できます。PPPそのものとPPPoEは同じものではなく、PPPoEはPPPをEthernet上へ載せて利用するための方式と捉えると整理しやすくなります。
まとめ
PPPは、2つの機器を1対1で接続するポイントツーポイントリンクで、ネットワーク層のデータを運ぶためのデータリンクプロトコルです。
通信を始めるときは、LCPでデータリンク接続を確立し、必要であればPAPやCHAPで相手を認証します。その後、NCPで利用するネットワーク層プロトコルを設定すると、IPなどのデータを送受信できるようになります。
PPPを理解するときは、単なるフレーム形式として覚えるのではなく、「LCPでリンクを整え、必要に応じて認証し、NCPで上位プロトコルを使える状態にする」という流れを押さえることが重要です。