TCP三次握手與Linux的TCP核心引數優化

2022-07-26 04:21:07 字數 2309 閱讀 5040

tcp是乙個面向連線的協議,在連線雙方傳送資料之前,首先需要建立一條連線。tcp建立連線可以簡單稱為:三次握手(說白了就是建立乙個tcp連線的時候,客戶端和服務端總共要發3個包,socket程式設計裡面執行connect()的時候,將觸發三次握手),斷開tcp連線可以叫做四次握手(socket程式設計裡面任何一方執行close()操作即可產生揮手動作)。

最初兩端的tcp程序都處於closed關閉狀態,a主動開啟連線,而b被動開啟連線。(a、b關閉狀態closed——b收聽狀態listen——a同步已傳送狀態syn-sent——b同步收到狀態syn-rcvd——a、b連線已建立狀態established

socket已經建立連線,表示處於連線的狀態,一般認為有乙個established認為是乙個服務的併發連線。這個連線狀態在生產場景很重要,要重點關注。

socket正在積極嘗試建立乙個連線,即處於傳送後連線前的乙個等待但未匹配進入連線的狀態。

已經從網路上收到乙個連線請求。

socket已關閉,連線正在或正要關閉。

連線已關閉,並且socket正在等待遠端結束。

socket正在等待關閉處理仍在網路上的資料報,這個連線狀態在生產場景很重要,要重點關注。

遠端已經結束,等待socket關閉。

遠端已經結束,並且socket也已關閉,等待acknowl-edgement。

socket正在監聽連線請求。

sockets關閉,但是我們仍舊沒有傳送資料。

未知的狀態。

在三次握手過程中,伺服器傳送syn,ack之後,收到客戶端的ack之前的tcp連線稱為半連線(half-open connect)。此時伺服器處於syn_recv狀態。當收到ack後,伺服器轉入established狀態。

syn攻擊就是 攻擊客戶端 在短時間內偽造大量不存在的ip位址,向伺服器不斷地傳送syn包,伺服器回覆確認包,並等待客戶的確認,由於源位址是不存在的,伺服器需要不斷的重發直 至超時,這些偽造的syn包將長時間占用未連線佇列,正常的syn請求被丟棄,目標系統執行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。

syn攻擊是乙個典型的ddos攻擊。檢測syn攻擊非常的方便,當你在伺服器上看到大量的半連線狀態時,特別是源ip位址是隨機的,基本上可以斷定這是一次syn攻擊。在linux下可以如下命令檢測是否被syn攻擊:

[root@rsync_test ~]# netstat -n | awk '/^tcp/  end '

time_wait 30

fin_wait1 1

established 615

syn_recv 2

1.使用echo value方式直接追加到檔案裡如echo "1" >/proc/sys/net/ipv4/tcp_syn_retries,但這種方法裝置重啟後又會恢復為預設值

2.把引數新增到/etc/sysctl.conf中,然後執行sysctl -p使引數生效,永久生效

tcp三次握手 TCP 三次握手總結

tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...

tcp的三次握手 傳輸層 TCP 三次握手

使用tcp協議進行通訊的雙方必須先建立連線,然後才能開始傳輸資料。為了確保連線雙方可靠性,在雙方建立連線時,tcp協議採用了三次握手策略。如圖 客戶端傳送帶有syn標誌的連線請求報文段,然後進入syn send狀態,等待服務端的確認。服務端接收到客戶端的syn報文段後,需要傳送ack資訊對這個syn...

TCP 三次握手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...