回覆列表
-
1 # kfpkg25533
-
2 # maimi32709
插口包含了埠,因為插口 = (IP地址,埠號)。插口是TCP連線的端點。插口(socket)有多種意思。當使用API時,插口往往被看成是作業系統的一種抽象,這時,插口和一個檔案描述符是很相似的,並且是應用程式設計介面API的一部分。插口由應用程式產生,並指明它將由客戶還是伺服器來使用。當應用程序建立一個插口時,要指明該插口使用的埠號。埠則是應用層服務的的一種代號,它用來標誌應用層的程序。埠是一個16 bit的整數。各種伺服器使用的埠號都是保留埠號,以便使客戶能夠找到伺服器。例如全球資訊網伺服器使用的埠號是80。在傳送資料時,應用層的資料透過埠向下交付到運輸層。在接收資料時,運輸層的資料透過適當的埠向上交付到應用層的某個應用程式。謝謝你看完我的回答
三者從本質上來說沒有可比性, socket則是對TCP/IP協議的封裝和應用(程式設計師層面上)。 也可以說,TPC/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸, 而HTTP是應用層協議,主要解決如何包裝資料。 關於TCP/IP和HTTP協議的關係,網路有一段比較容易理解的介紹: “我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別資料內容。 如果想要使傳輸的資料有意義,則必須使用到應用層協議。 應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。 WEB使用HTTP協議作應用層協議,以封裝HTTP文字資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。” 而我們平時說的最多的socket是什麼呢,實際上socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API)。 透過Socket,我們才能使用TCP/IP協議。 實際上,Socket跟TCP/IP協議沒有必然的聯絡。 Socket程式設計介面在設計的時候,就希望也能適應其他的網路協議。 所以說,Socket的出現只是使得程式設計師更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象, 從而形成了我們知道的一些最基本的函式介面,比如create、listen、connect、accept、send、read和write等等。 網路有一段關於socket和TCP/IP協議關係的說法比較容易理解: “TCP/IP只是一個協議棧,就像作業系統的執行機制一樣,必須要具體實現,同時還要提供對外的操作介面。 這個就像作業系統會提供標準的程式設計介面,比如win32程式設計介面一樣, TCP/IP也要提供可供程式設計師做網路開發所用的介面,這就是Socket程式設計介面。” 關於TCP/IP協議的相關只是,用博大精深來講我想也不為過,單單查一下網上關於此類只是的資料和書籍文獻的數量就知道,