Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【NW】PPP

まえがき

この記事は、4年前に投稿したPPPに関する記事のリライトになります。

rennnosukesann.hatenablog.com

結構前に書いたもので内容うろ覚えだったので、復習も兼ねて再度調査してまとめ直してみました。

上記記事にない情報も追加したので、双方参照していただけると嬉しいです。

PPPとは

PPP(Point to Point Protocol)とはデータリンク層プロトコルであり、一対一でコンピュータを接続するためのデータリンク仕様を定義しています。

前回の記事で紹介したイーサネットは、物理層データリンク層にまたがる規格でした。PPPは物理層に該当する仕様はなく、純粋なOSI第二層データリンクプロトコルになります。

rennnosukesann.hatenablog.com

rennnosukesann.hatenablog.com

そのため、PPPをデータリンク層プロトコルとして採用した場合、物理層に該当する規格・プロトコルを別途選定する必要があります。その点で、PPPはイーサネットと比較して物理レベルでは柔軟と言えます。

LCP/NCP

PPPはLCP(Link Controll Protocol)とNCP(Network Controll Protocol)の2つのプロトコルに分類することができます。LCPは上位層のプロトコルに依存しないプロトコルであり、逆にNCPは上位層に依存するプロトコルになります。

PPPではデータ通信開始時、PPPレベルでのコネクションの確立を行います。コネクション確立時には認証、圧縮、暗号化の設定も行います。LCPはそれらの処理について責務を持ち、コネクションの確立・切断、プロトコルの設定、通信品質監視設定等を行います。

NCPは上位層のプロトコルに依存するため、ネットワーク層プロトコルによって定義が変わります。

PPPの認証方式

PPPでは、エンドポイント間のコネクション確立時に認証を行います。このとき、LCPの中で複数の認証方式から一つを採用します。PPPで利用される認証方式には、PAP(Password Authentication Protocol)とCHAP(Challenge Handshake Authentication Protocol)の二種類があります。

PAP(Password Authentication Protocol)

PAPはその名の通り、パスワードによる認証を行います。パスワードとIDを相手に送信することで認証を行うのですが、これらのデータは平文で送信されてしまいます。

CHAP(Challenge Handshake Authentication Protocol)

こちらはチャレンジレスポンス方式を利用した認証方式を採用します。

チャレンジと呼ばれる意味のないビット列から特定の関数を用いて新たな値Aを計算し、それを相手に送ります。相手は送信元と同じ関数を持っているので、もとのビット列から同じ計算を行い値Bを生成します。相手はAとBを比較し、一致していることが確認できたら認証を完了します。

チャレンジレスポンスでは毎回渡すビット列を変更しているので、PPPと比較して一回の認証に対する盗聴に強いという特徴を持ちます。ただし、共有する関数を第三者に知られていないということが前提になります。

PPPデータフレームフォーマット

PPPのデータフレームフォーマットは以下の様になっています。

f:id:rennnosukesann:20180722152907p:plain

フラグ

フレームの先頭・末尾に付加される、通信の開始・終了を表すビット列です。

アドレス

送信先アドレスを指します。基本的に、この領域には11111111(ブロードキャスト)が挿入されます。

制御

データリンクプロトコルHDLCで規定される「非番号制フレーム」を表す制御ビット00000011が挿入されます(PPPはHDLCを参考に作られている)。

データ

上位層プロトコルによるデータ・コンテンツを含む領域。

タイプ

データ部の上位プロトコルタイプが挿入されます。

FCS

フレームの破損検出を行うためのビット列です。

参考

(マスタリングTCP/IP 入門編 第5版)[https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0TCP-IP-%E5%85%A5%E9%96%80%E7%B7%A8-%E7%AC%AC5%E7%89%88-%E7%AB%B9%E4%B8%8B/dp/4274068765)

tech.nikkeibp.co.jp

milestone-of-se.nesuke.com