Cách sử dụng lệnh Netstat

Ví dụ, công tắc và hơn thế nữa

Lệnh netstat là một lệnh Command Prompt được sử dụng để hiển thị thông tin rất chi tiết về cách máy tính của bạn giao tiếp với các máy tính hoặc thiết bị mạng khác.

Cụ thể, lệnh netstat có thể hiển thị chi tiết về các kết nối mạng riêng lẻ, thống kê mạng tổng thể và giao thức cụ thể, và nhiều hơn nữa, tất cả đều có thể giúp khắc phục một số vấn đề về mạng nhất định.

Netstat Command Availability

Lệnh netstat có sẵn trong Command Prompt trong hầu hết các phiên bản Windows bao gồm Windows 10 , Windows 8 , Windows 7 , Windows Vista , Windows XP , hệ điều hành Windows Server và một số phiên bản cũ của Windows.

Lưu ý: Tính khả dụng của một số lệnh chuyển mạch netstat nhất định và cú pháp lệnh netstat khác có thể khác với hệ điều hành đối với hệ điều hành.

Cú pháp lệnh Netstat

+ [] [ time_interval ] [ /? ]

Mẹo: Xem Cách đọc Cú pháp Lệnh nếu bạn không chắc chắn cách đọc cú pháp lệnh netstat như được hiển thị ở trên.

Thực thi lệnh netstat một mình để hiển thị danh sách tương đối đơn giản của tất cả các kết nối TCP đang hoạt động, cho mỗi địa chỉ IP sẽ hiển thị địa chỉ IP cục bộ (máy tính của bạn), địa chỉ IP nước ngoài (máy tính hoặc thiết bị mạng khác). số cổng, cũng như trạng thái TCP.

-a = Công tắc này hiển thị các kết nối TCP đang hoạt động, các kết nối TCP với trạng thái nghe, cũng như các cổng UDP đang được nghe.

-b = Công tắc netstat này rất giống với công tắc -o được liệt kê bên dưới, nhưng thay vì hiển thị PID, sẽ hiển thị tên tệp thực của quá trình. Sử dụng -b over -o có vẻ như nó tiết kiệm cho bạn một hoặc hai bước nhưng việc sử dụng nó đôi khi có thể kéo dài đáng kể thời gian cần netstat để thực hiện đầy đủ.

-e = Sử dụng công tắc này với lệnh netstat để hiển thị số liệu thống kê về kết nối mạng của bạn. Dữ liệu này bao gồm byte, gói unicast, gói không unicast, loại bỏ, lỗi và giao thức không xác định đã nhận và gửi kể từ khi kết nối được thiết lập.

-f = Bộ chuyển đổi -f sẽ buộc lệnh netstat hiển thị Tên miền Hoàn toàn Đủ tiêu chuẩn (FQDN) cho mỗi địa chỉ IP nước ngoài khi có thể.

-n = Sử dụng nút chuyển đổi -n để ngăn netstat tìm cách xác định tên máy chủ cho địa chỉ IP nước ngoài. Tùy thuộc vào kết nối mạng hiện tại của bạn, bằng cách sử dụng chuyển đổi này có thể làm giảm đáng kể thời gian cần thiết cho netstat để thực hiện đầy đủ.

-o = Một tùy chọn thuận tiện cho nhiều tác vụ xử lý sự cố, nút chuyển đổi -o hiển thị mã định danh quy trình (PID) được kết hợp với mỗi kết nối được hiển thị. Xem ví dụ dưới đây để biết thêm về cách sử dụng netstat -o .

-p = Sử dụng công tắc -p để chỉ hiển thị các kết nối hoặc thống kê cho một giao thức cụ thể. Bạn không thể định nghĩa nhiều giao thức cùng một lúc, cũng như không thể thực thi netstat bằng -p mà không định nghĩa giao thức .

protocol = Khi chỉ định một giao thức với tùy chọn -p , bạn có thể sử dụng tcp , udp , tcpv6 hoặc udpv6 . Nếu bạn sử dụng -s với -p để xem thống kê theo giao thức, bạn có thể sử dụng icmp , ip , icmpv6 hoặc ipv6 ngoài bốn số đầu tiên tôi đã đề cập.

-r = Thực hiện netstat với -r để hiển thị bảng định tuyến IP. Điều này giống như sử dụng lệnh tuyến đường để thực thi in tuyến đường .

