網絡由下往上分為 物理層 、數據鏈路層 、 網絡層 、 傳輸層 、 會話層 、 表現層 和 應用層。
通過初步了解,我知道IP協議對應於網絡層,TCP協議對應於傳輸層,而HTTP協議對應於應用層。
TCP/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,而HTTP協議是應用層協議,主要解決如何包裝數據。
關於TCP/IP和HTTP協議的關系,網絡有一段比較容易理解的介紹:
“我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容。如果想要使傳輸的數據有意義,則必須使用到應用層協議。
應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。
WEB使用HTTP協議作應用層協議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協議將它發到網絡上。”
什么是Socket
那么我們平時說的最多的socket是什么呢,實際上socket是對TCP/IP協議的封裝,它的出現只是使得程序員更方便地使用TCP/IP協議棧而已。socket本身並不是協議,它是應用層與TCP/IP協議族通信的中間軟件抽象層,是一組調用接口(TCP/IP網絡的API函數)
網絡有一段關於socket和TCP/IP協議關系的說法比較容易理解:
“TCP/IP只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作接口。
這個就像操作系統會提供標准的編程接口,比如win32編程接口一樣。
TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口。”
HTTP是轎車,提供了封裝或者顯示數據的具體形式;
Socket是發動機,提供了網絡通信的能力。
實際上,傳輸層的TCP是基於網絡層的IP協議的,而應用層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的接口。
原文地址https://blog.csdn.net/github_34606293/article/details/78230456