tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745爲「GET」前兩個字母「GE」
0x4854爲「HTTP」前兩個字母「HT」linux
一般狀況下:一個正常的TCP鏈接,都會有三個階段ubuntu
TCP三次握手(建立OPEN)windows
客戶端/服務端 read/write數據包服務器
TCP四次握手cookie
SYN_SEND網絡
sysctl -w net.ipv4.tcp_syn_retries = 2
,做爲客戶端能夠設置SYN包的重試次數,默認5次(大約180s)SYN_RECEIVEDtcp
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
,設置該狀態的等待隊列數,默認1024,調大後可適當防止syn-flood.sysctl -w net.ipv4.tcp_syncookies=1
,打開syscookie
,在syn backlog
隊列不足的時候,提供一種機制將臨時syn鏈接換出sysctl -w net.ipv4.tcp_synack_retries=2
,做爲服務端返回ACK包的重試次數,默認5次(大約180s)ESTABLISHED工具
sysctl -w net.ipv4.tcp_keepalive_time = 1200
,默認爲7200秒(2小時),系統針對空閒連接會進行心跳檢查,若是超過net.ipv4.tcp_keepalive_probes * net.ipv4.tcp_keepalive_intvl = 默認11分,終止對應的tcp連接,可適當調整心跳檢查頻率FIN_WAIT1this
CLOSE_WAIT命令行
FIN_WAIT2
LASK_ACK
TIME_WAIT
sysctl -w net.ipv4.tcp_tw_recycle = 1
, 打開快速回收TIME_WAIT,Enabling this option is not recommended since this causes problems when working with NAT (Network Address Translation)sysctl -w net.ipv4.tcp_tw_reuse =1
, 快速回收並重用TIME_WAIT的連接, 貌 和tw_recycle有衝突,不能重用就回收?net.ipv4.tcp_max_tw_buckets
: 處於time_wait狀態的最多連接數,默認爲180000.備註:
主動關閉方在接收到被動關閉方的FIN請求後,發送給對方一個ACK後,將本身的狀態由FIN_WAIT2修改成TIME_WAIT,而必須再等2MSL(Maximum Segment Lifetime,MSL是一個數據報在internetwork中能存在的時間)時間以後雙方纔能把狀態 都改成CLOSED以關閉鏈接。目前RHEL裏保持TIME_WAIT狀態的時間爲60秒
keepAlive策略能夠有效的避免進行三次握手和四次關閉的動做
其餘網絡重要參數:
net.ipv4.tcp_rmem 參數
net.ipv4.tcp_wmem 參數
Tcpdump
tcpdump是linux系統自帶的抓包工具,主要經過命令行的方式,比較適合在線上服務器進行抓包操做,若是是windows或者ubuntu徹底可 以選擇一些圖形化的工具,ubuntu比較推薦用wireshark,安裝方式很簡單sudo apt一下便可。