IP、Http、Socket 有何區別與聯繫?

HTTP 協議對應於應用層,Socket 則是對 TCP/IP 協議的封裝和應用(程序員層面上)。

HTTP 是應用層協議,主要解決如何包裝數據。而我們平時說的最多的 Socket 是什麼呢?實際上 Socket 是對 TCP/IP 協議的封裝,Socket 本身並不是協議,而是一個調用接口(API)。

TCP/IP、Http、Socket 有何區別與聯繫?

通過 Socket,我們才能使用 TCP/IP 協議。實際上,Socket 跟 TCP/IP 協議沒有必然的聯繫。Socket編程接口在設計的時候,就希望也能適應其他的網絡協議。

所以說,Socket 的出現只是使得程序員更方便地使用 TCP/IP 協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道 的一些最基本的函數接口,比如 create、listen、connect、accept、send、read和 write 等。

網絡有一段關於 Socket 和 TCP/IP 協議關係的說法比較容易理解:“TCP/IP 只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外 的操作接口。

這個就像操作系統會提供標準的編程接口,比如 win32 編程接口一樣,TCP/IP 也要提供可供程序員做網絡開發所用的接口,這就是 Socket 編程接口。”

TCP/IP、Http、Socket 三者的關係

CSDN上有個比較形象的描述:

HTTP 是轎車,提供了封裝或者顯示數據的具體形式; Socket 是發動機,提供了網絡通信的能力。

實際上,傳輸層的 TCP 是基於網絡層的IP協議的,應用層 HTTP 協議又是基於傳輸層的 TCP 協議;

Socket 本身不算是協議,就像上面所說,它只是提供了一個針對 TCP 或者 UDP 編程的接口。

TCP/IP、Http、Socket 有何區別與聯繫?

利用 Socket 建立網絡連接的步驟

建立 Socket 連接至少需要一對套接字,其中一個運行於客戶端,稱為 ClientSocket ,另一個運行於服務器端,稱為 ServerSocket 。

套接字之間的連接過程分為三個步驟:服務器監聽,客戶端請求,連接確認


1、服務器監聽:服務器端套接字並不定位具體的客戶端套接字,而是處於等待連接的狀態,實時監控網絡狀態,等待客戶端的連接請求。


2、客戶端請求:指客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然後就向服務器端套接字提出連接請求。


3、連接確認:當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求時,就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給 客戶端,一旦客戶端確認了此描述,雙方就正式建立連接。而服務器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。

TCP/IP、Http、Socket 有何區別與聯繫?

HTTP 鏈接的特點

HTTP協議是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。

HTTP連接最顯著的特點是客戶端發送的每次請求 都需要服務器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。


分享到:


相關文章: