网络文件系统协议( 九 )


安装协议与NFS协议保持分离,使得在不改变NFS服务器协议的情况下很轻易加进新的访问检查和确认的方法 。
注重:这个协议的定义暗示着服务器有状态,因为服务器保持着一个客户端安装请求的列表 。安装列表信息对客户机或者服务器的功能没有危害性 。仅仅建议在服务器出现故障时,给客户机可能的警告 。
安装协议的第一版与NFS协议的第二版一起使用,在两个协议中唯一通信的信息是"fhandle"结构 。
A.2RPC信息
认证
安装服务仅使用AUTH_UNIX和AUTH_NONE类型的认证
传输协议
安装服务被UDP和TCP中支持 。
端口号
与服务器的端口映射器协商,来发现安装服务注册的端口号 。
A.3XDR结构的尺寸
这里有使用在此协议中不同的XDR结构的尺寸,用十进制表示 。
/*路径名参数的最大字节数*/
constMNTPATHLEN=1024;
/*一个名字参数的最大字节数*/
constMNTNAMLEN=255;
/*不透明文件句柄的字节数*/
constFHSIZE=32;
A.4基本数据类型
这一节描述使用在安装协议中的数据类型 。在许多情况下它们与使用在NFS中的数据类型相似 。
A.4.1.fhandle
typedefopaquefhandle[FHSIZE];
"fhandle"类型是服务器传递给客户端的文件句柄 。所有文件操作都使用文件句柄来引用文件或者目录 。文件句柄包含着服务器需要的区分单个文件的信息 。
这与NFS协议第二版中的"fhandle"XDR定义一样;见在"基本数据类型"之中的"2.3.3.fhandle" 。
A.4.2.fhstatus
unionfhstatusswitch(unsignedstatus){
case0:
fhandleDirectory;
default:
void;
}
"fhstatus"类型是一个联合结构 。假如返回的"status"为0,调用执行成功,接着的是给"directory"分配的文件句柄 。一个非0值表示一些种类的错误 。在这种情况下,status是一个UNIX错误号 。
A.4.3.dirpath
typedefstringdirpath;
"dirpath"类型是一个目录的服务器的路径名 。
A.4.4.name
typedefstringname;
"name"类型是一个使用在不同名字中的二进制串 。
A.5.服务器过程
下面的部分定义了安装服务器提供的RPC过程 。
/*
*安装程序的协议定义
*/
programMOUNTPROG{
/*
*安装协议的第一版与NFS协议的第二版使用在一起 。
*/
versionMOUNTVERS{
voidMOUNTPROC_NULL(void)=0;
fhstatusMOUNTPROC_MNT(dirpath)=1;
mountlistMOUNTPROC_DUMP(void)=2;
voidMOUNTPROC_UMNT(dirpath)=3;
voidMOUNTPROC_UMNTALL(void)=4;
exportlistMOUNTPROC_EXPORT(void)=5;
}=1;
}=100005;
A.5.1.不作工作
voidMNTPROC_NULL(void)=0;
这个过程什么也不作,在所有的RPC服务中使用它来答应服务器响应测试和定时 。
A.5.2加入安装条目
fhstatusMNTPROC_MNT(dirpath)=1;
假如响应状态"status"是0,那么响应的"directory"包含着目录"dirname"的文件句柄 。这个文件句柄可能使用在NFS协议中 。这个过程也在客户安装的"dirname"安装列表中加一个新的项目 。
A.5.3返回安装条目
struct*mountlist{
namehostname;
dirpathdirectory;
mountlistnextentry;
};
mountlistMNTPROC_DUMP(void)=2;
返回一个远程安装文件系统的列表 。"mountlist"对每一对"hostname"和"directory"都包含着一个条目 。
A.5.4.删除安装条目
voidMNTPROC_UMNT(dirpath)=3;
从输入"dirpath"中删除安装列表条目
A.5.5.删除所有的安装条目
voidMNTPROC_UMNTALL(void)=4;
为客户端删除所有安装列表的条目
A.5.6.返回输出列表
struct*groups{
namegrname;
groupsgrnext;
};
struct*exportlist{

推荐阅读