網際網路媒體類型

網際網路媒體類型（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檔）