Collegare due PC direttamente con un cavo Ethernet sembra un’operazione quasi innaturale, vista la disponibilità di reti Wi-Fi veloci, router multi-gigabit, servizi cloud e strumenti di condivisione locale. Eppure, quando bisogna spostare decine o centinaia di gigabyte da un computer all’altro, il collegamento punto-punto via cavo conserva vantaggi difficili da ignorare: banda stabile, latenza ridotta, nessun passaggio aggiuntivo e nessuna dipendenza dalla qualità delle reti.
È proprio su questa idea che si basa EtherTransfer (repository GitHub), progetto open source pensato per semplificare al massimo il trasferimento diretto dei dati tra due PC Windows o Linux. Basta collegare le macchine con un cavo Ethernet e avviare l’applicazione: il software individua automaticamente l’altro sistema e crea il canale necessario allo scambio dei file.
Ma serve davvero un software dedicato per fare qualcosa che Ethernet e TCP/IP permettono già da anni? E soprattutto, per collegare direttamente due PC occorre ancora il vecchio cavo crossover, oppure basta un normale cavo patch come quelli usati per collegarsi a router e switch?
Per collegare due PC moderni basta un normale cavo patch
Chi ha lavorato con le reti negli anni di Fast Ethernet ricorderà una regola piuttosto precisa: per collegare due computer tra loro serviva un cavo crossover (o incrociato), mentre quello patch, o dritto, andava utilizzato per connettere il PC a uno switch.
Sui computer di oggi quella distinzione ha perso quasi tutta la sua importanza: il motivo per cui due PC riescono comunque a comunicare direttamente con un normale cavo patch risiede nella funzione Auto MDI/MDI-X, presente ormai sulle interfacce Ethernet da moltissimo tempo. La scheda di rete identifica automaticamente la disposizione richiesta per trasmissione e ricezione e adatta elettronicamente il collegamento.

Perché una volta serviva il crossover
Per capire perché continuiamo a sentir parlare di crossover bisogna tornare alle modalità operative di 10BASE-T e 100BASE-TX.
Le interfacce Ethernet utilizzavano coppie distinte per trasmettere e ricevere: la porta di un PC, classificata tradizionalmente come MDI, trasmetteva attraverso determinati pin e riceveva attraverso altri; una porta dello switch di tipo MDI-X disponeva le coppie in maniera opposta.
Collegando due PC il collegamento non poteva funzionare, perché una coppia destinata alla trasmissione arrivava alla coppia di trasmissione dell’altra interfaccia: il crossover serviva precisamente a correggere questa situazione, incrociando le coppie. Il cavo eseguiva fisicamente ciò che oggi la scheda di rete può gestire in maniera autonoma.
Aprendo un cavo Ethernet troviamo quattro coppie di conduttori intrecciati. Gli standard T568A e T568B stabiliscono l’ordine con cui questi conduttori raggiungono gli otto contatti del connettore. Con T568A, la coppia verde occupa i pin 1 e 2 mentre quella arancione raggiunge i pin 3 e 6. Con T568B accade il contrario. Le altre coppie mantengono la stessa posizione.
Un cavo patch tradizionale presenta quindi, ad esempio, la configurazione T568B/T568B oppure T568A/T568A ad entrambe le estremità; un crossover classico può invece avere T568A/T568B ai due estremi.
Con Gigabit Ethernet cambiano le regole
Lo standard Gigabit Ethernet 1000BASE-T non utilizza soltanto due coppie come 100BASE-TX: impiega tutte e quattro le coppie.
La trasmissione, inoltre, non segue più la semplice separazione “una coppia per TX, una per RX” che rende intuitivo il funzionamento del vecchio crossover. Tutte le coppie partecipano infatti alla comunicazione bidirezionale. Per questo motivo, un vero crossover destinato a 1000BASE-T deve incrociare correttamente anche le coppie aggiuntive.
È un’altra buona ragione per non cercare un crossover quando si vogliono collegare due PC attuali: un normale cavo patch, come già sottolineato in precedenza, è la scelta più semplice e più sicura.
Cos’è e a che cosa serve EtherTransfer?
Un software come EtherTransfer nasce proprio con l’obiettivo di permettere un collegamento semplice tra due PC attraverso Ethernet, trasferendo grandi quantità di dati senza router, cloud, server DHCP o configurazioni manuali.
L’applicazione sfrutta diverse funzioni che Ethernet e TCP/IP mettono a disposizione da tempo e le combina in una soluzione pensata per ridurre al minimo le operazioni richieste all’utente. Il progetto supporta Windows 10, Windows 11 e Linux e utilizza automaticamente gli indirizzi IPv4 Link-Local per far comunicare le due macchine.
Il rilevamento del computer collegato avviene tramite broadcast UDP sulla porta 50000, mentre i dati passano attraverso una connessione TCP sulla porta 55000.

