tcp/ip学习笔记--第29章 NFS network file system

来源:互联网 发布:宋代权知开封府事 编辑:程序博客网 时间:2024/06/05 15:53

简介

NFS是一个广泛应用的提供透明的远程存取文件的程序。透明的意思是说,应用程序在操作文件时,并不感知这个文件是在远程主机上,由系统内核检测发现文件在远程主机上,并远程进行操作,将结果返回给应用程序。NFS应用的一个重要的基础RPC。


RPC remote procedure call

作者不直接开始讲NFS,而是花了较大篇幅来讲RPC,说明这个RPC确实很重要。开始看了很久,看的一塌糊涂,完全没明白作者在讲什么,后面终于理出了一些思绪,感觉又挺简单。

直接说我的理解吧:

假设我们要在编写一个函数read,这个函数的作用是读取一个文件的内容:

public byte[] read(String file);

假如这个文件在本机器上,直接去读取相应的文件即可。

那么如果这个文件在远程机器上,应该怎么办呢?RPC的思路就是,将这个read这个函数调用发送到文件对应的远程主机上去执行,将执行的结果返回。拿到函数结果之后,read函数再将结果返回给调用read函数的应用程序。这其中当然会涉及到,怎么对程序编号,函数编号,怎么表示参数,怎么表示结果,怎么将请求发送到对应主机。这就是系统RPC要解决的问题。


SUN RPC

讲的是一些关于具体怎么表示的细节,由于我们并不在此处进行编程实践,略过不表。


Port Mapper

RPC程序可能会有很多,为每个RPC程序设置一个知名的端口号供客户端程序去访问并不是一个好的解决方案。解决方法是,使用临时端口。

port mapper就是用来专门管理RPC程序名字,版本,端口号的程序。当系统启动后,这个程序就会启动,它有知名的端口,TCP和UDP都是111。RPC server程序启动起来以后,就会去向port mapper注册自己的端口号,而且可以注册不同的版本。这样客户端程序就可以通过向port mapper查询,获得server端的端口号,然后进行访问。


NFS protocol

file Handles 句柄

NFS的客户端保存文件的句柄,要对文件进行相应的操作时,将句柄发送给服务端,唯一识别相应的文件。而且句柄对客户端来说是不透明的,并不知道句柄中存储的是些什么内容。


Mount Protocol

应用程序要像能够操作本地文件一样操作远程主机上的文件的前提是这个文件被挂载到了本地机器上。

挂载程序也是一个RPC程序,独立于NFS程序。


NFS proredures

NFS提供了15个程序,分别提供不同的功能。比如GETATTR,SETATTR,LOOKUP,READ,WRITE,LINK,READLINK。

虽然NFS被设计成可以在任意系统之间工作,但是这有些程序只为unix系统所特有。



Examples


阅读全文
0 0
原创粉丝点击