互联网媒体类型

互联网媒体类型（Internet media type，也称为MIME类型（MIME type）或内容类型（content type））是给互联网上传输的内容赋予的分类类型。一份内容的互联网媒体类型是由其档案格式与内容决定的。互联网媒体类型与文件拓展名相对应，因此计算机系统常常通过拓展名来确定一个文件的媒体类型并决定与其相关联的软件。互联网媒体类型的分类标准由互联网号码分配局（IANA）发布。1996年十一月，媒体类型在RFC 2045中被最初定义，当时仅被使用在SMTP协议的电子邮件中。现在其他的协议（比如HTTP或者SIP）也都常使用MIME类型。

一个MIME类型至少包括两个部分：一个类型（type）和一个子类型（subtype）。此外，它还可能包括一个或多个可选参数（optional parameter）。比如，HTML文件的互联网媒体类型可能是

`text/html; charset = UTF-8`

在这个例子中，文件类型为`text`，子类型为`html`，而`charset`是一个可选参数，其值为`UTF-8`。

## 命名格式

一个MIME类型包括一个类型（type），一个子类型（subtype）。此外可以加上一个或多个可选参数（optional parameter）。其格式为

`类型名 / 子类型名 [ ; 可选参数 ]`

目前已被注册的类型名有`application`、`audio`、`example`、`image`、`message`、`model`、`multipart`、`text`，以及`video`。`chemical`是一个非官方的常用类型名。此外，非标准的类型名一般会加上`x-`前缀，但这种做法已经过时。

子类型名通常是一个媒体形式被冠以的名称，不过子类型名中也会有其它信息，包括厂商信息、产品信息、分类信息（子类型会被归进一个树状的分类结构中）、后缀等等。树结构分类信息以被`.`相互连接的字符串表示。每一个由`.`分隔开的部分又可以加上与其以`-`相连接的附加信息。此外，子类型名中也会有放在最后，与前面的内容以`+`相连接的后缀。因此，一个媒体类型的格式可以被更加细地表示为：

`类型名 / [ 树结构分类信息（中间可能有一个或多个“.”） ] 子类型名（中间可能有一个或多个“-”） [ + 后缀 ] [ ; 可选参数 ]`

这些信息遵循注册树（见下）的规定。

### 注册树（Registration Tree）

所有的媒体类型都是通过IANA的流程注册的。为了保证注册流程的灵活性与效率，子类型被归进了一个树结构的分类中。树结构信息被放在了子类型名的最前面，以`.`与其它部分分隔。现在，存在以下几种树：标准树（Standards Tree）、厂商树（Vendor Tree）、个人树（Personal or Vanity Tree）、以及非标准的`x.`为前缀的树。这些树最早于1996年十一月随着RFC 2048被定义出来。IETF标准行动（Standard Action）可能会创造新的注册树以满足著名的持续性组织（比如科学社区）的注册和管理需求。

#### 标准树

标准树中的子类型名不需要树结构信息（也就是不需要带`.`的前缀）。

`类型名 / 子类型名 [ + 后缀 ] [ ; 可选参数 ]`

要注册标准树中的子类型，其必须遵从IESG直接批准的IETF规范，或者被由IANA认证的标准相关组织注册。

#### 厂商树

厂商树中包含与公开使用的产品相联系的媒体类型。其使用`vnd.`前缀。在前缀之后必须是著名厂商的名称或是IANA认证厂商的名称加上表示文件类型和/或内容的文字。

`类型名 / '''vnd.'''子类型名 [ + 后缀 ] [ ; 可选参数 ]`

比如与Debian项目组织提供的dpkg相关联的.deb文件的MIME类型是：

`application/vnd.debian.binary-package`

其中，`debian`是厂商（生产方）名称，而`binary-package`是对文件类型和内容的描述。

“厂商”与“生产方”在这个语境下是相同的概念。工业财团和非盈利组织也可以注册厂商树中的媒体类型。任何想要传播与某种软件紧密联系的文件格式的人都可以注册厂商树中的子类型，但是这个子类型是属于该软件或是文件格式的生产方的。这种情况下，厂商可以选择在任何时间声明自己拥有第三方进行的注册的所有权。

#### 个人树

个人树中包含试验性或者不会以商业形式公开的子类型。个人树中的子类型名的前缀是`prs.`

`类型名 / '''prs.'''子类型名 [ + 后缀 ] [ ; 可选参数 ]`

个人树中的子类型属注册者所有，但也可以转让。

#### 未注册的x.树

以`x.`为第一前缀的子类型名仅能够在私人的、本地的环境中使用。此类型的子类型不能被注册。其只能在相互间同意的各方中传输使用。尽管有时未被注册的MIME类型必须被使用，这是不被推荐的。

`类型名 / '''x.'''子类型名 [ + 后缀 ] [ ; 可选参数 ]`

