トップ > スキル : ネットワーク > プロトコル(PPP)

ネットワーク

PPPの機能

PPPのヘッダ

PPPはレイヤー2のプロトコルなので、上位のレイヤー3をデータと見なし、その先頭部にヘッダを付けます。PPPヘッダは、2バイトしかなく、プロトコルIDと呼ばれる識別子です。ヘッダが2バイトしかない理由は、PPPは1対1の通信用として利用されるからです。つまり、通信相手は常に決まっているので、あて先や送信元に関するアドレス情報は必要ないからです。

PPPの4つの機能:交渉

では、PPPによる通信における4つの機能の動作を見てみることにします。PPPの通信が開始されるとまず交渉(ネゴシエーション)のプロセスを取ります。ネゴシエーションはLCPメッセージ・パケットを使います。LCPのおかげで通信条件を交渉で細かく決められるのはPPPのメリットとなるので、LCPがPPPでは最重要なものと言えます。

交渉で決める通信条件の中で最重要なのはパケット・サイズでMRU(maximum receive unit、最大受信単位)値と呼ばれるものです。MRUは自分が受け取ることが可能なペイロード・サイズ(データ部分の長さ)の最大値となります。MRUを通知するのは、相手に対して自分が意図したサイズ以下でパケットを送信してもらうことを伝えるためです。MRUは受信側が要求するものなので、お互いが相手に希望を伝えて交渉します。交渉が成立すると、相手が指定した最大長以下のサイズでパケットを送ります。IP通信では、なるべく大きなパケットを送ろうとしますが、実際に交換するパケット・サイズはMRUで決まります。MRU値のデフォルトは1500バイトですが、交渉次第では自由な値を取ることができます。例えば、低速回線では576バイト、ADSL回線では1500バイト弱、光ファイバなどの高速回線では4000バイト前後という設定が良くなされています。

交渉の流れを見てみると、まず通信を要求する側から要求パケットが届きます。ここにはMRU値など使いたいLCPオプションとその設定パラメータが入っています。もし、この中に要求パケットをもらった側がサポートしていないオプションが含まれていたら、それを拒否パケットで返します。すると要求側はサポートできるオプションだけにして再び要求パケットを送ってきます。このように、要求パケットの内容がすべて受け入れられるまで繰り返されます。受け入れ可能なら確認パケットを送り交渉成立となります。このときの確認パケットの中には、受け入れたオプションと設定パラメータが入っています。

また、要求パケットのオプションの利用をOKしても、条件を変えたいときは否認パケットを送ります。この否認パケットに、受け入れ可能なパラメータを入れておくと、要求側はこのパラメータを見て、その条件を使うかどうかを判断します。条件変更を受け入れる時は、再び受け入れたパラメータを格納した確認パケットを送り、合意したことを伝えます。

LCPのオプションいくつかありますが、よく使われるのはMRU設定、認証、マルチリンクです。最近の高速かつ高品質な回線では、オプションを取り入れても効果がないので、いくつかのオプションは使われない傾向にあります。

PPPの4つの機能:認証

認証機能は、アクセスしたユーザが正規のユーザかどうかを確かめる機能で、セキュリティや課金情報にも関係します。PPPの認証機能はLCPオプションの1つです。LCPネゴシエーションの時に認証機能を利用するかどうかを決め、使う場合はどの方式を取るのかを交渉します。そして、LCPネゴシエーションが終了したあとに認証プロセスが開始されます。

PPPでよく使われる認証方式はPAPとCHAPがあります。PAPのプロセスは、クライアントがユーザIDとパスワードを送り、サーバがあらかじめ登録しておいたユーザIDとパスワードと照合する単純な方式です。ただし、PAPには大きな問題点があります。それは、ユーザID、パスワードともテキスト・データで送られるので、途中でパケットを盗聴されればユーザIDとパスワードは第三者に知られることになります。よって、セキュリティ上あまり好ましくありません。

