1. 程式人生 > >針對TCP三次握手的缺點可能有什麽危害

針對TCP三次握手的缺點可能有什麽危害

聯網 url 隊列 不可 利用 輪詢 class cnblogs 表示

//https://www.cnblogs.com/lsgxeva/p/9192704.html

1.DDoS(Distributed Denial of Service,分布式拒絕服務)

SYN Flood

  SYN Flood是互聯網上最經典的DDoS攻擊方式之一,最早出現於1999年左右,雅虎是當時最著名的受害者。SYN Flood攻擊利用了TCP三次握手的缺陷,能夠以較小代價使目標服務器無法響應,且難以追查。

標準的TCP三次握手過程如下:

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

2、服務器在收到客戶端的SYN報文後,將返回一個SYN+ACK(即確認Acknowledgement)的報文,表示客戶端的請求被接受,同時TCP初始序號自動加1;

3、客戶端也返回一個確認報文ACK給服務器端,同樣TCP序列號被加1。

  經過這三步,TCP連接就建立完成。TCP協議為了實現可靠傳輸,在三次握手的過程中設置了一些異常處理機制。第三步中如果服務器沒有收到客戶端的最終ACK確認報文,會一直處於SYN_RECV狀態,將客戶端IP加入等待列表,並重發第二步的SYN+ACK報文。重發一般進行3-5次,大約間隔30秒左右輪詢一次等待列表重試所有客戶端。另一方面,服務器在自己發出了SYN+ACK報文後,會預分配資源為即將建立的TCP連接儲存信息做準備,這個資源在等待重試期間一直保留。更為重要的是,服務器資源有限,可以維護的SYN_RECV狀態超過極限後就不再接受新的SYN報文,也就是拒絕新的TCP連接建立。

  SYN Flood正是利用了上文中TCP協議的設定,達到攻擊的目的。攻擊者偽裝大量的IP地址給服務器發送SYN報文,由於偽造的IP地址幾乎不可能存在,也就幾乎沒有設備會給服務器返回任何應答了。因此,服務器將會維持一個龐大的等待列表,不停地重試發送SYN+ACK報文,同時占用著大量的資源無法釋放。更為關鍵的是,被攻擊服務器的SYN_RECV隊列被惡意的數據包占滿,不再接受新的SYN請求,合法用戶無法完成三次握手建立起TCP連接。也就是說,這個服務器被SYN Flood拒絕服務了。

2.。。。

返回 網絡編程

針對TCP三次握手的缺點可能有什麽危害