要弄清tcp
udp
socket
http
websocket
之間的關係,首先要知道經典的OSI
七層模型,與之對應的是TCP/IP
的四層模型。
看圖說話:
程序員
從圖中能夠看出,tcp
udp
工做在傳輸層,http
websocket
工做在應用層,而socket
不屬於七層模型中的任一層,能夠理解爲socket
工做在傳輸層與應用層中間的隱含層中。web
socket
自己不是一種協議,而是對傳輸層中的TCP/UDP
協議進行了封裝,對用戶隱藏了內部TCP/UDP
是如何傳輸的,只提供一套接口(API)給程序員調用,從而完成socket
編程。經過socket
接口,咱們才能使用TCP/UDP
協議。編程
關於socket
與TCP/UDP
的關係,相似操做系統與接口之間的關係:TCP/IP
只是一個協議棧,就像操做系統的運行機制同樣,必需要具體實現,同時還要提供對外的操做接口。這個就像操做系統會提供標準的編程接口,好比win32編程接口同樣,TCP/IP
也要提供可供程序員作網絡開發所用的接口,這就是Socket
編程接口。服務器
而咱們一般瀏覽網頁用到的http
協議,是創建在TCP
協議之上的一種應用層協議。http
協議最顯著的特色是它是一種無狀態鏈接,客戶端發送的每次請求都須要服務器回送響應,在請求結束後,會主動釋放鏈接,是一種「短鏈接」。websocket
對於幾者之間的關係,能夠概況爲:網絡
http
websocket
等應用層協議經過socket
接口從而調用tcp
udp
等傳輸層協議,從而達到網絡通訊。socket
tcp
udp
=》 socket
=》 http
websocket
tcp
綜上所述,咱們編程不會直接去調用tcp
udp
,而是經過他們封裝好的接口socket
去通訊。能夠說,如今幾乎網絡上全部的通訊,底層都是經過socket
完成的,一切皆Socket
。spa