1 NFS报文分析 NFS 协议基于RPC 协议,每个NFS 报文都对应着一个RPC 报文类型
除 NFS 报文外,PORTMAP,MOUNT 等同 NFS 密切相关的报文也在分析范围内
除特别说明外,本次分析服务器 IP 为 192
120,客户端 IP 为 192
1 查询远程可挂载的目录 1
1 NFS服务未开启 如果服务器未开启 NFS 功能输入 showmount –e 主机名或 IP 则在终端显示: mount clntudp_create: RPC: Program not registered 主要交互流程: 客户端通过 TCP 与服务器的 Portmap 程序建立连接,尝试通过 TCP远程调用 GETPORT,服务器返回 MOUNT 功能为开启
然后客户端再次 尝 试 通 过UDP达 到 此 目 的 , 服 务 期 同 样 返 回PROGRAM_NOT_AVAILABLE
整个过程是基于RPC 的
2 NFS服务已开启 客户端首先通过PORTMAP 远程调用请求MOUNT 的端口
后面又重传两次,重传报文的XID 相同的,而服务器就是通过XID 来判断一个报文是否是另一个的REPLY
服务器得到请求后返回端口号 33394
客户端使用33394 端口来进行 EXPORT 类型 MOUNT 请求
服务器返回请求,内容如下: Procedure:EXPORT 下面的Value Follow s 代表 List 是否还有内容
在获取到这个 List 后会在终端显示: 1
2 挂载远程目录 挂载远程目录的过程最本质的是如何获得此目录在服务器上的文件句柄,我们在分析下面的交互时始终以此为中心
1 挂载不存在的目录 首先通过客户端通过一个基于 TCP 的RPC 获得MOUNT 的端口32771,之