Network File System 协议

应用场景:

image.png

版本:

  1. 1984 NFSv2
  2. 1995 NFSv3
  3. 2000 NFSv4

学习资料:

  • RFC 1813
  • 鸟哥 Linux

实验:

  1. NFS 服务器 ip: 10.32.106.62
  2. 客户端 ip: 10.32.106.159
  3. 挂载命令: mount 10.32.106.62:/code /tmp/code
  4. 抓包, 过滤条件: portmap || mount || nfs

image.png

过程说明:

  1. 112~113: 询问 NFS 进程端口号
    1. portmap 的功能是维护一张进程与端口号对应关系表
    2. portmap 的端口是 111

image.png

  1. 123~124: 测试 NFS 是否能够连接

image.png

  1. 128~129: 询问 mount 进程端口号
    1. mount 进程的端口号比较随机

image.png
image.png

  1. 132~133: 测试 mount 能否连接

image.png

  1. 134~135: 挂载

image.png

  1. 140~141: 测试 NFS 能否连上
    1. 感觉这步没有必要

image.png
image.png

  1. 143~144: 查看文件系统属性
    1. 文件系统的大小, 空间使用率等

image.png

  1. 145~146: 查看文件系统属性 (重复操作)

image.png

NFS 读写过程

读 abc.txt 文件

image.png

  1. 2~3: 进入 code 目录请求

image.png

  1. 5~6: 列出目录中的内容

image.png
image.png

  1. 8~9: 列出指定文件的属性

image.png

  1. 11~12: 打开文件

image.png

  1. 13~14, 152, 292: 传输文件内容

image.png
image.png

写 abc.txt 文件

image.png

  1. 1~2: 进入目录

image.png

  1. 4~5: 查找指定名称的文件

image.png

  1. 6~7: 创建文件

image.png

  1. 64, 104, 130, 190: 上传文件内容

image.png
image.png

  1. 306~307: 询问写 (落盘) 是否完成

image.png

  1. 308~309: 获取文件属性

image.png

写分为 async (默认), sync:

image.png