1. 程式人生 > >TCP協議的十一種狀態集,及子網劃分

TCP協議的十一種狀態集,及子網劃分

stat 四次揮手 建立 pad word 劃分 dos ott pro

第1章 tcp協議的十一種狀態集轉換

1.1 tcp三次握手狀態集的轉換 5種狀態集

服務端和客戶端初始狀態:closed狀態

1. 服務端:開啟服務程序,其實創建socket5元組概念),由closed狀態--listen監聽狀態

服務端從closed狀態轉換為listen狀態(在服務端開啟相應服務),只有在listen狀態才可以接收客戶端建立連接請求

closed--listen狀態,實際上就是創建了一個socket條目信息

socket條目包含五元組概念: 連接協議信息(tcp/udp)、目標IP地址信息、目標端口信息、源IP地址信息、源端口信息

netstat -an|grep -i es --- 可以看到

socket條目信息

[root@wuhuang ~]# netstat -an|grep -i es

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 64 10.0.0.201:22 10.0.0.1:53793 ESTABLISHED

Active UNIX domain sockets (servers and established)

2. 客戶端:發送syn控制字段,由closed狀態---syn_send

客戶端發送syn信息給服務端,然後客戶端從closed狀態變為syn_send狀態(三次握手的第一次握手)

3. 服務端:接收syn控制字段,回復synack字段,有listen狀態---syn_rcvd

服務端在listen狀態接收到客戶端發送的syn請求,會響應syn和ack信息,並且從listen狀態變為syn_rcvd狀態(三次握手的第二次握手)

4. 客戶端:接收synack字段,回復ack字段,由syn_send---established連接建立狀態

客戶端在syn_send狀態接收到syn和ack字段信息,然後回復ack確認信息(三次握手的第三次握手) syn_send狀態變為最終建立連接的狀態(established)

5. 服務端:接收ack字段,由syn_rcvd狀態---established連接建立狀態

服務端在syn_rcvd狀態接收到了ack字段信息,從syn_rcvd狀態變為established

技術分享圖片

1.2 tcp四次揮手狀態集的轉換6種狀態集

服務端和客戶端揮手前的狀態established狀態

6. 客戶端:發送fin字段,established狀態變為fin_wait1狀態(等待服務端發送ack確認)

客戶端在established狀態發送fin字段信息給服務端(四次揮手過程第一次揮手)

然後客戶端狀態轉變為fin_wait1(第一次等待:服務端的確認ack信息)

7. 服務端:接收fin字段,established狀態變為close_wait狀態,會發送ack確認字段

服務端在established狀態接收到客戶端發送的fin字段信息,從established狀態變為close_wait

服務端在close_wait發送ack確認字段(四次揮手的第二揮手)

8. 客戶端:接收ack字段,由fin_wait1狀態---fin_wait2(等待服務端發送fin字段)狀態

客戶端在fin_wait1狀態接收服務端的ack信息,進入到fin_wait2(第二次等待:)

沒有等來ack字段,fin_wait1狀態等來了fin字段,由fin_wait1變為closing狀態

9. 服務端:再次發送fin字段,由close_wait狀態---last_ack狀態

服務端在close_wait發送fin斷開連接字段給客戶端(四次揮手的第三次揮手)

服務端從close_wait變為last_ack狀態

10. 客戶端:接收服務端fin字段,發送最後的ack確認字段,由fin_wait2狀態---time_wait狀態

客戶端在fin_wait2狀態接收服務端的fin信息,然後響應ack信息,並將自己的狀態轉變為time_wait狀態(四次揮手的第四次揮手)

11. 服務端:接收客戶端ack字段,由last_ack狀態---closed狀態

服務端在last_ack狀態接收到客戶端發送的ack字段信息之後,就會最終變為closed狀態

客戶端:等一定時間(2分鐘),時間等待完成之後。才會time_wait---closed狀態

技術分享圖片

技術分享圖片

註意:SYN攻擊
在三次握手過程中,Server發送SYN-ACK之後,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處於SYN_RCVD狀態,當收到ACK後,Server轉入ESTABLISHED狀態。SYN攻擊就是Client在短時間內偽造大量不存在的IP地址,並向Server不斷地發送SYN包,Server回復確認包,並等待Client的確認,由於源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態且源IP地址是隨機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現行:
netstat -nap | grep SYN_RECV

[root@wuhuang ~]# netstat -nap | grep SYN_RECV

1.3 問題

1.3.1 為什麽四次揮手過程,ackfin字段要分開發送

技術分享圖片

連接時

服務端在LISTEN狀態下,收到建立連接請求的SYN報文後,把ACK和SYN放在一個報文裏發送給客戶端。

