11 IANA考慮

2018-02-24 15:54 更新

IANA考慮

11.1.注冊新的URI模式

11.1.1.注冊“ws“模式

一個|ws| URI標(biāo)識一個WebSocket服務(wù)器和資源名稱。

URI模式名稱

????ws

狀態(tài)

????永久的

URI模式語法

????使用ABNF[RFC5234]語法和URI規(guī)范[RFC3986]的ABNF終結(jié)符:

????????"ws:" "http://" authority path-abempty [ "?" query ]

????和 [RFC3986]組件形成的資源名發(fā)生給服務(wù)器來確定服務(wù)期望的類型。其他組件的含義描述在[RFC3986]。

模式語義

????這個模式的作用僅是使用WebSocket協(xié)議打開一個連接。

編碼考慮

????上邊定義的語法不包括host組件中的字符,必須按照[RFC3987]從Unicode轉(zhuǎn)換為ASCII或其替換。為了模式標(biāo)準(zhǔn)化的目的,國際化域名(IDN)形式的host組件和它們轉(zhuǎn)換的域名代碼(Punycode)被認(rèn)為是等價(jià)的(參考[RFC3987] 5.3.3節(jié))。

????上邊定義的語法不包括其他組件中的字符,必須按照定義在URI[RFC3986] 和國際化資源標(biāo)識符(IRI)[RFC3987]規(guī)范從Unicode編碼轉(zhuǎn)換為ASCII,通過首先編碼字符為UTF-8,接著使用它們百分?jǐn)?shù)編碼的形式替換相應(yīng)的字節(jié)。

應(yīng)用/協(xié)議使用這個URI模式命名

????WebSokcet協(xié)議

互操作性考慮

????使用WebSocket需要使用HTTP版本1.1或更高。

????安全考慮

????參考“安全考慮”章節(jié)。

????聯(lián)系方式

????HYBI WG?hybi@ietf.org

????作者/變更管理員

????IETF?iesg@ietf.org

????參考資源

????RFC 6455

11.1.2.注冊”wss“模式

一個|wss| URI標(biāo)識一個WebSocket服務(wù)器和資源名稱,并表明在受TLS保護(hù)的連接之上通信(包括標(biāo)準(zhǔn)的TLS的好處,比如數(shù)據(jù)保密性和完整性和端點(diǎn)認(rèn)證)。

URI模式名稱

????wss

狀態(tài)

????永久的

URI模式語法

????使用ABNF[RFC5234]語法和URI規(guī)范[RFC3986]的ABNF終結(jié)符:

???????? "wss:" "http://" authority path-abempty [ "?" query ]

????和 [RFC3986]組件形成的資源名發(fā)生給服務(wù)器來確定服務(wù)期望的類型。其他組件的含義描述在[RFC3986]。

URI模式語義

????這個模式的作用僅是使用WebSocket協(xié)議打開一個使用TLS的連接。

編碼考慮

????上邊定義的語法不包括host組件中的字符,必須按照[RFC3987]從Unicode轉(zhuǎn)換為ASCII或其替換。為了模式標(biāo)準(zhǔn)化的目的,國際化域名(IDN)形式的host組件和它們轉(zhuǎn)換的域名代碼(Punycode)被認(rèn)為是等價(jià)的(參考[RFC3987] 5.3.3節(jié))。

????上邊定義的語法不包括其他組件中的字符,必須按照定義在URI[RFC3986] 和國際化資源標(biāo)識符(IRI)[RFC3987]規(guī)范從Unicode編碼轉(zhuǎn)換為ASCII,通過首先編碼字符為UTF-8,接著使用它們百分?jǐn)?shù)編碼的形式替換相應(yīng)的字節(jié)。

應(yīng)用/協(xié)議使用這個URI模式命名

????TLS之上的WebSokcet協(xié)議

互操作性考慮

????使用WebSocket需要使用HTTP版本1.1或更高。

安全考慮

????參考“安全考慮”章節(jié)。

聯(lián)系方式

????HYBI WG?hybi@ietf.org

作者/變更管理員

