Socket詳解 + HTTP和Socket的區別,兩個協議哪個更高效一點?


Socket定義

1、Socket即套接字,是一個對 TCP / IP協議進行封裝的編程調用接口(API)

  1. 即通過Socket,我們才能在Andorid平台上通過 TCP/IP協議進行開發。
  2. Socket不是一種協議,而是一個編程調用接口(API),屬於傳輸層(主要解決數據如何在網絡中傳輸)。

2、成對出現,一對套接字:

Socket ={(IP地址1:PORT端口號),(IP地址2:PORT端口號)}

原理

Socket的使用類型主要有兩種:

1、流套接字(streamsocket) :基於 TCP協議,采用<流>的方式 提供可靠的字節流服務

2、數據報套接字(datagramsocket):基於 UDP協議,采用<數據報文>提供數據打包發送的服務

Socket 與 Http 對比

1、Socket屬於傳輸層,因為 TCP/IP協議屬於傳輸層,解決的是數據如何在網絡中傳輸的問題。

2、HTTP協議屬於應用層,解決的是如何包裝數據。

由於二者不屬於同一層面,所以本來是沒有可比性的。但隨着發展,默認的Http里封裝了下面幾層的使用,所以才會出現Socket & HTTP協議的對比:(主要是工作方式的不同):

HTTP:采用<請求—響應>方式。

即建立網絡連接后,當 客戶端 向 服務器 發送請求后,服務器端才能向客戶端返回數據。

可理解為:是客戶端有需要才進行通信。

Socket:采用<服務器主動發送數據>的方式。

即建立網絡連接后,服務器可主動發送消息給客戶端,而不需要由客戶端向服務器發送請求。

可理解為:是服務器端有需要才進行通信。

HTTP和Socket的區別,兩個協議哪個更高效一點?

1、創建Socket鏈接時,可以指定使用的傳輸層協議,Socket可以支持不同的傳輸層協議(TCP或UDP),當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。Socket連接一旦建立,通信雙方即可開始發送數據內容,直到雙方連接斷開。

注意,同HTTP協議相比不同的是HTTP只能基於TCP,Socket不僅能走TCP,而且還能走UDP,這個是socket的第一個特點。

2、HTTP連接使用的是“請求-響應”的方式,不僅在請求時需要先建立連接,而且需要客戶端向服務器發出請求后,服務器端才能回復數據。

很多情況下,需要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步

此時若雙方建立的是Socket連接,服務器就可以直接將數據傳送給客戶端;若雙方建立的是HTTP連接,則服務器需要等到客戶端發送一次請求后才能將數據傳回給客戶端。

Socket效率高,至少不用解析HTTP報文頭部一些字段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM