Socket是什么

初步了解
網絡由下往上分為 物理層 、數(shù)據鏈路層 、 網絡層 、 傳輸層 、 會話層 、 表現(xiàn)層 和 應用層。IP協(xié)議對應于網絡層,TCP協(xié)議對應于傳輸層,而HTTP協(xié)議對應于應用層。
關于TCP/IP和HTTP協(xié)議的關系
常規(guī)理解:
TCP/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據如何在網絡中傳輸。
HTTP協(xié)議是應用層協(xié)議,主要解決如何包裝數(shù)據。
通俗理解:
我們在傳輸數(shù)據時,可以只使用(傳輸層)TCP/IP協(xié)議,但是那樣的話,如果沒有應用層,便無法識別數(shù)據內容。如果想要使傳輸?shù)臄?shù)據有意義,則必須使用到應用層協(xié)議。
注:(1)應用層協(xié)議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協(xié)議。
(2)?WEB使用HTTP協(xié)議作應用層協(xié)議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網絡上。
Socket是什么
實際上socket是對TCP/IP協(xié)議的封裝,它的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已。socket本身并不是協(xié)議,它是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,是一組調用接口(TCP/IP網絡的API函數(shù))
關于Socket和TCP/IP協(xié)議的關系
TCP/IP只是一個協(xié)議棧,就像操作系統(tǒng)的運行機制一樣,必須要具體實現(xiàn),同時還要提供對外的操作接口。這個就像操作系統(tǒng)會提供標準的編程接口,比如win32編程接口一樣。TCP/IP也要提供可供程序員做網絡開發(fā)所用的接口,這就是Socket編程接口。
實際上,傳輸層的TCP是基于網絡層的IP協(xié)議的,而應用層的HTTP協(xié)議又是基于傳輸層的TCP協(xié)議的,而Socket本身不算是協(xié)議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的接口。