Thank Zhihao Tao for your hard work. The document spent countless nights and weekends, using his hard work to make it convenient for everyone.
If you have any questions, please send a email to zhihao.tao@outlook.com
文章目录
1. MIME
MIME(Multipurpose Internet Mail Extensions多用途互联网邮件扩展类型)
是描述消息内容类型的因特网标准。
MIME不属于邮件传输协议,其对SMTP等协议的扩展(例如,SMTP协议在传输报文时,只能够传输7位的ASCII格式的报文,不支持那些不使用7位ASCII格式的语种,同时也不支持语音和视频数据的传输)。
MIME
是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
MIME
是一个互联网标准,扩展了电子邮件标准,使其能够支持:
- 非ASCII字符文本;
- 非文本格式附件(二进制、声音、图像等);
- 由多部分(multiple parts)组成的消息体;
- 包含非ASCII字符的头信息(Header information)。
1.1 RFC
- RFC-822 Standard for ARPA Internet text messages
- RFC-2045 MIME Part 1: Format of Internet Message Bodies
- RFC-2046 MIME Part 2: Media Types
- RFC-2047 MIME Part 3: Header Extensions for Non-ASCII Text
- RFC-2048 MIME Part 4: Registration Procedures
- RFC-2049 MIME Part 5: Conformance Criteria and Examples
2. 文件Magic
-
基于
stat
的系统测试。- 程序检查文件是否为空
- 或者是否是某种特殊文件。(套接字、符号链接或命名管道FIFO)
-
magic
测试用于检查具有特定固定格式数据的文件。- 典型的例子是二进制可执行(编译程序)a.out文件,其格式在
include
目录中的<elf.h>
、<a.out.h>
和<exec.h>
中定义。 - 这些文件在文件开头附近的特定位置有一个
magic
,它告诉UNIX操作系统该文件是一个二进制可执行文件,以及其中的几种类型。 magic
的概念已经通过扩展应用到数据文件中。任何在文件中具有固定小偏移量的固定标识符的文件通常都可以用这种方式描述。识别这些文件的信息从编译的/usr/share/misc/magic
文件/usr/share/file/magic.mgc
。帮助手册
- 典型的例子是二进制可执行(编译程序)a.out文件,其格式在
#格式: offset type test message
# C
0 regex \^#include C source text
!:mime text/x-c
!:strength / 2
0 regex \^char C source text
!:mime text/x-c
!:strength / 2
0 regex \^double C source text
!:mime text/x-c
!:strength / 2
0 regex \^extern C source text
!:mime text/x-c
!:strength / 2
0 regex \^float C source text
!:mime text/x-c
!:strength / 2
0 regex \^struct C source text
!:mime text/x-c
!:strength / 2
0 regex \^union C source text
!:mime text/x-c
!:strength / 2
0 search/8192 main( C source text
!:mime text/x-c
!:strength / 2
- 如果一个文件与
magic
文件中的任何条目都不匹配,则会检查它是否是文本文件。ASCII
、ISO-8859-x
等字符集可以通过构成每组可打印文本的不同字节范围和序列进行区分。如果文件通过了这些测试中的任何一个,则会报告其字符集。
man file
man magic