Sử dụng Netstat để xem các cổng nghe và PID trong Windows

Trong một bài viết khác, chúng tôi đã giải thích các cổng máy tính và chúng được sử dụng để làm gì(explained computer ports and what they’re used for) . Ngoài ra, chúng ta có thể làm gì với thông tin cổng? Vì tất cả lưu lượng truy cập vào và ra khỏi máy tính đều đi qua các cổng, chúng tôi có thể kiểm tra chúng để xem chúng đang làm gì. Có lẽ cổng không lắng nghe lưu lượng truy cập? Có thể một cái gì đó đang sử dụng một cổng không nên? 

Chúng ta sẽ sử dụng lệnh netstat của (netstat)Windows để xem các cổng lắng nghe và PID ( Process ID ) của chúng ta. Chúng tôi cũng sẽ xem chúng tôi có thể làm gì với thông tin đó.

Netstat là gì?(What Is Netstat?)

Lệnh netstat là sự kết hợp của các từ "mạng" và "thống kê". Lệnh netstat hoạt động trên tất cả các phiên bản Windows từ Windows XP cho đến Windows 10 . Nó cũng được sử dụng trong các hệ điều hành (OS) khác như UnixLinux , nhưng chúng tôi sẽ gắn bó với Windows ở đây.

Netstat có thể cung cấp cho chúng tôi:

  • Tên của giao thức mà cổng đang sử dụng ( TCP hoặc UDP ).
  • Địa chỉ IP cục bộ và tên của máy tính và số cổng đang được sử dụng.
  • Địa chỉ IP và số cổng mà chúng tôi đang kết nối.
  • Trạng thái của kết nối TCP . Để biết chi tiết về những trạng thái này, hãy đọc phần Xử lý sự kiện của RFC 793(Event Processing section of RFC 793) .

Sử dụng Netstat để xem các cổng nghe & PID(Using Netstat To See Listening Ports & PID)

  • Sử dụng tổ hợp phím Win Key + X X. Trong menu mở ra, chọn Command Prompt .

  • Nhập(Enter) lệnh
    netstat -a -n -o
    . Các tham số cho netstat được đặt trước bằng dấu gạch ngang chứ không phải dấu gạch chéo lên như nhiều lệnh khác. -A yêu cầu nó hiển thị cho chúng ta tất cả các kết nối đang hoạt động và các cổng mà máy tính đang nghe.

    -N ra lệnh cho netstat chỉ hiển thị địa chỉ IP và cổng dưới dạng số. Chúng tôi yêu cầu nó không cố gắng giải quyết các tên. Điều này giúp hiển thị nhanh hơn và gọn gàng hơn. -O yêu cầu netstat bao gồm PID . Chúng tôi sẽ sử dụng PID sau để tìm hiểu quy trình đang sử dụng một cổng cụ thể.

  • Xem(View) kết quả và ghi lại địa chỉ, số cổng, trạng thái và PID . Giả sử chúng tôi muốn biết những gì đang sử dụng cổng 63240. Lưu ý rằng PID của nó là 8552 và nó đang kết nối với địa chỉ IP 172.217.12.138 trên cổng 443.

Đang sử dụng cổng đó là gì?(What’s Using That Port?)

  • Mở Trình quản lý Tác vụ(Task Manager) . Điều đó dễ dàng thực hiện nhất bằng cách sử dụng tổ hợp Ctrl + Shift + Esc .

  • Bấm vào tab Chi tiết(Details ) . Để làm cho việc tìm kiếm này dễ dàng hơn, hãy nhấp vào tiêu đề cột PID để sắp xếp các (PID )PID(PIDs) theo số.

  • Cuộn xuống PID 8552 và xem quá trình đó là gì. Trong trường hợp này, đó là googledrivesync.exe . Nhưng nó có thực sự không? Đôi khi vi-rút có thể làm cho chúng trông giống như các quy trình hợp pháp.

  • Trong trình duyệt web, truy cập ipinfo.io . Nhập địa chỉ IP 172.217.12.138 . Như chúng ta có thể thấy, địa chỉ IP đã được đăng ký với Google . Vì vậy, googledrivesync.exe này là một hợp pháp.

