TCP IP協議與socket的關係

2021-06-19 16:00:51 字數 1097 閱讀 5454

一.常識

要寫網路程式就必須用socket,這是程式設計師都知道的。而且,面試的時候,我們會被問不會socket程式設計?一般來說,很多人都會 說,socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。

對於網路程式設計,我們也言必稱tcp/ip,似乎其它網路協議已經不存在了。對於tcp/ip,我們還知道tcp和udp,前者可以保證資料的正確和可靠性,後者則允許資料丟失。最後,我們還知道,在建立連線前,必須知道對方的ip位址和埠號。除此,普通的程式設計師就不會知道太多了,很多時候這些知識 已經夠用了。最多,寫服務程式的時候,會使用多執行緒來處理併發訪問。

二.tcp/ip協議與socket的關係

tcp/ip只是乙個協議棧(是一堆約定),就像作業系統的執行機制一樣,必須要具體實現,同時還要提供對外的操作介面。就像作業系統會提供標準的程式設計介面,比如win32程式設計介面一樣,tcp/ip也必須對外提供程式設計介面,這就是socket程式設計介面--原來是這麼回事啊!(這個比喻很形象,但不知道正確不)

在socket程式設計介面裡,設計者提出了乙個很重要的概念,那就是socket。這個socket跟檔案控制代碼很相似,實際上在bsd系統裡就是跟文 件控制代碼一樣存放在一樣的程序控制代碼表裡。這個socket其實是乙個序號,表示其在控制代碼表中的位置。這一點,我們已經見過很多了,比如檔案控制代碼,視窗控制代碼等 等。這些控制代碼,其實是代表了系統中的某些特定的物件,用於在各種函式中作為引數傳入,以對特定的物件進行操作--這其實是c語言的問題,在c++語言裡, 這個控制代碼其實就是this指標,實際就是物件指標啦。

現在我們知道,socket跟tcp/ip並沒有必然的聯絡。socket程式設計介面在設計的時候,就希望也能適應其他的網路協議。所

以,socket

的出現只是可以更方便的使用

tcp/ip

協議棧而已,其對

tcp/ip

進行了抽象,形成了幾個最基本的函式介面。比如 create,listen,accept,connect,read和write等等。 (感覺像是

hibernate

與jdbc

的關係)

三.socket程式設計在ios開發中的用途

socket可以用於聊天程式設計(udp) 

TCP IP協議Http協議Socket的區別

tpc ip協議是傳輸層協議,主要解決資料如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資料。關於tcp ip和http協議的關係,網路有一段比較容易理解的介紹 我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料...

TCP IP協議 socket套接字

1.socket 之前講過tcp ip各層的定義,基於套接字的程式設計處在傳輸層和應用層的中間。socket能夠相容多種網路協議,最常見的是tcp udp。下面是使用scoket程式設計,客戶端與伺服器端tcp連線的整個過程 注意看每個狀態下的括號裡的就是程式中具體用到的函式,而具體程式中,客戶端和...

使用SOCKET實現TCP IP協議的通訊

一 原理 在上面這張圖中,你可以理解為程式a和程式b是2個socket程式,伺服器端程式a設定埠為81,已接受到3個客戶端的連線,計算機c開了2個程式,分別連線到e和d,而他的埠是計算機自動分配的,連線到e的埠為789,連線到d的為790。了解了tcpip通訊的基本結構後,接下來講解建立的流程,首先...