天天看點

socket與http的比較

socket與http的差別:

(一)http:

(1)定義:

HTTP協定即超文本傳送協定(Hypertext Transfer Protocol ),是Web聯網的基礎,WEB使用HTTP協定作應用層協定,以封裝HTTP文本資訊,然後使用TCP/IP做傳輸層協定将它發到網絡上。

2)背景:

在傳輸資料時,可以隻使用(傳輸層)TCP/IP協定,但是那樣的話,如果沒有應用層,便無法識别資料内容,如果想要使傳輸的資料有意義,則必須使用到應用層協定,應用層協定有很多,比如HTTP、FTP、TELNET等。

3)http的特點:

HTTP連接配接最顯著的特點是用戶端發送的每次請求都需要伺服器回送響應,伺服器端響應後連接配接即會斷掉;。從建立連接配接到關閉連接配接的過程稱為“一次連接配接”。

4)HTTP連接配接是一種“短連接配接”,要保持用戶端程式的線上狀态,需要不斷地向伺服器發起連接配接請求。通常的做法是即時不需要獲得任何資料,用戶端也保持每隔一段固定的時間向伺服器發送一次“保持連接配接”的請求,伺服器在收到該請求後對用戶端進行回複,表明知道用戶端“線上”。

若伺服器長時間無法收到用戶端的請求,則認為用戶端“下線”,若用戶端長時間無法收到伺服器的回複,則認為網絡已經斷開。

5)若用戶端,伺服器建立的是HTTP連接配接,則伺服器需要等到用戶端發送一次請求後才能将資料傳回給用戶端,http的用戶端定時向伺服器端發送連接配接請求,不僅可以保持線上,同時也是在“詢問”伺服器是否有新的資料,如果有就将資料傳給用戶端。

------------------------

(二)http與socket的差別:

1.Socket是對TCP/IP協定的封裝,通過調用Socket,才能使用TCP/IP協定。而是一個調用接口(API)。

2.socket屬于請求-相應形式并且是長連接配接,http基于請求-響應形式并且是短連接配接,并且是無狀态的應用層協定。針對其無狀态特性,在實際應用中又需要有狀态的形式,是以一般會通過session/cookie技術來解決此問題。

3.socket中服務端可主動将消息推送給用戶端;http中伺服器不可以主動将消息推送給用戶端,隻有在用戶端送出請求之後,才可以将消息發送給用戶端。

4.由于通常情況下Socket連接配接就是TCP連接配接,是以Socket連接配接一旦建立,通信雙方即可開始互相發送資料内容,直到雙方連接配接斷開。但在實際網絡應用中,用戶端到伺服器之間的通信往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆預設會關閉長時間處于非活躍狀态的連接配接而導緻 Socket 連接配接斷連,是以需要通過輪詢告訴網絡,該連接配接處于活躍狀态。

繼續閱讀