TCP連接的三個階段
TCP連接采取服務器客戶端的方式,主動發起連接的叫做客戶端,被動等待接受連接的叫做服務器,

連接建立(三次握手)
首先請求方 也就是客戶想要和一臺主機(服務器) 建立連接,客戶方行程首先通知客戶TCP,他想要建立一個和服務器上某個行程的連接,客戶中的TCP會用以下的步驟與服務器中的TCP建立一個鏈接:
ROUND 1:客戶端發送請求報文段 無應用層資料,
SYN = 1(同步位 表示是一個連接發送報文)
seq = x (發送的本報文段的第一個位元組的序號 4個位元組 主機隨機產生)
確認號ack無效 且確認位ACK為0
ROUND 2:服務端收到客戶端的連接請求報文段
如果服務器端有條件與客戶端建立連接,那么服務器端就會為這次TCP連接分配快取和資源,并向客戶端回傳請求確認報文段,允許連接,無應用層資料,
SYN = 1(同步位 表示是一個連接發送確認報文)
ACK = 1 (確認位為1)
seq = y
ack(確認號) = x + 1 (期待對方發送來的報文段的第一個位元組)
**ROUND 3:**客戶端為該TCP連接分配快取和變數,并且向服務器端回傳確認的確認,可以攜帶資料,
SYN = 0 (不是連接請求或是去連接確認請求)
ACK = 1
seq = x + 1
ack = y + 1
三次握手的大概程序可以這么理解:1 你好 我能親你嗎 2 好的 親吧 3 然后我親了他

洪泛攻擊
洪泛攻擊發生在傳輸層,這種方式利用了TCP協議的特性,也就是三次握手,攻擊者發送TCP SYN,SYN是TCP三次握手的第一個資料包,當服務器回傳ACK后,該攻擊者就不對其進行確認,那么這個TCP連接誒就處于被掛起的的狀態,也就是所謂的半連接狀態,服務器接收不到再確認的化嗎,還會重復的發送ACK給被攻擊者,這樣就會浪費服務器的資源,攻擊者就讀服務器發慫大量的這種TCP連接,由于每一個都無法完成三次握手,所以在服務器上,這些TCP連接一直處于被掛起的狀態,消耗了服務器的CPU和記憶體,最后服務器可能死機,無法為正常用戶提供服務,
TCP連接釋放(四次揮手)
參與一條TCP連接的兩個行程中的任何一個都能終止該連接,連接結束后,主機中的資源(快取和變數)將會得到釋放,
**ROUND 1:**客戶端發送連接釋放報文段,停止發送資料,主動關閉TCP連接,
FIN = 1 (結束位為1)
seq = u
**ROUND 2:**服務器端接收到釋放請求 然后回送一個確認報文段,客戶到服務器端的這個連接就釋放了,
—半關閉狀態
ACK = 1 (確認位為1)
seq = w
ack = u + 1
**ROUND 3:**服務器端發送完資料,就會發出連接釋放報文段,主動關閉TCP連接
FIN = 1(結束位)
ACK = 1
seq = v
ack = u + 1
ROUND 4:客戶端回送一個確認報文段,再等到時間等待計時器設定的2MSL(最長報文段壽命)后,徹底關閉
ACK = 1;
seq = u +1
ack = v + 1
**四次揮手的大概程序可以這么理解:
1 我們分手吧 我要把你的好友刪了(連接)
2 刪吧 然后刪掉了(我對她的連接關閉)
3 她同意刪好友之后 覺得你刪我我也要刪你(連接)說我把你也刪了
4 然后我說刪就刪 然后等了一會兒(2MSL) 徹底斷了聯系 **
2MSL的由來
客戶端發送的第四次揮手報文段,沒有發送到服務器
這時候服務器端會再次發送第三次揮手的內容,請求關閉
這時候客戶端收到請求,再次發送4次揮手,服務器收到,雙方關閉
如果沒有2MSL的話,客戶端直接關閉,這時候服務端就會重復的發送第三次揮手,服務器無法進入關閉狀態
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/50768.html
標籤:其他
上一篇:Jeecg Boot 2.3 里程碑版本發布,支持微服務和單體自由切換、提供新行編輯表格JVXETable
下一篇:測驗理論+經驗分享(更新中)