關閉連接時

當收到客戶端FIN報文時,僅僅表示對方不再發送數據了但是還能接收數據,服務端會向上層(應用層)匯報是否還有數據發送並回應ACK給客戶端,然後會等數據傳輸完畢後,再發送FIN報文給對方來表示同意現在關閉連接,因此,服務端ACK和FIN一般都會分開發送

1.3.2 客戶端為什麽要有time_wait

為了確保服務端能收到ack,客戶端會在time_wait不斷給服務端發送ack

1.3.3 closing狀態的由來

在第二次揮手的時候,客戶端沒收到服務端發送的ack,但收到了fin字段信息,理論上收到fin後應該轉換為time_wait,所以加了colsing起一個緩存時間(過程很快)

第2章 IP地址及子網劃分

2.1 什麽是IP地址

1. IPv4:由32位二進制(32bit)組成,一般用點分十進制來表示,將其分為4段,每段8位二進制

2. IPv6:由128位二進制組成

2.2 IP地址的分類

技術分享圖片

2.2.1 IP的數值範圍劃分:A B C D E 五類地址

IP地址的網絡部分由IANA(Internet地址分配機構)統一分配,以保證IP地址的唯一性

常用地址為ABC三類地址:

技術分享圖片

A類地址(1-126):網絡部分+主機部分+主機部分+主機部分

B類地址(128-191):網絡部分+網絡部分+主機部分+主機部分

C類地址(192-223):網絡部分+網絡部分+網絡部分+主機部分

D類地址為組播地址:每一個地址都作為一個網段

E類地址為科學研究使用

2.2.2 IP地址的用途分類:公網地址,私網地址

公網地址:是互聯網上可以識別的地址信息,並且公網IP地址全球唯一

私網地址:是局域網內可以識別的地址信息,並且私網IP地址局域網內唯一,跨越不同的局域網可以

重復使用,因此私網地址有效的緩解了地址枯竭問題

私有地址包括:

A類: 10.0.0.0/8 -------> 10.0.0.0-10.255.255.255

B類:172.16.0.0/16 -------> 172.16.0.0-172.31.255.255

C類:192.168.0.0/24 -------> 192.168.0.0-192.168.255.255

169.254.0.1——169.254.255.254,子網掩碼為255.255.0.0 微軟內部保留地址

2.2.3 特殊地址

127.0.0.1

又稱為本機回環地址,通常利用在本機上ping此地址來檢查TCP/IP協議安裝是否正確

0.0.0.0

主機位全為0的稱為是網絡地址

255.255.255.255

主機位全位1的稱為是廣播地址,即向所有人發出信息

2.3 ABC三類地址可用主機數計算

主機部分為全0表示的是網絡地址,即網段

主機部分為全1表示的是廣播地址

因此0和255作為主機的地址,是不能進行分配使用的,只有1-254之間的地址可以進行分配為主機地址使用(即主機部分不為全0,不為全1的是可用IP

可以分配的主機地址個數=2的N次方-2

註:N為主機位的個數

-2就表示減去網絡地址和廣播地址,剩余的就是可分配的主機地址

2.4 子網掩碼

2.4.1 作用:用來確定IP的網絡地址

掩碼作用

1. 利用掩碼快速得知是A類地址 還是B類 或是C類

2. 利用掩碼定位網絡位信息

掩碼表現形式

用十進制表示 分為四組 也是32位的二進制數,分為四組,對應IP地址的網絡部分用1表示

,對應IP地址的主機部分用0表示

2.4.2 ABC三類地址的默認子網掩碼

A類:255.0.0.0或/8

B類:255.255.0.0或/16

C類:255.255.255.0或/24

2.5 子網劃分

2.5.1 劃分子網原因

1. 會出現大量的局域網地址,同時向一個網關發送請求,引起網關設備的負載過高

2. 會引起局域網內的大量廣播數據傳送,形成廣播風暴

3. 而且會非常的浪費地址空間,有可能只有兩臺主機或者一臺,就分配一個B類地址

2.5.2 優點

1. 將一個大的廣播域劃分成幾個小的廣播域環境

2. 減少網關設備所承載的負載量

3. 有效的避免ip地址的浪費,使一個大的地址空間更加彈性和更加靈活的進行分配

子網掩碼及相關參數對應表(C類

子網掩碼

子 網 數

主 機 數

可用主機數

/25

2

128

126

/26

4

64

62

/27

8

32

30

/28

16

16

14

/29

32

8

6

/30

64

4

2

2.5.3 實例

技術分享圖片

TCP協議的十一種狀態集,及子網劃分