Ma Windows non sa già collegare direttamente due PC?
Come accennato al precedente paragrafo, EtherTransfer non rende possibile qualcosa che prima non lo era.
Quando colleghiamo direttamente due computer e non esiste un server DHCP che assegni gli indirizzi, i sistemi possono utilizzare IPv4 Link-Local, meccanismo definito dalla RFC 3927. EtherTransfer fa esplicitamente affidamento su questa possibilità.
Entrambi i computer possono quindi ritrovarsi con indirizzi simili ai seguenti e comunicare direttamente:
PC A: 169.254.34.21
PC B: 169.254.81.7
A questo punto, nulla impedisce di utilizzare il protocollo SMB e una normale cartella condivisa per lo scambio dei file. Su Linux potremmo servirci di SSH, SCP, rsync, netcat e numerosi altri strumenti.
EtherTransfer elimina le difficoltà residue: niente indirizzi da digitare, niente server da individuare, niente cartella SMB da predisporre. Il software cerca automaticamente l’altra macchina tramite broadcast UDP e crea poi il canale TCP destinato ai dati.
Come funziona EtherTransfer
Dal punto di vista tecnico, EtherTransfer è un’applicazione peer-to-peer sviluppata con .NET 10 e Avalonia UI che costruisce sopra TCP/IP un proprio protocollo di discovery e trasferimento.
Il primo passaggio consiste nell’individuare un’interfaccia Ethernet fisica realmente collegata: EtherTransfer individua una scheda Ethernet con il cavo effettivamente collegato e il link di rete attivo, scartando invece Wi-Fi, VPN e interfacce virtuali. In questo modo, anche se il PC continua a usare il Wi-Fi per accedere a Internet, il traffico relativo ai file non segue la rotta (route) predefinita ma resta confinato al collegamento Ethernet.
Su Windows EtherTransfer sfrutta APIPA (Automatic Private IP Addressing); in assenza di DHCP il sistema assegna autonomamente un indirizzo IPv4 Link-Local nella subnet 169.254.0.0/16. Su Linux l’applicazione interviene invece tramite NetworkManager: quando rileva il link fisico può richiamare nmcli per impostare sull’interfaccia il metodo IPv4 link-local, ripristinando poi la configurazione precedente alla chiusura.
Come EtherTransfer trova l’altro PC e crea il collegamento
La fase di discovery non dipende da DNS, NetBIOS o server centrali: ogni istanza invia sulla porta UDP 50000 messaggi HELLO contenenti, tra le altre informazioni, nome del computer, sistema operativo, porta TCP utilizzata per i dati e un SessionId UUID generato all’avvio. L’UUID è particolarmente utile con gli indirizzi Link-Local: durante la negoziazione l’IP potrebbe cambiare, ma EtherTransfer continua a riconoscere la stessa sessione evitando che nell’interfaccia compaiano dispositivi duplicati.
Quando l’utente avvia il trasferimento, EtherTransfer apre una connessione TCP sulla porta 55000: il mittente invia dapprima una richiesta che specifica numero complessivo dei file, dimensione totale e radici delle directory; il destinatario deve accettare esplicitamente l’operazione e può scegliere la cartella di destinazione.
Anche il trattamento delle cartelle evita passaggi intermedi: EtherTransfer attraversa ricorsivamente l’albero delle directory e lo ricostruisce sul sistema remoto senza creare preventivamente archivi ZIP o TAR. Il programma conserva anche file nascosti come .gitignore e .env.
Controlli e gestione delle interruzioni
Prima della creazione effettiva dei file il programma applica però una serie di controlli: blocca sequenze di path traversal come ../, impedisce l’uso di percorsi assoluti, neutralizza i nomi riservati di Windows quali CON, PRN, AUX, NUL, COM1 e LPT1 e rinomina automaticamente un file se nella destinazione ne esiste già uno con lo stesso nome.
Un altro aspetto interessante riguarda la gestione delle interruzioni. Su un collegamento Ethernet diretto lo scollegamento fisico del cavo non provoca necessariamente un errore immediato del socket; per evitare trasferimenti bloccati EtherTransfer applica watchdog separati alle operazioni: 2 secondi per i metadati e 5 secondi per ogni blocco dati da 1 MB. Se il collegamento cade o l’utente annulla l’operazione, il programma elimina dalla destinazione il file parzialmente scritto, mantenendo quelli già completati.
L’installer per Windows di EtherTransfer aggiunge automaticamente una regola a Windows Defender Firewall per l’applicazione, mentre quello Linux apre UDP 50000 e TCP 55000 attraverso ufw, Firewalld o iptables.
E se il notebook non ha una porta Ethernet?
Sui notebook la porta Ethernet RJ-45 è ormai completamente assente: il collegamento diretto resta comunque possibile utilizzando un adattatore USB-Ethernet, da collegare a una porta USB-A oppure, più frequentemente, USB-C. Il sistema operativo vede l’adattatore come una normale interfaccia di rete cablata e EtherTransfer può quindi utilizzarla come farebbe con una scheda Ethernet integrata.
La velocità massima dipende però sia dall’adattatore sia dalla porta USB. Un comune adattatore USB 3.x-Gigabit Ethernet consente di sfruttare senza particolari problemi un collegamento da 1 Gbps; per 2,5 GbE serve invece un adattatore compatibile 2.5GBASE-T e una connessione USB sufficientemente veloce.
Lo stesso principio vale per 5 e 10 GbE, ma salendo di velocità diventano più importanti il controller utilizzato, i driver, il tipo di porta USB-C e la capacità effettiva del bus.
Non bisogna infatti confondere la forma del connettore con le prestazioni disponibili: una porta USB-C può essere limitata a USB 2.0, supportare USB 3.2 a 5 o 10 Gbps oppure offrire USB4 o Thunderbolt. Collegare un adattatore 2,5 GbE a una porta USB-C che funziona soltanto a velocità USB 2.0 significa ovviamente non poter beneficiare della massima ampiezza di banda.