套接字概念與分類

2021-08-17 16:54:28 字數 969 閱讀 6165

概念

tcp用主機的ip位址加上主機上的埠號作為tcp連線的端點,這種端點就叫做套接字(socket)或插口。

分類常用的tcp/ip協議的3種套接字型別如下所示:

流式套接字(sock_stream):

流式套接字用於提供面向連線、可靠的資料傳輸服務。該服務將保證資料能夠實現無差錯、無重**送,並按順序接收。流式套接字之所以能夠實現可靠的資料服務,原因在於其使用了傳輸控制協議,即tcp(the transmission control protocol)協議。

資料報套接字(sock_dgram):

資料報套接字提供了一種無連線的服務。該服務並不能保證資料傳輸的可靠性,資料有可能在傳輸過程中丟失或出現資料重複,且無法保證順序地接收到資料。資料報套接字使用udp(user datagram protocol)協議進行資料的傳輸。由於資料報套接字不能保證資料傳輸的可靠性,對於有可能出現的資料丟失情況,需要在程式中做相應的處理。

原始套接字(sock_raw):

原始套接字(socket_raw)允許對較低層次的協議直接訪問,比如ip、 icmp協議,它常用於檢驗新的協議實現,或者訪問現有服務中配置的新裝置,因為socket_raw可以自如地控制windows下的多種協議,能夠對網路底層的傳輸機制進行控制,所以可以應用原始套接字來操縱網路層和傳輸層應用。比如,我們可以通過socket_raw來接收發向本機的icmp、igmp協議包,或者接收tcp/ip棧不能夠處理的ip包,也可以用來傳送一些自定包頭或自定協議的ip包,網路監聽技術很大程度上依賴於socket_raw.

備註原始套接字與標準套接字(標準套接字指的是前面介紹的流式套接字和資料報套接字)的區別在於:原始套接字可以讀寫核心沒有處理的ip資料報,而流式套接字只能讀取tcp協議的資料,資料報套接字只能讀取udp協議的資料。因此,如果要訪問其他協議傳送資料必須使用原始套接字。

Dart的套接字與web套接字

首先在專案中建三個dart檔案,如下圖 main.dart中的 如下 import dart io import dart convert main listarguments socket 1.dart中的 如下 import dart io main listarguments socket 2...

套接字socket 概念和例項

套接字 socket 套接字概念 套接字是一種程序間通訊的方法,不同於以往介紹的的程序通訊方法的是,它並不侷限於同一臺計算機的資源,例如共享內容或者訊息佇列。一台機器上的程序可以使用套接字與另一台機器上的程序通訊。因此客戶與伺服器可以分散到網路中。同一臺機器的程序間也可以用套接字通訊。套接字的工作過...

套接字與FIFO

套接字與fifo 全雙工 套接字 特點 sv 0 與sv 1 可讀可寫 案列 客戶端伺服器模型 操作 建立 int socketpair int domain,int type,int protocl,int sv 2 domain 套介面的域 af local af unix type 套介面型別...