套接字型別 socket type

2021-06-18 14:09:48 字數 1665 閱讀 6135

1、資料流套接字(stream socket)

(1) tcp提供可靠的連線。當tcp向另外一端傳送資料時,它要求對方返回乙個確認回答。如果沒有收到確認,則會等待一段時間後重新傳送,在數次重發失敗後,tcp才會放棄傳送。

(2) tcp為傳送的資料進行排序。比如傳送2048個位元組,tcp可能將它分成大小為1024的兩個段,並分別進行編號「1」和「2」。接收段將根據編號對資料進行重新排序並判斷是否為重複資料。

(3) tcp提供流量控制。它會通知對方自己能夠接受資料的容量,稱為視窗,這樣就確保不會發生緩衝區溢位的情況。

(4) tcp的連線是雙工的。在給定連線上的應用程序在任何時刻既可以傳送也可以接受資料。

在tcp中相當重要的乙個概念就是建立乙個tcp連線,也就是三次握手過程,理解它對於今後程式設計有非常大的幫助。下面我們就詳細學習一下這個過程。

(1) 伺服器必須準備好接收外來的連線。由呼叫socket、bind和listen函式完成,稱為被動開啟(passive open)。

(2) 客戶通過呼叫connect進行主動開啟(active open)。客戶tcp傳送乙個syn(同步)包,以告知伺服器客戶在這次連線中要傳送資料的初始序列號。syn資料報不包含資料,只有乙個ip頭、乙個tcp頭及其選項。

(3) 伺服器確認客戶的syn,同時自己也傳送乙個syn資料報,告知客戶它自己在這次連線中傳送資料的初始序列號。伺服器分別對客戶syn的應答ack,以及自己的syn資料。

(4)客戶返回對伺服器syn的確認應答ack。

許多廣泛應用的程式都使用資料流套接字,比如telnet、www瀏覽器使用的http協議等。

2、資料報套接字(datagram socket)

資料報式socket是一種無連線的套接字,對應於無連線的udp服務應用,相應協議是udp。

udp提供無連線的服務,就是說udp客戶與伺服器不必保持長期的連線關係。例如,乙個udp客戶可以建立乙個套接字並傳送乙個資料報給乙個伺服器,然後可以立即用同乙個套接字傳送另乙個資料報給另乙個伺服器。udp所面臨的問題就是缺乏可靠性。因為它沒有例如確認、超時重傳等複雜機制,因此它不能保證資料的到達以及到達的次序。

那麼我們在傳送過程中,如果資料丟失了該怎麼辦呢?其實每個程式在udp上都有自己的協議,如果在一定時間內沒有收到對方發回的確認應答,它將重新傳送,直到得到ack。

udp實現過程比較簡單,因此在一定程度上效率較高,對於一些資料量小,無須互動的通訊情況還是適用的。使用udp的應用程式有:tftp、bootp等。

3、原始套接字(raw socket)

除了上面兩種常用的套接字型別外,還有一類原始套接字(raw socket),在某些網路應用中擔任重要角色。比如我們平時想看一看網路是否通達,就用ping命令測試一下。ping命令用的是icmp協議,因此我們不能通過建立乙個sock_stream或sock_dgram來傳送這個包,而只能自己親自來構建icmp包來傳送。另外一種情況是,許多作業系統只實現了幾種常用的協議,而沒有實現其它如ospe、ggp等協議。如果自己有必要編寫位於其上的應用,就必須借助raw socket來實現,這是因為作業系統遇到自己不能夠處理的資料報,就將這個包交給raw socket處理。

raw socket的作用主要在三個方面:

(1) 通過raw socket來接收和傳送icmp協議包。

(2) 接收發向本機的但tcp/ip棧不能夠處理的ip包。

(3) 用來傳送一些自己指定源位址特殊作用的ip包。

套接字型別 socket type

syn flood dos with linux sockets need to use raw socket so i find some about it.1 資料流套接字 stream socket 資料流式是一種面向連線的 socket 針對於面向連線的 tcp服務應用,使用使用比較高質量的...

套接字型別與協議設定

本次學習主要了解socket函式的建立以及不同套接字的特性,只涉及到socket函式,所以大家不用覺得困難,但是會有些枯燥,這是後面實際網路程式設計的基礎,需要好好掌握。看一下socket函式 include int socket int domain,int type,int protocol 第...

TCP IP 第2章 套接字型別與協議設定

int socket int domain,int type,int protocol 成功時返回檔案描述符,失敗時返回 1。domain 套接字中使用的協議族 protocol family 資訊。type 套接字資料傳輸型別資訊。protocol 計算機間通訊中使用的協議資訊。標頭檔案sys s...