PPP
PPPはP2Pな専用線、電話回線、ISDN, ATMで様々なプロトコルをカプセル化して対向におくるためのプロトコル。
カプセル化だけでなく次の機能も提供する。
認証
圧縮
エラー検知
マルチリンク
コールバック
現在だとPPPそのものが使われるというよりはPPPの認証機能をつかうためだけに
ethernet上でPPPを使うPPPoEが使われるケースをよく見る。 PPP構成
PPPはLCP、NCPsの二つのプロトコルをリンク管理、データ管理のために利用する。
LCP(Link Controlr Protocol)はコネクションの確立、切断、認証プロトコルの設定など行う。
NCP(Network Control Protocol)はIPがペイロードならIPアドレスやTCP/IPのヘッダの圧縮規定を設定する。
LCP
LCPパケットには次の三つの分類がある。
Link Configuration packet:リンク確立用 Configure-Request, Configure-Ack, Configure-Nak,Configure-Rejectの4種類が存在
Link Terminateion Packet: リンク切断用 Termination-RequestとTermination-Ackの2種類が存在
Link Maintenace Packet : debug用。
PPP接続フロー
PPPは次のフローでPPP接続を確立してデータをおくる。
https://gyazo.com/d1fab66a275dc91ba57cb2be5fa444c7
PPP format
PPPは複数のタイプのペイロードを載せるためにこのようなフォーマットになっている。
code:format
+----------+-------------+---------+
| Protocol | Information | Padding |
| 8/16 bits| * | * |
+----------+-------------+---------+
Protocol
Protocol fileadはInforamtion fieldのカプセル化したペイロードデータがどのようなタイプかを示す。
Infromation filedのタイプとしては例えばLCP、IP、chap、papが挙げられる。
Information
0以上のoctetsで構成されるフィールド。ここに実際のペイロードデータをカプセル化する。
Protocolで示したタイプのデータが格納される。このフィールドの最大値はMRU(Maximum Recevie Unit)である。MRUは通常は1500 octetsである。
padding
information filedがMRU以内の場合に必要なら追加で任意のオクテットを後ろにパディングしてよい。
PPP Link State Overview
PPPでのP2P接続の状態遷移はつぎのとおり
code:=
+------+ +-----------+ +--------------+
| | UP | | OPENED | | SUCCESS/NONE
| Dead |------->| Establish |---------->| Authenticate |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| FAIL | FAIL | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| DOWN | | | CLOSING | | |
+------------| Terminate |<---+<----------| Network |<-+
| | | |
+-----------+ +---------+
Link Dead(physical-layer not ready)
P2P 接続の最初と最後は必ずLink Dead。
リンクが挙げられるような外的なイベント(管理者からの設定、物理的な対向機器の検知)つまり物理的にリンクを立ち上げられるような状態になったら自動的にEstablishに移行する。
Establish
PPPを開始可能な状態。
この状態になったらLCPを互いに対向におくる。
LCPのACKが返ってきたらAuthenticateに移行する。
Authentication
実はAuthenticationは必須ではないが、もし必要ならこの状態に移行する。
PPP自体は認証プロトコルの機能ももってない。ただ認証プロトコルを利用するだけである。
利用される認証プロトコルとしてPAP,CHAPがある。現在だと暗号化するCHAPが一般的。
認証が成功すればNetworkに移行する。
Network
実際のPPPによる通信をする状態。
はじめにIP、AppleTaslkといったペイロード部分の制御のためのNCPを送る。
NCPのメッセージングが終了したら実際にNCPで通知しあったタイプのデータをペイロードに載せて通信。