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

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

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

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

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

服務端從closed狀態轉換爲listen狀態(在服務端開啓相應服務),只有在listen狀態才能夠接收客戶端創建鏈接請求dom

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

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

 netstat -an|grep -i es  --- 能夠看到socket條目信息ide

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

Active Internet connections (servers and established)orm

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

tcp        0     64 10.0.0.201:22               10.0.0.1:53793              ESTABLISHED blog

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

image.png 

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狀態

image.png

image.png 

 注意: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字段要分開發送

image.png 

鏈接時

服務端在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地址的分類

image.png 

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

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

   經常使用地址爲ABC三類地址:

image.png 

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

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

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

  D類地址爲組播地址:每個地址都做爲一個網段

  E類地址爲科學研究使用

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

 公網地址:是互聯網上能夠識別的地址信息,而且公網IP地址全球惟一

 私網地址:是局域網內能夠識別的地址信息,而且私網IP地址局域網內惟一,跨越不一樣的局域網能夠

           重複使用,所以私網地址有效的緩解了地址枯竭問題

 私有地址包括:

  A類: 10.0.0.0-10.255.255.255

  B類: 172.16.0.0-172.31.255.255

  C類: 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 實例

image.png

相關文章
相關標籤/搜索