掌握本機開放連接埠、建立中連線、監聽狀態,是排查網路服務異常、驗證防火牆規則、發現異常進程的核心技能。Windows 7 提供 netstat(連線統計)與 netsh(網路殼層設定)兩大原生工具,本文詳細解析參數組合與實戰解讀技巧。
| 指令 | 功能 | 適用場景 |
|---|---|---|
netstat -an | 顯示所有連線與監聽埠,數位格式 (IP:Port),不解析主機名 | 快速總覽、腳本解析 |
netstat -ano | 加上 PID (Process ID),可關聯進程 | 定位佔用埠的程式 |
netstat -anb | 顯示建立連線的可執行檔名稱 (需管理員) | 直接看到程式名稱 |
netstat -anp TCP | 僅顯示 TCP 連線 | 過濾 UDP 雜訊 |
netstat -r | 顯示路由表 | 排查路由、多網卡優先序 |
netstat -s | 顯示協定統計 (TCP/UDP/ICMP/IPv4/IPv6) | 效能分析、封包丟失統計 |
netstat -an 5 | 每 5 秒自動刷新一次 | 即時監控連線變化 |
| 狀態 | 含義 | 典型場景 |
|---|---|---|
LISTENING | 埠口正在監聽等待連線 | 伺服器服務啟動正常 (HTTP:80, SSH:22, SQL:1433) |
ESTABLISHED | 連線已建立,資料傳輸中 | 正常瀏覽、資料庫連線、SSH 會話 |
TIME_WAIT | 主動關閉方等待 2MSL 確認對方收到 FIN | 大量出現可能為短連線風暴、需調整 TCP 參數 |
CLOSE_WAIT | 被動關閉方等待應用程式發出 close() | 大量出現表示應用程式未正確關閉 Socket (洩漏) |
SYN_SENT | 已發送 SYN 等待 SYN+ACK | 客戶端發起連線中 |
SYN_RECEIVED | 已收到 SYN 已回覆 SYN+ACK 等待 ACK | 伺服端處理三向交握中 |
FIN_WAIT_1/2 | 主動關閉流程中 | 正常關閉過程 |
C:\> netstat -ano | findstr :8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 4352
TCP [::]:8080 [::]:0 LISTENING 4352
C:\> tasklist /FI "PID eq 4352"
映像名稱 PID 階段名 階段號 記憶體使用
java.exe 4352 Console 1 1,234,567 K
結論:PID 4352 為 java.exe 佔用 8080 埠。
# 顯示所有防火牆規則
netsh advfirewall firewall show rule name=all
# 顯示特定埠規則
netsh advfirewall firewall show rule name=all | findstr "8080"
# 顯示目前設定檔狀態
netsh advfirewall show allprofiles
netsh interface ip show config
netsh interface ipv4 show addresses
netsh interface ipv4 show dnsservers
netsh int ip reset
netsh winsock reset
# 重啟電腦
resmon → 網路頁籤 → 聆聽埠/連線/傳輸活動 圖形化即時顯示# 取得所有監聽埠及擁有進程
Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object LocalPort
# 關聯進程名稱
Get-Process -Id (Get-NetTCPConnection -State Listen).OwningProcess | Select-Object Id,ProcessName -Unique
| 場景 | 指令 | 判斷邏輯 |
|---|---|---|
| 服務無法啟動「埠口被佔用」 | netstat -ano | findstr :埠號 | 若有 LISTENING → 找出 PID → tasklist 定位程式 → 決定終止或改埠 |
| 網頁無法存取、懷疑防火牆攔截 | netsh advfirewall firewall show rule name=all | 確認有允許該埠的輸入規則、設定檔正確 (域/專用/公用) |
| 大量 TIME_WAIT 導致新連線失敗 | netstat -an | find /c "TIME_WAIT" | 若 >數萬 → 調整註冊表 TcpTimedWaitDelay、啟用 TcpTwReuse |
| SSH/RDP 連線中斷頻繁 | netstat -an | findstr "ESTABLISHED.*:22|:3389" | 觀察連線建立後是否立即斷開、配合 KeepAlive 參數調整 |
熟練運用 netstat -ano 定位 PID、netsh advfirewall 驗證規則、resmon 圖形化監控,構成 Windows 網路診斷的鐵三角工具組,能在分鐘級時間內定位 90% 的連線與埠口問題。