Quali programmi scambiano più dati in Windows e usano la connessione di rete

Come capire quali programmi stanno scambiando informazioni in rete utilizzando gli strumenti messi a disposizione da Windows.

I programmi che si eseguono in Windows, così come sugli altri sistemi operativi, possono scambiare dati con host locali (appartenenti alla stessa LAN) o remoti utilizzando i protocolli TCP e UDP. Il primo assicura una comunicazione affidabile tra mittente e destinatario mentre il secondo è di tipo connectionless. UDP consente infatti l’invio dei pacchetti senza accertarsi della loro effettiva ricezione e viene utilizzato ad esempio per lo streaming, le applicazioni gaming, il VoIP quando non è indispensabile accertarsi che un pacchetto dati sia stato effettivamente ricevuto dal destinatario.

Sia con il protocollo TCP che con UDP si possono utilizzare 65535 porte di comunicazione sulle quali possono essere abilitati molteplici servizi. Sulle prime 1024 porte (well-known ports) vengono comunemente attivati molteplici servizi che operano a livello applicativo: alcuni protocolli, per convenzione, usano alcune porte ma possono tranquillamente utilizzare porte di comunicazione differenti da quelle “standard”: ne parliamo nell’articolo Porte aperte: come scoprire quali sono.

Come capire quali programmi stanno scambiando dati in rete

Quando la connessione di rete, sul singolo dispositivo Windows 10, venisse utilizzata in maniera incisiva, per stabilire quali programmi stanno trasferendo dati in rete suggeriamo di premere la combinazione di tasti CTRL+MAIUSC+ESC, fare clic su Più dettagli, sulla scheda Prestazioni quindi su Ethernet o Wi-Fi nella colonna di sinistra.

Windows 10 mostra un grafico con l’indicazione in tempo reale dei dati inviati e ricevuti in rete.
Nel caso in cui si utilizzassero software per la virtualizzazione come Hyper-V, Virtualbox o VMware si vedranno nella colonna di sinistra più interfacce Ethernet: ciascuna di esse indica il traffico dati sulle varie macchine virtuali.

Con un clic su Apri monitoraggio risorse si aprirà una finestra che si potrà utilizzare per verificare che cosa sta avvenendo sul sistema in uso.
Facendo riferimento in particolare alla sezione Rete e cliccando sull’intestazione Totale si possono ordinare, in ordine decrescente, i processi in esecuzione per occupazione della connessione di rete. In questo modo è possibile risalire ai programmi che stanno scambiando il maggior volume di pacchetti dati.

I processi svchost.exe (NetworkService -p) dovrebbero essere ignorati perché sono elementi di sistema utilizzati da Windows per scambiare dati in rete.

Cliccando sulle intestazioni delle colonne Invio e Ricezione ci si può concentrare sui processi in esecuzione che, rispettivamente, stanno trasmettendo o ricevendo più dati.

Digitando cmd nella casella di ricerca di Windows 10 quindi premendo CTRL+MAIUSC+INVIO è possibile aprire il prompt dei comandi con i diritti di amministratore.
Qui, digitando il comando netstat -bn, si può ottenere l’elenco delle connessioni stabilite o in ascolto ottenendo, per ciascuna di esse, gli indirizzi IP privati e gli IP remoti in uso oltre alla porta di comunicazione adoperata.

Va ricordato che la porta di comunicazione locale (visualizzata nella prima colonna del responso di netstat dopo il simbolo dei due punti) viene automaticamente scelta con la tecnica NAT: Cos’è il NAT e a che cosa serve. Configurazioni single e double.
Più importante è il numero di porta che segue l’indicazione dell’indirizzo IP remoto. Essa offre importanti indizi sul tipo di comunicazione che sta avvenendo.

Per ottenere un responso ancora più leggibile si possono usare alcune utilissime cmdlet PowerShell. Basta premere Windows+X, scegliere Windows PowerShell (amministratore) quindi digitare dapprima quanto segue:

$Process = @{
Name='Process'
Expression={
(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
}
}

Impartendo quindi il seguente comando si otterrà una lista di tutte le connessioni che sono state al momento stabilite con host remoti insieme con il processo che le ha richieste:

Get-NetTCPConnection -State Established | Select-Object -Property RemoteAddress, RemotePort, OwningProcess, $Process

Per selezionare solo le comunicazioni che stanno avvenendo su una porta specifica si può usare la seguente sintassi:

Get-NetTCPConnection -RemotePort 443 -State Established | Select-Object -Property RemoteAddress, RemotePort, OwningProcess, $Process

In questo caso vengono selezionati solo processi e indirizzi locali/remoti che stanno comunicando sulla porta 443 (HTTPS).

Ti consigliamo anche

Link copiato negli appunti