Linux內核中影響tcp三次握手的一些協議配置

在Linux的發行版本中,都存在一個/proc/目錄,有的也稱它爲Proc文件系統。在 /proc 虛擬文件系統中存在一些可調節的內核參數。這個文件系統中的每一個文件都表示一個或多個參數,它們能夠經過 cat 工具進行讀取,或使用 echo 命令進行修改。下面給出了幾個可調節的參數是關於Linux TCP/IP 棧的參數,相關的幫助能夠經過man tcp或info tcp獲取。在這個目錄中,包括了一些特殊的文件,不只能用來反映內核的現行狀態和查看硬件信息,並且,有些文件還容許用戶來修改其中的內容,以調節內核的現行工做狀態,例如/proc/sys/子目錄下的文件。與/proc/目錄中其它目錄不相同的是,/proc/sys/目錄下的文件不只能提供系統的有關信息,並且還容許用戶當即中止或開啓內核的某些特性及功能。在/proc/sys/目錄中的/proc/sys/net/子目錄更是與網絡息息相關,咱們能夠經過設置此目錄下的某些文件來開啓與網絡應用相關的特殊功能,同時,也能夠經過設置這個目錄下的某些文件來保護咱們 的網絡安全。本文主要介紹 會影響tcp創建鏈接三次握手的一些因素:html

1  /proc/sys/net/ipv4/tcp_max_syn_backlog    (1024) 安全

  該變量控制每一個監聽端口接收的客戶端發送的SYN隊列的長度,輸入的SYN報文段鏈接請求須要排隊,直到本地服務端接收,若是鏈接數多於默認值,則新來的鏈接請求會被丟棄,在服務端會維護一個未鏈接隊列,該隊列爲每一個客戶端發送的SYN包開設一個條目,說明已經收到SYN包,而且向客戶端發出SYN+ACK包,等待客戶端的確認SYN包,這時服務端出於SYN_RECV狀態,若是tcp_max_syn_backlog太小,一直收不到客戶端最後發來的SYN確認包,服務端就會一直出於SYN_RECV狀態,查看netstat -an的時候若是SYN_RECV過多有可能就是tcp_max_syn_backlog太小。www.169it.com服務器

2  /proc/sys/net/ipv4/tcp_synack_retries    (5)cookie

  該變量控制內核向某個輸入的SYN/ACK段從新發送響應的次數,下降取值能夠更早的檢測到客戶端鏈接失敗的嘗試。網絡

3  /proc/sys/net/ipv4/tcp_retries2   (15)socket

   該變量控制內核向已經創建鏈接的遠程主機從新發送數據的次數,下降取值能夠更早的檢測到與遠程主機的鏈接失效,從而能夠快速釋放該連接的資源。tcp

4  /proc/sys/net/ipv4/ip_local_port_range   (32768   61000)工具

該變量控制系統上可用的臨時端口的範圍。端口是ip協議對各個socket加以區分的地址的邏輯抽象。spa

5  /proc/sys/net/ipv4/tcp_retries1   (3)htm

該變量設置放棄迴應一個tcp鏈接請求前,須要進行多少次重試。

6  /proc/sys/net/ipv4/tcp_syncookies  (0 關閉  1 打開)

  該參數主要用來防止SYN FLOOD攻擊。SYN Cookie是對TCP服務器端的三次握手協議做一些修改,專門用來防範SYN Flood攻擊的一種手段。它的原理是,在TCP服務器收到TCP SYN包並返回TCP SYN+ACK包時,不分配一個專門的數據區,而是根據這個SYN包計算出一個cookie值。在收到TCP ACK包時,TCP服務器在根據那個cookie值檢查這個TCP ACK包的合法性。若是合法,再分配專門的數據區進行處理將來的TCP鏈接。

 


本文來源:Linux內核中影響tcp三次握手的一些協議配置

相關文章
相關標籤/搜索