「作者簡介」:冬奧會網絡安全中國代表隊,CSDN Top100,就職奇安信多年,以實戰工作為基礎著作 《網絡安全自學教程》,適合基礎薄弱的同學系統化的學習網絡安全,用最短的時間掌握最核心的技術。
netstat 常用來查看監聽端口和網絡連接的情況。
參數
- -a:顯示所有連接
- -b:顯示可執行程序
- -n:顯示IP地址和端口號(默認顯示主機名和協議名)
- -o:顯示進程PID
- -p:指定協議(TCP、UDP、IP、IPv6、ICMP、ICMPv6、TCPv6 或 UDPv6)
- -t:顯示連接的卸載狀態
- -q:顯示所有連接,監聽端口不一定與連接相關
- -r:顯示核心路由表
- -f:顯示外部地址的完整域名
- -e:以太網統計,配合-s
- -s:每個協議的統計
- -x:活動 NetworkDirect 連接、偵聽器和共享端點
- -y:顯示所有連接的 TCP 連接模板
netstat
- 1、字段含義
- 2、狀態類型
- 2.1、TCP建立連接的5種狀態
- 2.2、TCP關閉連接的6種狀態
- 2.3、故障排查3種狀態
- 3、常用參數和過濾
- 4、定時刷新
- 5、查看丟包
1、字段含義
netstat -bo
顯示完整的字段,
字段解釋:
- 協議(Proto):TCP或UDP協議。
- 本地地址(local Address):本機使用的IP地址和端口號
- 外部地址(foreign Address):連接到遠程IP地址和端口
- 狀態(State):TCP連接狀態
- PID(-o參數):進程ID
- 可執行程序(-b參數):發起TCP連接的進程。一個進程可以打開多個端口,一個端口只能對應一個程序。
2、狀態類型
狀態一欄對應著TCP連接狀態。因為UDP是無狀態協議,不建立連接,所以狀態這一欄總是空的。
2.1、TCP建立連接的5種狀態
- CLOSED:關閉狀態,TCP連接的初始狀態。
- LISTEN:監聽狀態,服務端監聽客戶端的TCP連接請求。
- SYN-SENT:主動建立連接狀態,「第一次握手」客戶端發送建立連接請求后,等待服務端的響應。
- SYN-RCVD:等待連接狀態,「第二次握手」服務端接受連接請求后,等待客戶端確認。
- ESTABLISHED:數據傳輸狀態,「第三次握手」TCP連接建立成功。
TCP三次握手與連接狀態的對應關系。
2.2、TCP關閉連接的6種狀態
- ESTABLISHED:數據傳輸狀態。
- FIN-WAIT-1:主動關閉狀態,「第一次揮手」客戶端主動發送關閉連接的請求,等待服務器確認。
- CLOSE-WAIT:等待關閉狀態,「第二次揮手」服務端收到關閉連接請求后,等待本地用戶關閉連接。
- FIN-WAIT-2:等待關閉狀態,等待服務端發送關閉連接的請求。
- LAST-ACK:等待關閉狀態,「第三次揮手」服務端發送關閉連接的請求后,等待客戶端確認。
- TIME-WAIT:確認關閉狀態,「第四次揮手」客戶端確認關閉連接后,等待一段時間后自動關閉連接,目的是保證所有數據包都被對方接收。
- CLOSED:關閉狀態,TCP連接斷開,回到初始狀態。
TCP四次揮手與連接狀態的對應關系。
2.3、故障排查3種狀態
LISTEN是監聽狀態,當遇到故障時,可以觀察服務對應的端口有沒有被監聽,定位到具體的服務進程,縮小排查范圍。
SYN-RCVD是中間狀態,正常情況下很少見到,如果發現大量SYN-RCVD,則很有可能是遇到了SYN Flood攻擊。
ESTABLISHED是數據傳輸狀態,排查外聯情況時,可以把ESTABLISHED狀態的外部地址,放到威脅情報平臺,如果IP報了惡意,就根據PID找到進程,做進一步排查。
3、常用參數和過濾
平時用的最多的參數是 netstat -ano
,以數字形式顯示所有連接。
netstat -ano | findstr ESTABLISHED
根據狀態過濾
netstat -ano | findstr 20.198.162.76
或者根據IP地址過濾
4、定時刷新
參數后面加上數字,可以間隔刷新。
比如 5秒刷新一次,就會每5秒重新打印一次最新的網絡情況,Ctrl + c
停止命令
常配合其他參數使用,比如 netstat -ano 5
5、查看丟包
netstat -e
查看接口收發包情況,檢查是否丟包。