????IETF?iesg@ietf.org

參考資源

????RFC 6455

11.2.注冊”WebSocket“ HTTP Upgrade關(guān)鍵字

本節(jié)按照RFC2817[RFC2817]定義了在HTTP Upgrade符號注冊中心中注冊一個關(guān)鍵字。

符號名稱

????WebSocket

作者/變更管理員

????IETF?iesg@ietf.org

參考資源

????RFC 6455

11.3.注冊新的HTTP頭字段

11.3.1. Sec-WebSocket-Key

本節(jié)描述了在永久消息頭字段命名注冊中心[RFC3864]中注冊一個頭字段。

頭字段名

????Sec-WebSocket-Key

適用協(xié)議

????http

狀態(tài)

????標(biāo)準(zhǔn)的

作者/變更管理員

????IETF

參考資源

????RFC 6455

相關(guān)信息

????該頭字段僅用于WebSocket打開階段握手。

|Sec-WebSocket-Key| 頭字段用于WebSocket打開階段握手。它從客戶端發(fā)送到服務(wù)器,提供部分信息用于服務(wù)器檢驗(yàn)它收到了一個有效的WebSocket握手。這有助于確保服務(wù)器不接收正被濫用來發(fā)送數(shù)據(jù)給毫不知情的WebSocket服務(wù)器的非WebSocket客戶端的連接(例如HTTP客戶端)。

|Sec-WebSocket-Key| 頭字段在一個HTTP請求中不能出現(xiàn)多于一個。

11.3.2. Sec-WebSocket-Extensions

本節(jié)描述了在永久消息頭字段命名注冊中心[RFC3864]中注冊一個頭字段。

頭字段名

????Sec-WebSocket-Extensions

適用協(xié)議

????http

狀態(tài)

????標(biāo)準(zhǔn)的

作者/變更管理員

????IETF

參考資源

????RFC 6455

相關(guān)信息

????該頭字段僅用于WebSocket打開階段握手。

|Sec-WebSocket-Extensions|頭字段用于WebSocket打開階段握手。它最初是從客戶端發(fā)送到服務(wù)器,隨后從服務(wù)器端發(fā)送到客戶端,用來達(dá)成在整個連接階段的一組協(xié)議級擴(kuò)展。

|Sec-WebSocket-Extensions|頭字段在HTTP請求中可以出現(xiàn)多次(邏輯上等價(jià)于單個|Sec-WebSocket-Extensions|頭字段包含所有值)。

但是,|Sec-WebSocket-Extensions|頭字段在一個HTTP響應(yīng)中必須不出現(xiàn)多于一次。

11.3.3. Sec-WebSocket-Accept

本節(jié)描述了在永久消息頭字段命名注冊中心[RFC3864]中注冊一個頭字段。

頭字段名

????Sec-WebSocket-Accept

適用協(xié)議

????http

狀態(tài)

????標(biāo)準(zhǔn)的

作者/變更管理員

????IETF

參考資源

????RFC 6455

規(guī)范文檔

????RFC 6455

相關(guān)信息

????該頭字段僅用于WebSocket打開階段握手。

| Sec-WebSocket-Accept|頭字段用于WebSocket打開階段握手。它從服務(wù)器發(fā)送到客戶端來確定服務(wù)器愿意啟動WebSocket連接。

|Sec-WebSocket-Accept| 頭在一個HTTP響應(yīng)中必須不出現(xiàn)多于一次。

11.3.4. Sec-WebSocket-Protocol

本節(jié)描述了在永久消息頭字段命名注冊中心[RFC3864]中注冊一個頭字段。

頭字段名

????Sec-WebSocket-Protocol

適用協(xié)議

????http

狀態(tài)

????標(biāo)準(zhǔn)的

作者/變更管理員

????IETF

參考資源

????RFC 6455

規(guī)范文檔

????RFC 6455

相關(guān)信息

????該頭字段僅用于WebSocket打開階段握手。