CHAPは、PAPの問題点を解決できる認証方式で、生のパスワードがネットワーク上を流れないような工夫がされています。

CHAPのプロセスはまずサーバ側から「チャレンジ値」と呼ばれる文字列が送られるところから始まります。このチャレンジ値を受け取ったクライアントは、自分の持っているパスワードとチャレンジ値からハッシュ関数を使って計算し、その答えをユーザIDと一緒にサーバに送ります。サーバ側でもユーザIDに対応するパスワードに対して同じ計算を行い、送られてきた答えと合致すれば、確認メッセージを送ります。このように、CHAPではパスワードを導き出せるデータをネットワーク上に流さないことに意味があります。たとえチャレンジ値と計算結果が盗聴されても、そこからパスワードを解析するのは極めて難しいです。

PPPの4つの機能:通知

認証が終了すると次にNCPネゴシエーションが行われます。NCPはレイヤー3プロトコルごとに定義されていているので、それに応じた通信条件をネゴシエーションすることになります。IP用のNCPであるIPCPを例に役割を見ていきます。IPCPの重要な役割は、IPアドレス関連の設定情報を通知することです。ようするに、クライアント側が利用できるIPアドレスと相手のIPアドレス、そしてDNSサーバのIPアドレスを通知してもらうことです。しかし実際には、IPCPの仕様にDNSサーバのIPアドレスを通知する規定は入っていません。DNSサーバのIPアドレスを通知する機能は、マイクロソフトによって独自に拡張されたものです。インターネットの標準にはなっていませんが、WindowsのPPPがこの機能を持っているので、ルータやサーバの多くがDNSサーバのIPアドレスを通知できるようになっています。

IPCPネゴシエーションのプロセスは、基本的にお互いが条件を提示し、譲歩しながら設定を詰めていきます。LCPとは異なり、IPCPの動作はサーバとクライアントで別々の振る舞いをします。なぜなら、サーバは自分のIPアドレスを伝えるだけですが、クライアントは自分のIPアドレス、デフォルト・ゲートウェイのIPアドレス、DNSサーバのIPアドレスが欲しいので、お互いが必要とするアドレス情報が違うからです。サーバが通知するIPアドレスは、クライアントから見るとデフォルト・ゲートウェイのIPアドレスとなるので、残りは自分のIPアドレスとDNSサーバのIPアドレスとなります。PPPには通知を依頼するためのメッセージは用意されていません。そこで、通知して欲しい項目のパラメータにダミー・アドレス(0.0.0.0)を入れて要求パケットを送ります。それを受け取ったサーバはそのアドレスは不適切であると判断し、正しい値を否認パケットに入れて伝えてくれます。こうすることによってサーバからIPアドレスを通知してもらうことができます。これは、条件変更のプロセスをうまく利用しているのです。

PPPの4つの機能:監視

NCPネゴシエーションが終了するとPPPの通信が始まります。PPPヘッダのプロトコルIDで運ぶデータの中身を知らせ合い、レイヤー3プロトコルの通信を仲介し、正確なデータ伝送を行います。

データ通信中にPPPが実行する機能に、データがちゃんとやりとりできる状態であるかの監視があります。監視機能は、まずリンクが生きているかどうかを監視したい側が、エコー要求のパケットを送り出し、片方がそのエコー要求を受け取るとすぐにエコー応答パケットを送り返します。エコー要求、応答パケットはLCPパケットです。監視したい側がエコー要求を送り、応答がなかったら何度か繰り返し、それでも応答がなかったらリンクが切れていると判断します。

一般的に、高速で信頼性が要求される回線ほどきめ細かな監視をするためエコー要求の送信間隔が短いです。低速回線では監視機能を全く使わないケースが多いです。なぜなら、電話やISDNの場合回線が切れるとすぐにわかるので、PPPレベルで監視する必要がありません。

【PPP:PPPの機能】