読者です 読者をやめる 読者になる 読者になる

Works by ...

プログラミング関連でメモする

PPP(Point-to-Point Protocol) ってなんぞや?

network

書き始め一発からネットワークです。ネットワーク。 なんか間違いとかあったら指摘していただけると助かります。

PPPとは?

PPPはざっくりというと、2ノード間を一対一で接続するためのプロトコルです。 PPPは主に電話回線やISDN、専用回線やATM回線などの通信で使われます。OSI基本参照モデル第二層、データリンク層に位置するプロトコルです。

通常、LAN上では通信規格としてイーサネットが多く用いられており、MACフレームを使ったMACアドレス交換を行うことができます。これによりローカルな環境で相手先ノードを識別することができるのですが、WAN上ではそうもいきません。というのも、もしWANが公衆電話網であった場合などに、イーサネットを用いることができないからです。

そこでLANからWAN上へ、そして再びLANへとMACアドレスを運搬できるよう、PPPが用いられます。

PPPは隣接ノード間の情報のみを含みます。複雑な制御情報は含みません。そのおかげで、WAN形態の如何にかかわらずIPパケットをPPPにマウントし、送受信することができます。

データリンク層

データリンク層物理層の一段階上位の層であり、ローカルノード間の通信を定義するプロトコルの集合といえます。電気信号やケーブル規格云々は物理層に任せて、いざ通信しようというところはデータリンク層で定義してやろうという寸法です。このようにプロトコルを役割ごとにカテゴライズ・独立させることで、あるプロトコル層の変更が他のプロトコル層に影響を与えにくくできる、共通部分をくくりだしてインタフェースとして定義、互換性を持たせられるといったメリットを享受できます(このへんはOSIモデル全体の話になるので、後日まとめてみたいと思います)。

LCPとNCP

話が少しそれてしまいましたが、またPPPの話にもどります。

PPPはデータ転送を開始する際、事前にPPPレベルでのコネクションを2ノード間で張ります。その際の認証、圧縮、暗号化等の設定に用いるプロトコルがLCP(Linc Control Protocol)とNCP(Network Control Protocol)です。

LCPはコネクションの確立・切断、パケット長の設定、認証プロトコルの設定など、上位層に依存しない部分を規定します。一方NCPでは、IPアドレスTCP/IPヘッダ圧縮の設定を規定します。IPやTCPなどは上位層プロトコルですから、NCPは上位層に依存したプロトコルと言えそうです。

PPPの認証

PPPはコネクションを貼ります。ということは当然相手ノードが真正であることの確認が必要となります。 先程も述べたとおり、PPPはLCPでもって認証プロトコルを設定しています。ここで指定された認証規定がコネクションの際使われるわけですが、どのような認証プロトコルが存在するのでしょうか。代表的なものを見てみます。

PAP(Password Authentication Protocol)

認証のためのユーザIDとパスワードを平文で送信する、最も基本的なプロトコルです。平文なので、なんだか危なっかしい感じです。

CHAP(Challenge Handshake Authentication Protocol)

PAPの問題点を解消すべく考案されたのがこのCHAPです。チャレンジハンドシェイク方式を使って暗号化されたデータ通信を実現します。現在のPPP対応機器のほとんどがこのCHAPを採用しているそうです。

EAP(Extensible Authentication Protocol)

PAP,CHAPをさらに向上させたプロトコルです。認証方式を平文・MD5TLSワンタイムパスワードなどのなかから選択することができます。

PPPoE(Point-to-Point over Ethernet)

PPPをWAN以外でも使うプロトコルに、PPPoEがあります。

PPPoEはADSLやケーブルテレビなどのインターネットサービスでよく用いられます。元々LANであれば通常のイーサネットでも通信は可能です。安価で高速、使わない手はありません。しかしイーサネットでは認証ができない、コネクションの確立ができないなどの欠点がありました。

しかしこの欠点は、PPPで補うことができます。PPPのWANでの機能を、LANのイーサネット提供してやれば、認証もコネクションの確立も行うことができます。こうしてできたのがPPPoEです。

大まかなPPPのメモは以上です。 書いてるうちに色んなとこ掘り下げたくなったなあ