|Sec-WebSocket-Protocol|頭字段用于WebSocket打開階段握手。它從客戶端發(fā)送到服務(wù)器端,并從服務(wù)器端發(fā)回到客戶端來確定連接的子協(xié)議。這使腳本可以選擇一個子協(xié)議和確定服務(wù)器同意服務(wù)子協(xié)議。

|Sec-WebSocket-Protocol|頭字段在一個HTTP請求中可以出現(xiàn)多次(邏輯上等價(jià)于單個|Sec-WebSocket-Protocol|頭字段包含所有值)。

但是,|Sec-WebSocket-Protocol|頭字段在一個HTTP響應(yīng)中必須不出現(xiàn)多于一次。

11.3.5.Sec-WebSocket-Version

本節(jié)描述了在永久消息頭字段命名注冊中心[RFC3864]中注冊一個頭字段。

頭字段名

????Sec-WebSocket-Version

適用協(xié)議

????http

狀態(tài)

????標(biāo)準(zhǔn)的

作者/變更管理員

????IETF

參考資源

????RFC 6455

規(guī)范文檔

????RFC 6455

相關(guān)信息

????該頭字段僅用于WebSocket打開階段握手。

|Sec-WebSocket- Version |頭字段用于WebSocket打開階段握手。它從客戶端發(fā)送到服務(wù)器端來指定連接的協(xié)議版本。這能使服務(wù)器正確解釋打開階段握手和發(fā)送數(shù)據(jù)的隨后數(shù)據(jù),如果服務(wù)器不能以安全的方式解釋數(shù)據(jù)則關(guān)閉連接。當(dāng)從客戶端接收到不匹配服務(wù)器端理解的版本時(shí),WebSocket握手錯誤,|Sec-WebSocket-Version|頭字段也從服務(wù)器端發(fā)送到客戶端。在這種情況下,頭字段包括服務(wù)器端支持的協(xié)議版本。

注意,如果沒有期望更高版本號,必然是向下兼容低版本號。

|Sec-WebSocket-Version|頭字段在一個HTTP響應(yīng)中可以出現(xiàn)多次(邏輯上等價(jià)于單個|Sec-WebSocket-Version|透過自動包含所有值)。

但是,|Sec-WebSocket-Version|頭字段在HTTP請求中必須不出現(xiàn)多于一次。

11.4.WebSocket擴(kuò)展名注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建了一個新的IANA注冊用于與WebSocket協(xié)議一起使用的WebSocket擴(kuò)展名。

作為本注冊的一部分,IANA維護(hù)以下信息:

擴(kuò)展標(biāo)識符

????擴(kuò)展標(biāo)識符, 將被用在注冊到本規(guī)范11.3.2節(jié)的| Sec-WebSocket-Extensions|頭字段。其值必須符合定義在本規(guī)范9.1節(jié)的擴(kuò)展-符號要求。

擴(kuò)展通用名稱

????擴(kuò)展名稱,通常稱為擴(kuò)展。

擴(kuò)展定義

????在擴(kuò)展用于的WebSocket協(xié)議中定義了文檔參考。

已知的不兼容擴(kuò)展

????與此擴(kuò)展是不兼容的一個擴(kuò)展標(biāo)識符列表。

WebSocket擴(kuò)展名受制于“先來先服務(wù)”的IANA注冊策略 [RFC5226]。

在此注冊中心沒有初始值。

11.5.WebSocket子協(xié)議名注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建了一個新的IANA注冊用于與WebSocket協(xié)議一起使用的WebSocket子協(xié)議名。

作為本注冊的一部分,IANA維護(hù)以下信息:

子協(xié)議標(biāo)識符 ????子協(xié)議標(biāo)識符, 將被用在注冊到本規(guī)范11.3.4節(jié)的|Sec-WebSocket-Protocol|頭字段。其值必須符合定義在本規(guī)范4.1節(jié)給出的第10條的符號要求——也就是,其值必須是RFC5226?[RFC5226].定義的一個符號。

子協(xié)議通用名稱

????子協(xié)議名稱,通常成為子協(xié)議。

子協(xié)議定義

????在子協(xié)議用于的WebSocket協(xié)議中定義了文檔參考。

WebSocket子協(xié)議名受制于“先來先服務(wù)”的IANA注冊策略 [RFC5226]。

11.6.WebSocket版本號注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建了一個新的IANA注冊用于與WebSocket協(xié)議一起使用的WebSocket版本號。

作為本注冊的一部分,IANA維護(hù)以下信息:

版本號

????用于|Sec-WebSocket-Version|的版本號指定在本規(guī)范4.1節(jié)。其值必須是一個在0到255(包括)之間的非負(fù)整數(shù)。

參考

????RFC請求一個新的版本號或帶版本號的草案名稱(見下文)。

狀態(tài)

????“臨時(shí)的”或“標(biāo)準(zhǔn)的”。參考下面的說明。

一個版本號被指定為“臨時(shí)的”或“標(biāo)準(zhǔn)的”。

“標(biāo)準(zhǔn)的”版本號是記錄在一個RFC中并用來識別一個主要的、穩(wěn)定的WebSocket協(xié)議版本,例如本RFC定義的版本?!皹?biāo)準(zhǔn)的”版本號受制于“IETF評審”IANA注冊策略 [RFC5226]。

“Interim”的版本號記錄在一個Internet草案中用并用于幫助實(shí)現(xiàn)者識別和與部署的WebSocket版本互操作,例如在公布這個RFC之前指定的版本?!芭R時(shí)的”版本號受制于“專家評審”IANA注冊策略 [RFC5226],HYBI工作組主席(或,如果工作組關(guān)閉了,IETF應(yīng)用區(qū)域的區(qū)域董事)將是初始的指定專家。

IANA 已經(jīng)添加如下初始值到注冊中心:

+--------+-----------------------------------------+----------+
|Version |                Reference                |  Status  |
| Number |                                         |          |
+--------+-----------------------------------------+----------+
| 0      + draft-ietf-hybi-thewebsocketprotocol-00 | Interim  |
+--------+-----------------------------------------+----------+
| 1      + draft-ietf-hybi-thewebsocketprotocol-01 | Interim  |
+--------+-----------------------------------------+----------+
| 2      + draft-ietf-hybi-thewebsocketprotocol-02 | Interim  |
+--------+-----------------------------------------+----------+
| 3      + draft-ietf-hybi-thewebsocketprotocol-03 | Interim  |
+--------+-----------------------------------------+----------+
| 4      + draft-ietf-hybi-thewebsocketprotocol-04 | Interim  |
+--------+-----------------------------------------+----------+
| 5      + draft-ietf-hybi-thewebsocketprotocol-05 | Interim  |
+--------+-----------------------------------------+----------+
| 6      + draft-ietf-hybi-thewebsocketprotocol-06 | Interim  |
+--------+-----------------------------------------+----------+
| 7      + draft-ietf-hybi-thewebsocketprotocol-07 | Interim  |
+--------+-----------------------------------------+----------+
| 8      + draft-ietf-hybi-thewebsocketprotocol-08 | Interim  |
+--------+-----------------------------------------+----------+
| 9      +                Reserved                 |          |
+--------+-----------------------------------------+----------+
| 10     +                Reserved                 |          |
+--------+-----------------------------------------+----------+
| 11     +                Reserved                 |          |
+--------+-----------------------------------------+----------+
| 12     +                Reserved                 |          |
+--------+-----------------------------------------+----------+
| 13     +                RFC 6455                 | Standard |
+--------+-----------------------------------------+----------+

11.7.WebSocket關(guān)閉代碼注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建了一個新的IANA注冊用于WebSocket關(guān)閉代碼。

作為本注冊的一部分,IANA維護(hù)以下信息:

狀態(tài)碼 ????狀態(tài)碼表示一個按照本文檔7.4節(jié)的WebSocket連接關(guān)閉的原因。狀態(tài)是一個在1000到4999(包括)之間的一個整數(shù)數(shù)字。

含義

????狀態(tài)碼的含義。每一個狀態(tài)碼都必須有唯一的含義。

聯(lián)系方式

????保留狀態(tài)代碼實(shí)體的聯(lián)系方式。

