ISO 9660 文件和目录描述符图形化说明
概述
本文档通过图形化方式展示ISO 9660标准中关于文件和目录描述符的详细结构和内容。文件和目录描述符是ISO 9660文件系统中用于描述文件、目录及其属性的核心数据结构,包括目录记录、路径表记录和扩展属性记录三大类型。
1. 文件和目录描述符体系概览
ISO 9660文件系统通过三种主要的描述符类型来组织和管理文件及目录:
|
描述符类型 |
长度 |
主要用途 |
|
目录记录 |
可变长度 |
描述文件和目录的基本信息和位置 |
|
路径表记录 |
可变长度 |
快速定位目录层次结构 |
|
扩展属性记录 |
至少一个逻辑块 |
提供详细的权限控制和元数据信息 |
三者关系
•目录记录和路径表记录都可以关联到扩展属性记录
•目录记录用于详细描述每个文件或目录
•路径表记录提供快速的目录导航机制
•扩展属性记录提供可选的高级功能(权限、详细时间戳等)
2. 目录记录(Directory Record)
目录记录是可变长度的数据结构,用于描述文件或目录的基本信息。
2.1 目录记录字段结构
|
字节位置 |
字段名称 |
内容 |
说明 |
|
BP 1 |
目录记录长度(LEN_DR) |
数值 |
8位数字,指定目录记录的字节长度 |
|
BP 2 |
扩展属性记录长度 |
数值 |
8位数字,0表示无扩展属性 |
|
BP 3-10 |
区段位置 |
数值 |
32位数字,第一个逻辑块的逻辑块号 |
|
BP 11-18 |
数据长度 |
数值 |
32位数字,文件节的数据长度(不包括扩展属性) |
|
BP 19-25 |
记录日期和时间 |
数值 |
7字节格式 |
|
BP 26 |
文件标志 |
8位 |
8位标志字段 |
|
BP 27 |
文件单元大小 |
数值 |
8位数字 |
|
BP 28 |
交错间隙大小 |
数值 |
8位数字 |
|
BP 29-32 |
卷序列号 |
数值 |
16位数字 |
|
BP 33 |
文件标识符长度(LEN_FI) |
数值 |
8位数字 |
|
BP 34至(33+LEN_FI) |
文件标识符 |
d字符/d1字符 |
文件或目录的标识符 |
|
BP (34+LEN_FI) |
填充字段 |
(00)字节 |
仅当LEN_FI为偶数时存在 |
|
BP (LEN_DR-LEN_SU+1)至LEN_DR |
系统用途 |
LEN_SU字节 |
可选字段,保留供系统使用 |
2.2 目录记录日期时间格式(7字节)
目录记录使用紧凑的7字节日期时间格式,与卷描述符中的17字节格式不同:
|
相对字节位置 |
内容 |
范围 |
说明 |
|
RBP 1 |
年份 |
自1900年以来的年数 |
数值(例如:125表示2025年) |
|
RBP 2 |
月份 |
1-12 |
数值 |
|
RBP 3 |
日期 |
1-31 |
数值 |
|
RBP 4 |
小时 |
0-23 |
数值 |
|
RBP 5 |
分钟 |
0-59 |
数值 |
|
RBP 6 |
秒 |
0-59 |
数值 |
|
RBP 7 |
GMT偏移 |
-48至+52 |
15分钟间隔 |
特殊说明: 如果所有七个数字均为零,则表示未指定日期和时间。
2.3 文件标志(BP 26)详解
文件标志是8位标志字段,从最低有效位开始编号为0到7:
|
位 |
名称 |
值=0 |
值=1 |
|
0 |
存在性 |
应告知用户文件存在 |
无需告知用户文件存在 |
|
1 |
目录 |
不是目录 |
是目录 |
|
2 |
关联文件 |
不是关联文件 |
是关联文件 |
|
3 |
记录 |
未指定记录格式 |
有记录格式(由扩展属性指定) |
|
4 |
保护 |
无所有者/组标识,任何用户可读可执行 |
有所有者/组标识,有权限限制 |
|
5-6 |
保留 |
应设置为0 |
保留用于未来标准化 |
|
7 |
多区 |
最终目录记录 |
非最终目录记录 |
重要约束:
•如果目录记录标识一个目录,则位2、3、7应设置为零
•如果文件节未关联扩展属性记录,则位3、4应设置为零
2.4 文件标识符字段
文件标识符字段的解释取决于文件标志字段的目录位(位1)的设置:
当位1=0(文件):
•用于指定文件的标识符
•字符应为d字符或d1字符、分隔符1和分隔符2
•按照7.5规定记录
当位1=1(目录):
•用于指定目录的标识符
•字符应为d字符或d1字符,或者仅包含一个(00)字节,或者仅包含一个(01)字节
•按照7.6规定记录
2.5 目录记录的顺序
目录记录应根据文件标识符字段的相对值按以下标准降序排列:
1.按文件名相对值升序排列
•较短的文件名视为右侧填充(20)字节
•比较对应字节位置的字符代码值
2.按文件扩展名相对值升序排列
•较短的扩展名视为右侧填充(20)字节
•比较对应字节位置的字符代码值
3.按文件版本号相对值降序排列
•较短的版本号视为左侧填充(30)字节
•比较对应字节位置的字符代码值
4.按文件标志字段的关联文件位的值降序排列
5.按文件节的顺序
2.6 文件属性的一致性
同一文件的每个目录记录的以下字段应包含相同的值:
•文件标志字段的存在位
•文件标志字段的目录位
•文件标志字段的关联文件位
•文件标志字段的记录位
•文件标志字段的保留位
•文件标识符字段的长度
•文件标识符字段
•填充字段
3. 路径表记录(Path Table Record)
路径表记录是可变长度的数据结构,用于快速定位目录层次结构。
3.1 路径表记录字段结构
|
字节位置 |
字段名称 |
内容 |
说明 |
|
BP 1 |
目录标识符长度(LEN_DI) |
数值 |
8位数字 |
|
BP 2 |
扩展属性记录长度 |
数值 |
8位数字,0表示无扩展属性 |
|
BP 3-6 |
区段位置 |
数值 |
32位数字,目录所在第一个逻辑块号 |
|
BP 7-8 |
父目录编号 |
数值 |
16位数字,路径表中父目录的记录编号 |
|
BP 9至(8+LEN_DI) |
目录标识符 |
d字符/d1字符/(00)字节 |
目录的标识符 |
|
BP (9+LEN_DI) |
填充字段 |
(00)字节 |
仅当LEN_DI为奇数时存在 |
3.2 字段详解
3.2.1 目录标识符长度(BP 1)
•8位数字,指定路径表记录中目录标识符字段的字节长度
•按照7.1.1规定记录
3.2.2 区段位置(BP 3-6)
•32位数字,指定分配给目录所在区段的第一个逻辑块的逻辑块号
•按照7.3规定记录
3.2.3 父目录编号(BP 7-8)
•16位数字,指定路径表中该目录父目录的记录编号
•按照7.2规定记录
3.2.4 目录标识符[BP 9至(8+LEN_DI)]
•指定目录的标识符
•字符应为d字符、d1字符或仅一个(00)字节
•按照7.6规定记录
3.2.5 填充字段[BP (9+LEN_DI)]
•仅当"目录标识符长度"字段中的数字为奇数时,路径表记录中才应包含此字段
•如果存在,则此字段应设置为(00)
3.3 路径表类型
路径表分为两种类型,在卷描述符中有不同的位置记录:
•L型路径表(Little-Endian): 多字节数值以最低有效字节在前的方式记录
•M型路径表(Big-Endian): 多字节数值以最高有效字节在前的方式记录
每种类型都有必需位置和可选位置,可选位置的值为0表示不记录。
4. 扩展属性记录(Extended Attribute Record)
扩展属性记录是可选的数据结构,提供详细的权限控制和元数据信息。如果存在,则至少占用一个逻辑块。
4.1 扩展属性记录字段结构
|
字节位置 |
字段名称 |
内容 |
说明 |
|
BP 1-4 |
所有者标识 |
数值 |
16位数字,0表示未指定 |
|
BP 5-8 |
组标识 |
数值 |
16位数字,0表示未指定 |
|
BP 9-10 |
权限 |
16位 |
16位标志字段 |
|
BP 11-27 |
文件创建日期和时间 |
数字,数值 |
17字节格式 |
|
BP 28-44 |
文件修改日期和时间 |
数字,数值 |
17字节格式 |
|
BP 45-61 |
文件失效日期和时间 |
数字,数值 |
17字节格式 |
|
BP 62-78 |
文件生效日期和时间 |
数字,数值 |
17字节格式 |
|
BP 79 |
记录格式 |
数值 |
8位数字 |
|
BP 80 |
记录属性 |
数值 |
8位数字 |
|
BP 81-84 |
记录长度 |
数值 |
16位数字 |
|
BP 85-116 |
系统标识符 |
a字符/a1字符 |
32字节 |
|
BP 117-180 |
系统用途 |
未指定 |
64字节 |
|
BP 181 |
扩展属性记录版本 |
数值 |
8位数字,值为1 |
|
BP 182 |
转义序列长度(LEN_ESC) |
数值 |
8位数字 |
|
BP 183-246 |
保留用于未来标准化 |
(00)字节 |
64字节 |
|
BP 247-250 |
应用程序使用长度(LEN_AU) |
数值 |
16位数字 |
|
BP 251至(250+LEN_AU) |
应用程序使用 |
LEN_AU字节 |
可变长度 |
|
BP (251+LEN_AU)至(250+LEN_ESC+LEN_AU) |
转义序列 |
LEN_ESC字节 |
可变长度,可选 |
4.2 所有者和组标识
4.2.1 所有者标识(BP 1-4)
•16位数字,标识文件所有者
•所有者必须是"组标识"字段所标识的组的成员
•如果为0,则表示未为文件指定所有者标识,此时"组标识"字段也应为零
•按照7.2.3规定记录
4.2.2 组标识(BP 5-8)
•16位数字,指定文件所有者所属组的标识
•值从1到某个约定的数字,表示该组属于"系统"用户类别
•如果为0,则表示未为文件指定组标识,此时"所有者标识"字段也应为零
•按照7.2.3规定记录
4.3 权限(BP 9-10)详解
权限字段是16位标志字段,位从0到15编号,从记录在第10个字节位置的字节的最低有效位开始。
权限位分组
系统类用户组(位0-3):
•位0: 0=所有者可读,1=不可读
•位1: 设置为1
•位2: 0=所有者可执行,1=不可执行
•位3: 设置为1
所有者(位4-7):
•位4: 0=所有者可读,1=不可读
•位5: 设置为1
•位6: 0=所有者可执行,1=不可执行
•位7: 设置为1
组成员(位8-11):
•位8: 0=组内任何用户可读,1=仅所有者可读
•位9: 设置为1
•位10: 0=组内任何用户可执行,1=仅所有者可执行
•位11: 设置为1
所有用户(位12-15):
•位12: 0=任何用户可读,1=非组成员不可读
•位13: 设置为1
•位14: 0=任何用户可执行,1=非组成员不可执行
•位15: 设置为1
特殊说明:
•交换过程中可以忽略位0到3
•如果所有者要求,交换过程中可以忽略位4到7
4.4 日期时间字段
扩展属性记录包含四个日期时间字段,均采用17字节格式(与卷描述符相同):
1.文件创建日期和时间(BP 11-27): 指定文件信息的创建日期和时间
2.文件修改日期和时间(BP 28-44): 指定文件信息的最后修改日期和时间
3.文件失效日期和时间(BP 45-61): 指定文件中信息被视为失效的日期和时间,未指定则不失效
4.文件生效日期和时间(BP 62-78): 指定文件中信息可使用的日期和时间,未指定则立即可用
所有日期时间字段均按照8.4.26.1规定记录。
4.5 记录格式(BP 79)
记录格式字段是8位数字,用于指定文件中信息的格式:
|
数值 |
含义 |
|
0 |
未指定文件中记录的信息结构 |
|
1 |
文件中的信息是一系列固定长度的记录 |
|
2 |
文件中的信息是一系列可变长度的记录,RCW按7.2.1记录 |
|
3 |
文件中的信息是一系列可变长度的记录,RCW按7.2.2记录 |
|
4-127 |
保留用于未来标准化 |
|
128-255 |
保留供系统使用 |
按照7.1.1规定记录。
4.6 记录属性(BP 80)
记录属性字段是8位数字,用于指定文件中的记录在字符成像设备上显示时的特定处理方式:
|
数值 |
含义 |
|
0 |
每个记录前面应有一个换行符,后面应有一个回车符 |
|
1 |
记录的第一个字节应按照ISO 1539中规定的垂直间距进行解释 |
|
2 |
记录包含必要的控制信息 |
|
3-255 |
保留用于未来标准化 |
特殊说明: 如果"记录格式"字段包含零,则在交换过程中应忽略"记录属性"字段。
按照7.1.1规定记录。
4.7 记录长度(BP 81-84)
记录长度字段是16位数字,其含义取决于"记录格式"字段:
•记录格式=0: 记录长度应为零
•记录格式=1: 记录长度指定文件中每条记录的字节长度
•记录格式=2或3: 记录长度指定文件中记录的最大字节长度
按照7.2.3规定记录。
4.8 系统标识符(BP 85-116)
系统标识符字段指定能够识别并处理系统内容的系统的标识符。该系统能够处理扩展属性记录和关联的目录记录中的"系统使用"字段。
字符应为a字符或a1字符。
4.9 转义序列[BP (251+LEN_AU)至(250+LEN_ESC+LEN_AU)]
转义序列字段是可选字段。如果存在,则此字段应包含转义序列,用于指定用于解释文件内容的编码字符集。
格式要求:
•转义序列应符合ISO 2022标准
•每个转义序列中应省略转义字符(ESCAPE)
•第一个或唯一的转义序列应从字段的第一个字节开始
•每个后续的转义序列应从字段中紧随前一个转义序列最后一个字节之后的字节开始
•最后一个转义序列之后的任何未使用位置应设置为(00)
4.10 文件属性的一致性
与文件的文件节关联的扩展属性记录的以下字段应包含相同的值:
•记录格式字段
•记录属性字段
•记录长度字段(如果记录是固定长度记录)
5. 数据格式对比
5.1 日期时间格式对比
ISO 9660标准中使用两种不同的日期时间格式:
|
格式 |
长度 |
使用位置 |
精度 |
|
7字节格式 |
7字节 |
目录记录 |
秒级 |
|
17字节格式 |
17字节 |
卷描述符、扩展属性记录 |
百分之一秒级 |
7字节格式特点:
•紧凑,节省空间
•年份使用自1900年以来的年数(单字节)
•适用于目录记录中的快速时间戳
17字节格式特点:
•详细,精度高
•年份使用4位数字(1-9999)
•包含百分之一秒精度
•适用于需要精确时间记录的场景
5.2 字符类型
ISO 9660标准中定义了多种字符类型:
•a字符: 字母字符,用于系统标识符等
•d字符: 目录字符,用于文件标识符等
•a1字符: 补充卷描述符中的字母字符,可通过转义序列自定义
•d1字符: 补充卷描述符中的目录字符,可通过转义序列自定义
•分隔符1和分隔符2: 用于文件标识符中的特殊分隔符
6. 数值记录格式参考
文档中引用的数值记录格式:
•7.1.1: 8位数字记录格式
•7.1.2: 数字字符记录格式
•7.2: 16位数字记录格式
•7.2.1: 16位数字记录格式(LSB first)
•7.2.2: 16位数字记录格式(MSB first)
•7.2.3: 16位数字记录格式(both-byte order)
•7.3: 32位数字记录格式
•7.3.1: 32位数字记录格式(LSB first)
•7.3.2: 32位数字记录格式(MSB first)
•7.3.3: 32位数字记录格式(both-byte order)
•7.5: 文件标识符记录格式
•7.6: 目录标识符记录格式
总结
ISO 9660文件和目录描述符体系通过三种核心数据结构,完整地描述了文件系统中的文件和目录:
1.目录记录提供了文件和目录的基本信息,包括位置、大小、时间戳和标识符,是文件系统的基础数据结构。
2.路径表记录提供了快速的目录导航机制,通过记录目录的父子关系,实现高效的目录层次遍历。
3.扩展属性记录提供了高级功能,包括详细的权限控制、多个时间戳、记录格式定义和字符集转义序列,满足复杂应用场景的需求。
这种设计确保了文件系统的完整性、灵活性和可扩展性,同时支持基本的文件管理和高级的权限控制功能。
附图说明
本文档配套提供了以下图形化展示:
1.file_directory_overview.png: 文件和目录描述符关系总览图
2.directory_record_structure.png: 目录记录详细结构图
3.file_flags_structure.png: 文件标志位详细图
4.directory_datetime_format.png: 目录记录日期时间格式图
5.path_table_record_structure.png: 路径表记录结构图
6.extended_attribute_record.png: 扩展属性记录结构图
7.permission_bits_structure.png: 权限位详细图
8.record_format_types.png: 记录格式类型图
这些图表以可视化方式展示了ISO 9660标准中文件和目录描述符的复杂结构,便于理解和参考。
613

被折叠的 条评论
为什么被折叠?