-s = Tùy chọn -s có thể được sử dụng với lệnh netstat để hiển thị số liệu thống kê chi tiết theo giao thức. Bạn có thể giới hạn số liệu thống kê được hiển thị cho một giao thức cụ thể bằng cách sử dụng tùy chọn -s và chỉ định giao thức đó, nhưng hãy đảm bảo sử dụng giao thức -s trước khi -p khi sử dụng các công tắc cùng nhau.

-t = Sử dụng công tắc -t để hiển thị trạng thái tải trọng của ống khói TCP hiện tại thay cho trạng thái TCP được hiển thị thông thường.

-x = Sử dụng tùy chọn -x để hiển thị tất cả các trình lắng nghe, kết nối và các điểm cuối chia sẻ NetworkDirect.

-y = Chuyển đổi -y có thể được sử dụng để hiển thị mẫu kết nối TCP cho tất cả kết nối. Bạn không thể sử dụng -y với bất kỳ tùy chọn netstat nào khác.

time_interval = Đây là thời gian, tính bằng giây, bạn muốn lệnh netstat tự động thực hiện lại, chỉ dừng lại khi bạn sử dụng Ctrl-C để kết thúc vòng lặp.

/? = Sử dụng công tắc trợ giúp để hiển thị chi tiết về một số tùy chọn của lệnh netstat.

Mẹo: Làm cho tất cả thông tin netstat đó trong dòng lệnh dễ dàng hơn để làm việc bằng cách xuất những gì bạn thấy trên màn hình vào một tệp văn bản bằng cách sử dụng toán tử chuyển hướng . Xem Cách chuyển hướng đầu ra lệnh sang tệp để biết hướng dẫn đầy đủ.

Ví dụ về lệnh Netstat

netstat -f

Trong ví dụ đầu tiên này, tôi thực thi netstat để hiển thị tất cả các kết nối TCP đang hoạt động. Tuy nhiên, tôi muốn xem các máy tính tôi đang kết nối với định dạng FQDN [ -f ] thay vì một địa chỉ IP đơn giản.

Dưới đây là ví dụ về những gì bạn có thể thấy:

Các kết nối hoạt động Proto Địa chỉ cục bộ Ngoại giao Địa chỉ TCP 127.0.0.1 WEBC357 VM-Windows-7: 49229 TIME_WAIT TCP 127.0.0.1:49225 VM-Windows-7: 12080 TIME_WAIT TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168 .1.14: 49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49230 TIM-PC: wsd TIME_WAIT TCP 192.168.1.14:49231 TIM-PC: icslap THÀNH LẬP TCP 192.168.1.14:49232 TIM-PC: netbios-ssn TIME_WAIT TCP 192.168.1.14:49233 TIM-PC: netbios-ssn TIME_WAIT TCP [:: 1]: 2869 VM-Windows-7: 49226 THÀNH LẬP TCP [:: 1] : 49226 VM-Windows-7: icslap ĐƯỢC THÀNH LẬP

Như bạn có thể thấy, tôi đã có 11 kết nối TCP đang hoạt động tại thời điểm tôi thực thi netstat. Giao thức duy nhất (trong cột Proto ) được liệt kê là TCP, được mong đợi vì tôi không sử dụng -a .

Bạn cũng có thể thấy ba bộ địa chỉ IP trong cột Địa chỉ cục bộ — địa chỉ IP thực tế của tôi là 192.168.1.14 và cả hai phiên bản IPv4 và IPv6 của các địa chỉ vòng lặp của tôi, cùng với cổng mà mỗi kết nối đang sử dụng. Cột địa chỉ nước ngoài liệt kê FQDN ( 75.125.212.75 không giải quyết vì một số lý do) cùng với cổng đó.

Cuối cùng, cột State liệt kê trạng thái TCP của kết nối cụ thể đó.

netstat -o

Trong ví dụ này, tôi muốn chạy netstat bình thường để nó chỉ hiển thị các kết nối TCP đang hoạt động, nhưng tôi cũng muốn xem mã định danh quá trình tương ứng [ -o ] cho mỗi kết nối để tôi có thể xác định chương trình nào trên máy tính của tôi khởi tạo mỗi kết nối.

Dưới đây là những gì máy tính của tôi hiển thị:

Hoạt động kết nối Proto Địa chỉ cục bộ Địa chỉ nước ngoài Nhà nước PID TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT 2948 TCP 192.168.1.14:49196 a795sm: http CLOSE_WAIT 2948 TCP 192.168.1.14:49197 a795sm: http CLOSE_WAIT 2948

