HTTP與WebSocket

前面講到TCP和UDP是屬于網絡層的協(xié)議,Socket是網絡層和應用層之間的一個抽象層,本篇現在來了解一下常用的兩個應用層協(xié)議:HTTP和WebSocket。

1. HTTP

1.1 簡介

HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
HTTP是一個屬于應用層的面向對象的協(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。它于1990年提出,經過幾年的使用與發(fā)展,得到不斷地完善和擴展。
HTTP協(xié)議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。Web服務器根據接收到的請求后,向客戶端發(fā)送響應信息。

1.2 主要特點

1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務器聯系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務器的程序規(guī)模小,因而通信速度很快。

2、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

3.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。

4.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

5、支持B/S及C/S模式。

1.3 消息請求Request

客戶端發(fā)送一個HTTP請求到服務器的請求消息包括以下格式:
請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。

POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

請求行:用來說明請求方法,要訪問的資源以及所使用的HTTP版本.
請求頭:緊接著請求行(即第一行)之后的部分,用來說明服務器要使用的附加信息,詳情見下圖。
空行:請求頭部后面的空行是必須的,即使第四部分的請求數據為空,也必須有空行。
請求數據:請求數據也叫主體,可以添加任意的其他數據。

請求方法
請求方法
請求頭
請求頭
1.4 消息響應Response

一般情況下,服務器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應消息,消息也由四個部分組成,分別是:狀態(tài)行、消息報頭、空行和響應正文。

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

狀態(tài)行:由HTTP協(xié)議版本號, 狀態(tài)碼, 狀態(tài)消息 三部分組成。
消息報頭:用來說明客戶端要使用的一些附加信息
空行:消息報頭后面的空行是必須的
響應正文:服務器返回給客戶端的文本信息。

響應狀態(tài)碼

HTTP響應狀態(tài)碼由三位十進制數字組成,它們出現在由HTTP服務器發(fā)送的響應的第一行。響應碼分五種類型,由它們的第一位數字表示:
1xx:信息,請求收到,繼續(xù)處理
2xx:成功,行為被成功地接受、理解和采納
3xx:重定向,為了完成請求,必須進一步執(zhí)行的動作
4xx:客戶端錯誤,請求包含語法錯誤或者請求無法實現
5xx:服務器錯誤,服務器不能實現一種明顯無效的請求

響應碼

2. WebSocket

對于WebSocket的講解,這位博主講得很詳細,值得推薦:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容