Network File System 协议
应用场景:
版本:
- 1984 NFSv2
- 1995 NFSv3
- 2000 NFSv4
学习资料:
- RFC 1813
- 鸟哥 Linux
实验:
- NFS 服务器 ip: 10.32.106.62
- 客户端 ip: 10.32.106.159
- 挂载命令:
mount 10.32.106.62:/code /tmp/code
- 抓包, 过滤条件:
portmap || mount || nfs
过程说明:
- 112~113: 询问 NFS 进程端口号
- portmap 的功能是维护一张进程与端口号对应关系表
- portmap 的端口是 111
- 123~124: 测试 NFS 是否能够连接
- 128~129: 询问 mount 进程端口号
- mount 进程的端口号比较随机
- 132~133: 测试 mount 能否连接
- 134~135: 挂载
- 140~141: 测试 NFS 能否连上
- 感觉这步没有必要
- 143~144: 查看文件系统属性
- 文件系统的大小, 空间使用率等
- 145~146: 查看文件系统属性 (重复操作)
NFS 读写过程
读 abc.txt 文件
- 2~3: 进入 code 目录请求
- 5~6: 列出目录中的内容
- 8~9: 列出指定文件的属性
- 11~12: 打开文件
- 13~14, 152, 292: 传输文件内容
写 abc.txt 文件
- 1~2: 进入目录
- 4~5: 查找指定名称的文件
- 6~7: 创建文件
- 64, 104, 130, 190: 上传文件内容
- 306~307: 询问写 (落盘) 是否完成
- 308~309: 获取文件属性
写分为 async (默认), sync: