Hồi mới học networking, mình hay bị hỏi một câu tưởng đơn giản mà trả lời không trôi: "Cổng 443 đang bị process nào chiếm vậy?". Lúc đó chỉ biết mở Task Manager lên nhìn cho có, chứ chẳng biết cách nào tra cho chính xác. Sau này quen với netstat rồi mới thấy, hóa ra câu trả lời nằm ngay trong một dòng lệnh, chỉ là mình chưa biết gõ đúng tham số thôi.
netstat -abno
Lệnh netstat thì chắc ai học mạng cũng từng đụng qua, nhưng mặc định nó chỉ liệt kê địa chỉ IP, cổng, trạng thái kết nối (LISTENING, ESTABLISHED, TIME_WAIT...). Muốn biết cụ thể tiến trình nào đang giữ cổng đó thì phải thêm tham số vào.
Có PID rồi thì tra tên tiến trình bằng:
tasklist | findstr "1234"
Nhược điểm là nó chỉ chụp đúng thời điểm gõ lệnh, kết nối mở tắt nhanh thì dễ bị bỏ lỡ.
TCPView
TCPView là công cụ trong bộ Sysinternals (Microsoft), tải miễn phí trên Microsoft Learn. Nó làm cùng việc như netstat -abno nhưng có giao diện đồ họa, tự cập nhật real-time (mặc định mỗi giây).
Điểm hay nhất là màu sắc: kết nối mới mở nhấp nháy xanh lá, kết nối đóng chuyển đỏ rồi biến mất — nhìn phát biết ngay tiến trình nào đang mở kết nối liên tục. Click chuột phải vào một dòng là đóng được kết nối hoặc kill process luôn. Bật thêm Resolve Addresses thì IP remote tự đổi ra tên miền, dễ đoán kết nối đang đi đâu.
Vậy lúc nào nên dùng cái nào
Với mình thì hai công cụ này không cạnh tranh mà bổ sung cho nhau:
netstat -abno
Lệnh netstat thì chắc ai học mạng cũng từng đụng qua, nhưng mặc định nó chỉ liệt kê địa chỉ IP, cổng, trạng thái kết nối (LISTENING, ESTABLISHED, TIME_WAIT...). Muốn biết cụ thể tiến trình nào đang giữ cổng đó thì phải thêm tham số vào.
- -a: liệt kê tất cả kết nối và cổng đang listening.
- -b: in tên file thực thi đứng sau kết nối. Tham số hữu ích nhất nhưng cũng làm lệnh chạy chậm hơn, và bắt buộc phải chạy CMD/PowerShell với quyền Administrator mới có tác dụng.
- -n: hiển thị IP, cổng dạng số, không resolve DNS, nên chạy nhanh hơn.
- -o: in kèm PID của tiến trình sở hữu kết nối.
Có PID rồi thì tra tên tiến trình bằng:
tasklist | findstr "1234"
Nhược điểm là nó chỉ chụp đúng thời điểm gõ lệnh, kết nối mở tắt nhanh thì dễ bị bỏ lỡ.
TCPView
TCPView là công cụ trong bộ Sysinternals (Microsoft), tải miễn phí trên Microsoft Learn. Nó làm cùng việc như netstat -abno nhưng có giao diện đồ họa, tự cập nhật real-time (mặc định mỗi giây).
Điểm hay nhất là màu sắc: kết nối mới mở nhấp nháy xanh lá, kết nối đóng chuyển đỏ rồi biến mất — nhìn phát biết ngay tiến trình nào đang mở kết nối liên tục. Click chuột phải vào một dòng là đóng được kết nối hoặc kill process luôn. Bật thêm Resolve Addresses thì IP remote tự đổi ra tên miền, dễ đoán kết nối đang đi đâu.
Vậy lúc nào nên dùng cái nào
Với mình thì hai công cụ này không cạnh tranh mà bổ sung cho nhau:
- Cần kiểm tra nhanh, one-shot, hoặc đang làm việc qua SSH/RDP không có giao diện đồ họa, hay cần đưa vào script để tự động hóa dùng netstat -abno.
- Cần theo dõi liên tục, quan sát hành vi mạng của một tiến trình theo thời gian thực, hoặc đang nghi ngờ có phần mềm độc hại âm thầm mở kết nối ra ngoài dùng TCPView.