9Pプロトコルの概要
9Pプロトコルは,通常,TCP/IPの上位層として実装されるが,信頼性と順序保証を持つトランスポートプロトコルであればよく,RUDPやPPP上に実装することも可能である.また,9P用に単純化したIL(Internet Link)プロトコルも存在する.
現在使われている9Pプロトコルは4th edition時に登場した9P2000である.9P2000では,それ以前に存在したファイル名が28バイトという制限をなくし,ファイル階層を効率的にたどるための拡張がなされた.また同時に複数のバージョンのプロトコルが存在することを考慮して,ネゴシエーションの仕組みが加わった.また,Unixから9Pプロトコルを利用するための拡張として9P2000.uプロトコルも存在する(Linux 2.6カーネルに9Pサポートが追加されたがこれは9P2000.uである).以降,断りのない限り9Pプロトコルは9P2000プロトコルを指すことにする.
9PプロトコルはクライアントからサーバへのリクエストであるTメッセージと,そのレスポンスであるRメッセージ,もしくはRメッセージの特殊系であるRエラーからなる.メッセージのオペレーションは,次に示すように14種類存在し,セッション,ファイル,メタデータの三つに分類できる.
クラス | オペコード | 説明 |
---|---|---|
session | version | パラメータネゴシエーション |
auth | 認証 | |
attach | コネクションの確立 | |
flush | リクエストのアボート | |
error | エラーの応答 | |
file | walk | パス名の検索 |
open | ファイルアクセス | |
create | ファイル生成&アクセス | |
read | ファイルからデータ転送 | |
write | ファイルへデータ転送 | |
clunk | ファイルの解放 | |
metadata | stat | ファイル属性の読込み |
wstat | ファイル属性の変更 |