Cách lấy cổng, PID và tên quy trình trong PowerShell(How To Get Port, PID, & Process Name In PowerShell)

PowerShell là cách mới hơn của Microsoft để sử dụng giao diện dòng lệnh với Windows . Chúng tôi nói là mới hơn, nhưng nó đã tồn tại trong một số phiên bản. Bạn nên học PowerShell ngay cả khi bạn là người dùng gia đình(learn PowerShell even if you’re a home user) .

Hầu hết các lệnh Windows cũng hoạt động trong PowerShell , ngoài ra chúng ta có thể kết hợp chúng với các lệnh ghép ngắn của PowerShell - phát âm là lệnh-cho phép(command-lets) . Joe tại Winteltools.com cung cấp tập lệnh cho phương pháp này.

  • Mở Notepad và nhập mã sau:
$netstat = netstat -aon | Select-String -pattern "(TCP|UDP)"
$processList = Get-Process

foreach ($result in $netstat) {
   $splitArray = $result -split " "
   $procID = $splitArray[$splitArray.length – 1]
   $processName = $processList | Where-Object {$_.id -eq $procID} |    select processname
   $splitArray[$splitArray.length – 1] = $procID + " " +      $processName.processname
   $splitArray -join " "
}

  • Lưu tệp dưới dạng get-NetstatProcessName.ps1 . Hãy nhớ ghi lại nơi nó được lưu. Điều quan trọng là phải thay đổi loại Lưu dưới dạng:(Save as type: ) thành All Files (*.*) Hoặc nó sẽ được lưu dưới dạng get-NetstatProcessName.ps1 .txt và nó sẽ không hoạt động với chúng tôi.

  • Mở PowerShell và điều hướng đến vị trí đã lưu tập lệnh. Trong trường hợp này, đó là <pre> cd C: Scripts </pre>. Nhấn Enter để chạy lệnh.

  • Chạy tập lệnh bằng cách sử dụng nguồn cung ứng điểm để làm cho nó hoạt động. Điều đó có nghĩa là sử dụng ./ trước tên của tệp. Lệnh sẽ là
    ./get-NetstatProcessName.ps1 < /pre

  • Bây giờ chúng ta có thể thấy tất cả thông tin netstat truyền thống cùng với tên quy trình. Không cần mở Trình quản lý tác vụ(Task Manager) nữa.

Đi lấy chúng về(Go Get Them)

Chúng tôi đã giới thiệu hai cách sử dụng lệnh netstat để xem các cổng lắng nghe. Nó có thể được sử dụng trong Command Prompt cũ hoặc trong tập lệnh PowerShell . Với thông tin nó có thể cung cấp cho chúng tôi, chúng tôi đã xem xét cách nó có thể giúp chúng tôi tìm ra máy tính của chúng tôi đang làm gì. 

Nếu bạn nghĩ netstat là một tiện ích tuyệt vời, hãy xem một số tiện ích Windows TCP / IP khác như tracert, ipconfig và nslookup . Hoặc sử dụng Resource Monitor để có cái nhìn rõ hơn về trang web ẩn và các kết nối Internet(use Resource Monitor to get a better look into hidden website and Internet connections) . Bạn có thể làm rất nhiều điều để xem chính xác máy tính của mình đang làm gì.

Bạn đã sử dụng netstat để giải quyết vấn đề chưa? Hãy(Please) cho chúng tôi biết bạn đã làm gì. Bất kỳ câu hỏi nào về cách sử dụng netstat? Vui lòng(Please) hỏi chúng tôi trong phần bình luận bên dưới.



About the author

Tôi là một lập trình viên máy tính và đã có hơn 15 năm. Kỹ năng của tôi nằm ở việc phát triển và duy trì các ứng dụng phần mềm, cũng như cung cấp hỗ trợ kỹ thuật cho các ứng dụng đó. Tôi cũng đã dạy lập trình máy tính cho học sinh trung học và hiện đang là một giảng viên chuyên nghiệp.



Related posts