Bạn có thể nhận thấy cột PID mới. Trong trường hợp này, các PID đều giống nhau, có nghĩa là cùng một chương trình trên máy tính của tôi đã mở các kết nối này.

Để xác định chương trình nào được biểu diễn bởi PID của 2948 trên máy tính của tôi, tất cả những gì tôi phải làm là mở Task Manager , bấm vào tab Processes , và lưu ý Image Name được liệt kê bên cạnh PID tôi đang tìm trong cột PID . 1

Sử dụng lệnh netstat với tùy chọn -o có thể rất hữu ích khi theo dõi chương trình nào đang sử dụng quá lớn băng thông của bạn. Nó cũng có thể giúp xác định vị trí đích mà một số loại phần mềm độc hại hoặc thậm chí là một phần mềm hợp pháp khác có thể gửi thông tin mà không có sự cho phép của bạn.

Lưu ý: Trong khi điều này và ví dụ trước cả hai đều chạy trên cùng một máy tính và chỉ trong vòng một phút của nhau, bạn có thể thấy danh sách các kết nối TCP đang hoạt động là khác nhau đáng kể. Điều này là do máy tính của bạn liên tục kết nối và ngắt kết nối, nhiều thiết bị khác trên mạng của bạn và qua internet.

netstat -s -p tcp -f

Trong ví dụ thứ ba này, tôi muốn xem thống kê giao thức cụ thể [ -s ] nhưng không phải tất cả chúng, chỉ số liệu thống kê TCP [ -p tcp ]. Tôi cũng muốn các địa chỉ nước ngoài được hiển thị ở định dạng FQDN [ -f ].

Đây là lệnh netstat, như được hiển thị ở trên, được tạo trên máy tính của tôi:

Thống kê TCP cho IPv4 hoạt động mở = 77 thụ động mở = 21 thất bại kết nối = 2 thiết lập lại kết nối = 25 kết nối hiện tại = 5 phân đoạn nhận = 7313 phân đoạn gửi = 4824 phân đoạn truyền lại = 5 kết nối hoạt động địa chỉ cục bộ địa chỉ nước ngoài nhà nước TCP 127.0.0.1: 2869 VM-Windows-7: 49235 TIME_WAIT TCP 127.0.0.1:2869 VM-Windows-7: 49238 THÀNH LẬP TCP 127.0.0.1:49238 VM-Windows-7: icslap THÀNH LẬP TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168.1.14:49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT

Như bạn có thể thấy, các thống kê khác nhau cho giao thức TCP được hiển thị, cũng như tất cả các kết nối TCP đang hoạt động tại thời điểm đó.

netstat -e -t 5

Trong ví dụ cuối cùng này, tôi đã thực hiện lệnh netstat để hiển thị một số thống kê giao diện mạng cơ bản [ -e ] và tôi muốn các thống kê này liên tục cập nhật trong cửa sổ lệnh sau mỗi năm giây [ -t5 ].

Dưới đây là những gì được sản xuất trên màn hình:

Giao diện Thống kê nhận được Bytes 22132338 1846834 Gói Unicast 19113 9869 Gói không unicast 0 0 Loại bỏ 0 0 Lỗi 0 0 Giao thức không xác định 0 Thống kê giao diện Đã nhận Sent Bytes 22134630 1846834 Gói Unicast 19128 9869 Gói không unicast 0 0 Loại bỏ 0 0 Lỗi 0 0 Không xác định giao thức 0 ^ C

Các thông tin khác nhau mà bạn có thể thấy ở đây và tôi đã liệt kê trong cú pháp -e ở trên, được hiển thị.

Tôi chỉ để cho lệnh netstat tự động thực hiện thêm một lần nữa, như bạn có thể thấy bởi hai bảng trong kết quả. Lưu ý ^ C ở phía dưới, cho biết rằng tôi đã sử dụng lệnh hủy bỏ Ctrl-C để ngừng chạy lại lệnh.

Lệnh liên quan đến Netstat

Lệnh netstat thường được sử dụng với các lệnh Command Prompt có liên quan đến mạng khác như nslookup, ping , tracert , ipconfig và các lệnh khác.

[1] Bạn có thể phải thêm cột PID vào Task Manager theo cách thủ công. Bạn có thể làm điều này bằng cách chọn hộp kiểm "PID (Process Identifier)" từ View -> Select Columns trong Task Manager. Bạn cũng có thể phải nhấp vào nút "Hiển thị quy trình từ tất cả người dùng" trên tab Xử lý nếu PID bạn đang tìm không được liệt kê.