带有`x-`的子类型名原先被归到这颗树中，但是这种做法已经不被采用。如果一个带有`x-`前缀的子类型名被广泛使用和接受，其可能最终会被注册并且归进其它树中，尽管`x-`本身已经过时。

## 媒体类型列表

IANA维护着一个媒体类型和字符编码的记录列表。他们的列表通过互联网向公众开放。

### Type application

分别对于不同用途的档案：

- `application/atom+xml`：Atom feeds
- `application/ecmascript`：ECMAScript/JavaScript;（相当于`application/javascript`但是严格的处理规则）
- `application/EDI-X12`：EDI ANSI ASC X12资料
- `application/EDIFACT`：EDI EDIFACT资料
- `application/json`：JSON（JavaScript Object Notation）
- `application/javascript`：ECMAScript/JavaScript（相当于`application/ecmascript`但是宽松的处理规则）它不被IE 8或更早之前的版本所支援。虽然可以改用`text/javascript`，但它却被RFC 4329定义为过时。在HTML5之中，`<script>`标签的type的属性是可省略的，因为所有的浏览器即使在HTML5以前都一直预设使用JavaScript。
- `application/octet-stream`：任意的二进制档案（通常做为通知浏览器下载档案）一般来说，这种类型标识的文件不应该与特定应用程序关联。与Apache等软件包过去的假设相反，这种类型不应该应用于未知文件。在这种情况下，服务器或应用程序不应指示内容类型，因为这可能是不正确的，而应该省略类型，以便让接收者猜测类型。
- `application/ogg`：Ogg视频文件格式
- `application/pdf`：PDF
- `application/postscript`：PostScript
- `application/rdf+xml`：Resource Description Framework
- `application/rss+xml`：RSS feeds
- `application/soap+xml`：SOAP
- `application/font-woff`：Web Open Font Format（推荐使用；使用`application/x-font-woff`直到它变为官方标准）
- `application/xhtml+xml`：XHTML
- `application/xml`：XML档案
- `application/xml-dtd`：DTD档案
- `application/xop+xml`：XML-binary Optimized Packaging
- `application/zip`：ZIP压缩档
- `application/gzip`：Gzip

### Type audio

数位音讯档案：

- `audio/mp4`：MP4音讯档案
- `audio/mpeg`：MP3或其他MPEG音讯档案
- `audio/ogg`：Ogg音讯档案
- `audio/vorbis`：Vorbis音讯档案
- `audio/vnd.rn-realaudio`：RealAudio音讯档案
- `audio/vnd.wave`：WAV音讯档案
- `audio/webm`：WebM音讯档案
- `audio/flac`：FLAC音讯档案

### Type image

图档：

- `image/gif`：GIF图档
- `image/jpeg`：JPEG图档
- `image/png`： PNG图档
- `image/webp`： WebP图档
- `image/svg+xml`：SVG向量图档
- `image/tiff`：TIFF图档
- `image/icon`：ICO图片文件

### Type model

三维计算机图形档案：

- `model/example`
- `model/iges`：IGS 文件，IGES 文件
- `model/mesh`：MSH 文件，MESH 文件
- `model/vrml`：WRL 文件，VRML 文件
- `model/x3d+binary`：X3D ISO 标准，用于表示三维计算机图形、X3DB 二进制文件
- `model/x3d+vrml`：X3D ISO 标准，用于表示三维计算机图形、X3DB VRML文件
- `model/x3d+xml`：X3D ISO 标准，用于表示三维计算机图形、X3DB XML 文件

### Type text

- `text/css`：CSS档案
- `text/csv`：CSV档案
- `text/html`：HTML档案
- `text/javascript` （过时）： JavaScript; 在 RFC 4329 中定义并舍弃，以减少使用，推荐使用 `application/javascript`。然而，相比于 `application/javascript`，在 HTML 4 和 5 中，可以使用`text/javascript`，且有跨浏览器的支持。因为在使用 `<script>` 时，对于其 "type" 属性，所有浏览器都会使用正确的预设值（尽管 HTML 4 的规格中明确要求），所以 HTML 5 中定义为选择性的，且没必要。
- `text/plain`：纯文字内容
- `text/vcard`：vCard（电子名片）
- `text/xml`：XML

### Type video

视频文件格式档案（可能包含数字视频与数位音讯）：

- `video/mpeg`：MPEG-1视频档案
- `video/mp4`：MP4视频档案
- `video/ogg`：Ogg视频档案
- `video/quicktime`：QuickTime视频档案
- `video/webm`：WebM视频档案（基于Matroska基础）
- `video/x-matroska`：Matroska（多媒体封装格式）
- `video/x-ms-wmv`：Windows Media Video视频档案
- `video/x-flv`：Flash Video（FLV档）