http與socket是網絡編程中最為重要的概念,不管是客戶端還是服務端,都是最為重要的部分,以下簡述兩者的關系和區別(個人見解)。
Http
定義
基于應用層的超文本傳輸協議。通常承載于TCP/IP協議之上,有時也承載于TLS或SSL協議層之上,即https。
特點
- 必須是客戶端請求,服務端才能響應,無法由服務端自主發起。
- 網絡連接為短連接,在請求結束后,就會自動釋放本次連接。
優點
- 基于應用層的接口,簡單易用,非常容易上手,對開發者要求較低
缺點
- 傳輸速度有限,數據量較大
- 對服務器性能要求較高
- 數據傳輸過程中安全性有限
適用范圍
- 需要快速開發的應用
- 對數據實時交互性要求不太高的應用
- 對數據安全性不是太高要求的應用
- 對服務器性能較差的應用
Socket
定義
基于TCP/IP的網絡API,處于傳輸層,用于提供給程序員操作TCP/IP網絡傳輸的應用程序接口。通常稱作"套接字",實現服務器和客戶端之間的物理連接,并進行數據傳輸。是應用層和傳輸層之間的橋梁。
特點
- 建立socket連接至少需要一對套接字(socket),一個運行在客戶端,一個運行在服務端
- 通常Socket連接是基于TCP連接的,因此屬于長連接
- Socket一旦建立連接,通信雙方即可持續相互發送數據內容,直到雙方連接斷開
優點
- 傳輸數據可自定義,數據量很小
- 數據傳輸時間段,性能高
- 多用于客戶端與服務端之間的數據實時交互
- 可以使用加密手段,數據安全性很高
缺點
- 相對于http協議傳輸,開發量較大
- 對開發人員的開發水平要求較高,增加開發量
適用范圍
- 適用于對傳輸速度要求高的應用,如網絡游戲
- 適用于對數據安全性要求較高的應用中,如銀行內部數據交互
- 對產生流量巨大的應用