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 ファイル属性の変更