TCP協議的十一種狀態集,及子網劃分
1.1 tcp三次握手狀態集的轉換 (5種狀態集)
服務端和客戶端初始狀態:closed狀態
1. 服務端:開啟服務程序,其實創建socket(5元組概念),由closed狀態--listen監聽狀態
服務端從closed狀態轉換為listen狀態(在服務端開啟相應服務),只有在listen狀態才可以接收客戶端建立連接請求
closed--listen狀態,實際上就是創建了一個socket條目信息
socket條目包含五元組概念: 連接協議信息(tcp/udp)、目標IP地址信息、目標端口信息、源IP地址信息、源端口信息
netstat -an|grep -i es --- 可以看到
[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控制字段,回復syn和ack字段,有listen狀態---syn_rcvd
服務端在listen狀態接收到客戶端發送的syn請求,會響應syn和ack信息,並且從listen狀態變為syn_rcvd狀態(三次握手的第二次握手)
4. 客戶端:接收syn和ack字段,回復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 為什麽四次揮手過程,ack和fin字段要分開發送
連接時:
服務端在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 A、B、C三類地址的默認子網掩碼
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協議的十一種狀態集,及子網劃分