套接字型別 socket type

2022-03-18 23:35:30 字數 2788 閱讀 3584

syn flood dos with linux sockets 

need to use [

raw socket]

so i find some about it. 

1

、資料流套接字(

stream socket

資料流式是一種面向連線的

socket

,針對於面向連線的

tcp服務應用,使用使用比較高質量的

tcp(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

瀏覽器使用的

協議等。

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

1 資料流套接字 stream socket 1 tcp提供可靠的連線。當tcp向另外一端傳送資料時,它要求對方返回乙個確認回答。如果沒有收到確認,則會等待一段時間後重新傳送,在數次重發失敗後,tcp才會放棄傳送。2 tcp為傳送的資料進行排序。比如傳送2048個位元組,tcp可能將它分成大小為10...

套接字型別與協議設定

本次學習主要了解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...