歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

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建立連接三次握手的一些因素:

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過小。

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

該變量控制內核向某個輸入的SYN/ACK段重新發送響應的次數,降低取值可以更早的檢測到客戶端連接失敗的嘗試。

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

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

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

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

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

該變量設置放棄回應一個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連接。

Copyright © Linux教程網 All Rights Reserved