TCP/IP的三次握手

TCP是面向連接的,所謂面向連接,就是當計算機雙方通信時必需先建立連接,然後數據傳送,最後拆除連接三個過程

並且TCP在建立連接時又分三步走:

第一步是請求端(客戶端)發送一個包含SYN即同步(Synchronize)標誌的TCP報文,SYN同步報文會指明客戶端使用的端口以及TCP連接的初始序號;

第二步,服務器在收到客戶端的SYN報文後,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時TCP序號被加一,ACK即確認(Acknowledgement)。

第三步,客戶端也返回一個確認報文ACK給服務器端,同樣TCP序列號被加一,到此一個TCP連接完成。 然後纔開始通信的第二步:數據處理。

這就是所說的TCP三次握手(Three-way Handshake)。

簡單的說就是:(C:客戶端,S:服務端)

C:SYN到S

S:如成功--返回給C(SYN+ACK)

C:如成功---返回給S(ACK)

以上是正常的建立連接方式,但如下:

假設一個C向S發送了SYN後無故消失了,那麼S在發出SYN+ACK應答報文後是無法收到C的ACK報文的(第三次握手無法完成),這種情況下S一般會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連接,這段時間的長度我們稱爲SYN Timeout,一般來說這個時間是分鐘的數量級(大約爲30秒-2分鐘);一個C出現異常導致S的一個線程等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況,S將爲了維護一個非常大的半連接列表而消耗非常多的資源----數以萬計的半連接,即使是簡單的保存並遍歷也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上如果S的TCP/IP棧不夠強大,最後的結果往往是堆棧溢出崩潰---即使S的系統足夠強大,S也將忙於處理攻擊者僞造的TCP連接請求而無暇理睬客戶的正常請求(畢竟C的正常請求比率非常之小),此時從正常客戶的角度看來,S失去響應,這種情況我們稱作:服務器端受到了SYN Flood攻擊(SYN洪水攻擊)。

以上的例子常被稱作DoS(拒絕服務攻擊)與DDoS(分佈式拒絕服務攻擊)

注意:其中這兒的C和S都是相對的,對於現在的計算機來講,只要自己的計算機建立任一服務,在一定情況下都可被稱爲S

 

解決辦法:在你的計算機上安裝防火牆

個人防火牆一般我們可採用學習模式來讓防火牆自己來進行分析

有一點得說明,防火牆是無殺毒功能的,同時也無法清除垃圾郵件,簡單點講它只起到一個過濾作用

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章