TCP —— TCP連接的建立與釋放

一、TCP連接管理


在這裏插入圖片描述
在TCP連接建立的過程中,要解決以下三個問題:

  1. 要使每一方都能夠確知對方的存在。
  2. 要允許雙方協商一些參數(如最大窗口值、是否使用窗口擴大選項、時間戳選項及服務質量等)。
  3. 能夠對運輸實體資源(如緩存大小、連接表中的項目等)進行分配。

TCP把連接作爲最基本的抽象,每條TCP連接有兩個端點,TCP連接的端點不是主機,不是主機的IP地址,不是應用進程,也不是傳輸層的協議端口。TCP連接的端口稱爲套接字( socket)。每條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)確定。

二、建立TCP連接(三次握手)


在這裏插入圖片描述
第一步:

客戶機的TCP首先向服務器的TCP發送一個連接請求報文段。這個特殊的報文段中不含應用層數據,其首部中的SYN標誌位被置爲1。另外,客戶機會隨機選擇一個起始序號seq=x(連接請求報文不攜帶數據,但要消耗一個序號)。

第二步:(分配服務器資源)

服務器的TCP收到連接請求報文段後,如同意建立連接,就向客戶機發回確認,併爲該TCP連接分配TCP緩存和變量。在確認報文段中,SYN和ACK位都被置爲1,確認號字段的值爲x+1,並且服務器隨機產生起始序號seq=y(確認報文不攜帶數據,但也要消耗一個序號)。確認報文段同樣不包含應用層數據。

第三步:(分配客戶端資源)

當客戶機收到確認報文段後,還要向服務器給出確認,並且也要給該連接分配緩存和變量。這個報文段的ACK標誌位被置1,序號字段爲x+1,確認號字段ack=y+1。該報文段可以攜帶數據,若不攜帶數據則不消耗序號。

成功進行以上三步後,就建立了TCP連接,接下來就可以傳送應用層數據。TCP提供的是全雙工通信,因此通信雙方的應用進程在任何時候都能發送數據。

泛洪攻擊的產生

SYN洪泛攻擊發生在OSI第四層,這種方式利用TCP協議的特性,就是三次握手。攻擊者發送TCP SYN,SYN是TCP三次握手中的第一個數據包,而當服務器返回ACK後,該攻擊者就不對其進行再確認,那這個TCP連接就處於掛起狀態,也就是所謂的半連接狀態,服務器收不到再確認的話,還會重複發送ACK給攻擊者。這樣更加會浪費服務器的資源。攻擊者就對服務器發送非常大量的這種TCP連接,由於每一個都沒法完成三次握手,所以在服務器上,這些TCP連接會因爲掛起狀態而消耗CPU和內存,最後服務器可能死機,就無法爲正常用戶提供服務了。

三、釋放TCP連接(四次揮手)


在這裏插入圖片描述
在這裏插入圖片描述

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