TCP異常終止(reset報文)安全
TCP的異常終止是相對於正常釋放TCP鏈接的過程而言的,咱們都知道,TCP鏈接的創建是經過三次握手完成的,而TCP正常釋放鏈接是經過四次揮手來完成,可是有些狀況下,TCP在交互的過程當中會出現一些意想不到的狀況,致使TCP沒法按照正常的四次揮手來釋放鏈接,若是此時不經過其餘的方式來釋放TCP鏈接的話,這個TCP鏈接將會一直存在,佔用系統的部分資源。在這種狀況下,咱們就須要有一種可以釋放TCP鏈接的機制,這種機制就是TCP的reset報文。reset報文是指TCP報頭的標誌字段中的reset位置一的報文,以下圖所示:服務器
TCP異常終止的常見情形spa
咱們在實際的工做環境中,致使某一方發送reset報文的情形主要有如下幾種:設計
1,客戶端嘗試與服務器未對外提供服務的端口創建TCP鏈接,服務器將會直接向客戶端發送reset報文。3d
2,客戶端和服務器的某一方在交互的過程當中發生異常(如程序崩潰等),該方系統將向對端發送TCP reset報文,告之對方釋放相關的TCP鏈接,以下圖所示:orm
3,接收端收到TCP報文,可是發現該TCP的報文,並不在其已創建的TCP鏈接列表內,則其直接向對端發送reset報文,以下圖所示:資源
4,在交互的雙方中的某一方長期未收到來自對方的確認報文,則其在超出必定的重傳次數或時間後,會主動向對端發送reset報文釋放該TCP鏈接,以下圖所示:開發
5,有些應用開發者在設計應用系統時,會利用reset報文快速釋放已經完成數據交互的TCP鏈接,以提升業務交互的效率,以下圖所示:get
Reset報文的利用it
1 安全設備利用reset報文阻斷異常鏈接
安全設備(如防火牆、入侵檢測系統等)在發現某些可疑的TCP鏈接時,會構造交互雙方的reset報文發給對端,讓對端釋放該TCP鏈接。好比入侵檢測檢測到黑客攻擊的TCP鏈接,其構形成被攻擊端給黑客主機發送reset報文,讓黑客主機釋放攻擊鏈接。
2 利用reset報文實施攻擊
安全設備能夠利用reset報文達到安全防禦的效果,黑客和攻擊者也能夠利用reset報文實現對某些主機的入侵和攻擊,最多見的就是TCP會話劫持攻擊。關於TCP會話劫持的相關知識請參考第三章《TCP會話劫持》一文。