1. 程式人生 > >http與socket的聯絡和區別

http與socket的聯絡和區別

如題疑問也是我初學時糾結的問題。

嚴格意義上說,http和socket是兩個不同的概念,談不上什麼對比區別。

網路從上往下,可以分為五層:應用層、傳輸層、網路層、資料鏈路層、物理層。

(不同的識別法,也可以是七層或者四層,可以參考OSI七層模型與TCP/IP五層模型,我比較傾向於五層的分法,更容易理解)


http:超文字傳輸協議,作用於應用層,解決如何包裝資料。

socket:通常稱作套接字,網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket,通常的形式是:IP地址+TCPorUDP協議+Port埠號。socket並非一個協議,他作用於傳輸層和應用層之間,封裝了TCP/IP協議,使開發人員可以通過呼叫這個介面API,從而實現對TCP/IP協議的使用。

web應用使用http協議做應用層協議,以封裝http文字資訊,然後通過建立socket通訊,使用TCP/IP協議將資料發到網上。

應用層協議,有http、FTP、telnet等,也可以自己定義應用層協議。也就是說你基於socket通訊,可以使用其他的應用層協議;但是如果使用http,則必定用到socket。可以理解為http連線是建立在socket通訊之上的,socket通訊是http連線的一部分。

以上個人拙見總結,歡迎拍磚指正。共同進步!