參考

????穩(wěn)定的文檔要求狀態(tài)碼并定義它們的含義。在1000-2999范圍內(nèi)的狀態(tài)碼是必須的且推薦的狀態(tài)碼在3000-3999范圍內(nèi)。

WebSocket關(guān)閉代碼根據(jù)它們的范圍受不同的注冊要求。本協(xié)議請求使用的狀態(tài)碼和其后續(xù)版本或擴(kuò)展受制于“標(biāo)準(zhǔn)功能”、“規(guī)定要求”(這意味著“指定專家”)或“IESG審查”IANA注冊策略中的任何一個,且應(yīng)該允許在1000-2999范圍內(nèi)。庫、框架和應(yīng)用請求使用的狀態(tài)碼受制于“先來先服務(wù)”IANA注冊策略且應(yīng)該允許在3000-3999范圍內(nèi)。4000-4999范圍的狀態(tài)碼被指定用于私有使用。請求應(yīng)該指出他們要求的狀態(tài)碼是用于WebSocket協(xié)議(或未來版本的協(xié)議)、擴(kuò)展,或庫/框架/應(yīng)用。

IANA 已經(jīng)添加如下初始值到注冊中心:

 |Status Code | Meaning         | Contact       | Reference |
-+------------+-----------------+---------------+-----------|
 | 1000       | Normal Closure  | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1001       | Going Away      | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1002       | Protocol error  | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1003       | Unsupported Data| hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1004       | ---Reserved---- | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1005       | No Status Rcvd  | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1006       | Abnormal Closure| hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1007       | Invalid frame   | hybi@ietf.org | RFC 6455  |
 |            | payload data    |               |           |
-+------------+-----------------+---------------+-----------|
 | 1008       | Policy Violation| hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1009       | Message Too Big | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1010       | Mandatory Ext.  | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|
 | 1011       | Internal Server | hybi@ietf.org | RFC 6455  |
 |            | Error           |               |           |
-+------------+-----------------+---------------+-----------|
 | 1015       | TLS handshake   | hybi@ietf.org | RFC 6455  |
-+------------+-----------------+---------------+-----------|

11.8.WebSocket操作碼注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建一個新的IANA注冊用于WebSocket操作碼。

作為本注冊的一部分,IANA維護(hù)以下信息:

操作碼 ????操作碼表示W(wǎng)ebSocket幀的幀類型,定義在5.2節(jié)。操作碼是一個在0到15(包括)之間的整數(shù)數(shù)字。

含義

????狀態(tài)碼值的含義。

參考

????規(guī)范要求的操作碼。

WebSocket狀態(tài)碼受制于“標(biāo)準(zhǔn)功能”IANA注冊策略[RFC5226]。

IANA 已經(jīng)添加如下初始值到注冊中心:

 |Opcode  | Meaning                             | Reference |
-+--------+-------------------------------------+-----------|
 | 0      | Continuation Frame                  | RFC 6455  |
-+--------+-------------------------------------+-----------|
 | 1      | Text Frame                          | RFC 6455  |
-+--------+-------------------------------------+-----------|
 | 2      | Binary Frame                        | RFC 6455  |
-+--------+-------------------------------------+-----------|
 | 8      | Connection Close Frame              | RFC 6455  |
-+--------+-------------------------------------+-----------|
 | 9      | Ping Frame                          | RFC 6455  |
-+--------+-------------------------------------+-----------|
 | 10     | Pong Frame                          | RFC 6455  |
-+--------+-------------------------------------+-----------|

11.9.WebSocket幀頭位注冊

本規(guī)范依據(jù)RFC5226[RFC5226]陳述的原則,創(chuàng)建了一個新的IANA注冊用于WebSocket幀頭位(Framing Header Bits)。此注冊控制的位分配標(biāo)記為5.2節(jié)的RSV1、RSV2和RSV3。

這些位被保留用于未來版本或本規(guī)范的擴(kuò)展。

WebSocket幀頭位分配受制于“標(biāo)準(zhǔn)功能”IANA注冊測策略[RFC5226]。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號