Socket到底是什麼?

學習java網絡編程一段時間後,突然被問到socket是什麼?回答不上來,感覺很尷尬,於是趕緊是查閱資料。

網絡由下往上分爲 物理層 、數據鏈路層 、 網絡層 、 傳輸層 、 會話層 、 表現層 和 應用層。

通過初步瞭解,我知道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在哪裏

網絡有一段關於socket和TCP/IP協議關係的說法比較容易理解:

  “TCP/IP只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作接口。
  這個就像操作系統會提供標準的編程接口,比如win32編程接口一樣。
  TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口。”

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

  實際上,傳輸層的TCP是基於網絡層的IP協議的,而應用層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章