一個|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
一個|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
本節(jié)按照RFC2817[RFC2817]定義了在HTTP Upgrade符號注冊中心中注冊一個關(guān)鍵字。
符號名稱
????WebSocket
作者/變更管理員
????IETF?iesg@ietf.org
參考資源
????RFC 6455
本節(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)多于一個。
本節(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)多于一次。
本節(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)多于一次。
本節(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)多于一次。
本節(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)多于一次。
本規(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]。
在此注冊中心沒有初始值。
本規(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]。
本規(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 |
+--------+-----------------------------------------+----------+
本規(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 |
-+------------+-----------------+---------------+-----------|
本規(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 |
-+--------+-------------------------------------+-----------|
本規(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]。
更多建議: