# Hosts

I file hosts sono dei file che associano i nomi host agli indirizzi IP. È un file di testo semplice. Originariamente un file chiamato "HOSTS.TXT" fu gestito manualmente e reso disponibile tramite la condivisione di file da Stanford Research Institute per l'adesione a ARPANET, conteneva i nomi host e gli indirizzi degli host come contributo per l'inclusione da parte delle organizzazioni membri. Il Domain Name System, descritto per la prima volta nel 1983 e implementato nel 1984, automatizzato il processo di pubblicazione e fornito una risoluzione istantanea e dinamica del nome host nella rete in rapida crescita. Nei moderni sistemi operativi, il file hosts rimane un meccanismo di risoluzione dei nomi alternativo, configurabile spesso come parte di servizi come il Name Service Switch come metodo principale o come metodo di fallback.

## Scopo

Il file hosts è una delle numerose funzionalità di sistema che consente di indirizzare i nodi di rete in una rete di computer. È una parte comune dell'implementazione di un protocollo Internet (IP) di un sistema operativo e serve a tradurre nomi di host facilmente leggibili in indirizzi di protocollo numerici, chiamati indirizzi IP, che identificano e localizzano un host in una rete di IP.
In alcuni sistemi operativi, il contenuto del file hosts viene utilizzato preferibilmente ad altri metodi di risoluzione dei nomi, come il Domain Name System (DNS), ma molti sistemi implementano switch di servizi dei nomi, ad esempio nsswitch.conf per Linux e Unix, per fornire personalizzazione. A differenza dei resolver DNS remoti, il file hosts è sotto il controllo diretto dell'amministratore del computer locale.

## Contenuto del file

Il file hosts contiene righe di testo costituite da un indirizzo IP nel primo campo di testo seguito da uno o più nomi host. Ogni campo è separato da uno spazio bianco. Il tab è spesso preferito per ragioni storiche, ma vengono anche utilizzati gli spazi. Le righe commentate possono essere incluse; sono indicati da un cancelletto (#) nella prima posizione di tali linee. Le righe completamente vuote nel file vengono ignorate. Ad esempio, un file hosts tipico può contenere quanto segue:
Questo esempio contiene solo voci per gli indirizzi di loopback del sistema e i loro nomi host, un tipico contenuto predefinito del file hosts. L'esempio mostra che un indirizzo IP può avere più nomi host (localhost e loopback) e che un nome host può essere mappato su indirizzi IP sia IPv4 che IPv6, come mostrato rispettivamente sulla prima e seconda riga.

## Posizione nel file system

La posizione del file hosts nella gerarchia del file system varia in base al sistema operativo. Di solito è chiamato host, senza estensione.
| Sistema operativo | Versioni | Posizione |
| Unix, Unix-like, POSIX | | /etc/hosts |
| Microsoft Windows | 3.1 | %WinDir%\HOSTS |
| Microsoft Windows | 95, 98, ME | %WinDir%\hosts |
| Microsoft Windows | NT, 2000, XP, 2003, Vista, 2008, 7, 2012, 8, 10 | %SystemRoot%\System32\drivers\etc\hosts |
| Windows Mobile, Windows Phone | | Chiave di registro in HKEY_LOCAL_MACHINE\Comm\Tcpip\Hosts |
| Apple Macintosh | 9 e precedenti | Preferenze o cartella Sistema |
| Apple Macintosh | Mac OS X 10.0–10.1.5 | (Aggiunto tramite NetInfo o niload) |
| Apple Macintosh | Mac OS X 10.2 e versioni successive | /etc/hosts (un collegamento simbolico a /private/etc/hosts) |
| Novell NetWare | | SYS:etc\hosts |
| OS / 2, eComStation, ArcaOS | | "bootdrive":\mptn\etc\ |
| Symbian | Sistema operativo Symbian 6.1–9.0 | C:\system\Data\hosts |
| Symbian | Symbian OS 9.1+ | C:\private\10000882\hosts |
| MorphOS | NetStack | ENVARC:sys/net/hosts |
| AmigaOS | <4 | AmiTCP:DB/hosts |
| AmigaOS | 4 | Devs:Internet/hosts |
| AROS | | ENVARC:AROSTCP/db/hosts |
| Android | | /etc/hosts (un collegamento simbolico a /system/etc/hosts) |
| iOS | iOS 2.0 e versioni successive | /etc/hosts (un collegamento simbolico a /private/etc/hosts) |
| TOPS-20 | | <SYSTEM>HOSTS.TXT |
| Piano 9 | | /lib/NDB/hosts |
| BeOS | | /boot/beos/etc/hosts |
| Haiku | | /system/settings/network/hosts |
| OpenVMS | UCX | UCX$HOST |
| OpenVMS | TCPware | TCPIP$HOST |
| SO RISC | 3.7, 5 | !Boot.Resources.!Internet.files.Hosts |
| SO RISC | sequenza di avvio successiva | !Boot.Choices.Hardware.Disabled.Internet.Files.Hosts |

## Storia

ARPANET, il predecessore di Internet, non aveva un database di nomi host distribuito. Ogni nodo di rete manteneva la propria mappa dei nodi di rete secondo necessità e assegnava loro nomi che erano memorabili per gli utenti del sistema. Non esisteva un metodo per garantire che tutti i riferimenti a un determinato nodo in una rete usassero lo stesso nome, né esisteva un modo per leggere il file hosts di un altro computer per ottenere automaticamente una copia.
Le dimensioni ridotte di ARPANET mantennero bassi gli sforzi per amministrare un file host accurato. I nodi di rete in genere avevano un indirizzo e potevano avere molti nomi. Con l'aumentare della popolarità delle reti di computer TCP/IP locali, tuttavia, la manutenzione dei file host divenne un onere maggiore per gli amministratori di sistema in quanto le reti e i nodi di rete venivano aggiunti al sistema con frequenza crescente.
Sforzi di standardizzazione, come il formato utilizzato per il file HOSTS.TXT in RFC 952 e protocolli di distribuzione, ad esempio il server hostname descritto in RFC 953, hanno aiutato con questi problemi, ma la natura centralizzata e monolitica dei file host alla fine ha reso necessaria la creazione del Domain Name System (DNS) distribuito.
Su alcuni vecchi sistemi è presente un file denominato networks che ha funzioni simili ai file host contenenti nomi di reti.

## Applicazioni del file Hosts

Nella sua funzione di risoluzione dei nomi host, il file hosts può essere utilizzato per definire qualsiasi nome host o nome dominio da utilizzare nel sistema locale.

### Reindirizzamento di domini locali

    Alcuni sviluppatori e amministratori di servizi Web e intranet, definiscono localmente degli specifici domini LAN per vari scopi, come l'accesso alle risorse interne dell'azienda o per testare siti Web locali in fase di sviluppo.

### Blocco delle risorse Internet

    Le voci nel file hosts possono essere utilizzate per bloccare la pubblicità online o i domini di server dannosi noti che contengono spyware, adware e altri malware. Ciò può essere ottenuto aggiungendo voci per quei siti per reindirizzare le richieste a un altro indirizzo che non esiste o verso una destinazione innocua come il computer locale. Alcuni applicazioni commerciali scrivono sul file hosts per bloccare delle risorse malevole. Inoltre, sono reperibili online, file hosts già compilati in modo da bloccare siti indesiderati.
    Fravia ha descritto questi file in vari modi come "pergamene", "preziosi" e "potenti" nelle sue pagine anti-pubblicità, quando questi hosts creati dagli utenti furono pubblicati per la prima volta.

### Pirateria informatica

    Alcune versioni piratate di alcuni software si basano su un file hosts modificato per impedire al software di contattare i server di attivazione dell'editore, sebbene a volte i server di attivazione compaiano nei file host per scopi generici.

## Problemi di sicurezza

Il file hosts può presentare un vettore di attacco per software dannoso. Il file può essere modificato, ad esempio, da adware, virus informatici o software trojan horse per reindirizzare il traffico dalla destinazione prevista a siti che ospitano contenuti dannosi o indesiderati. Il diffuso worm Mydoom.B ha impedito agli utenti di visitare siti sulla sicurezza informatica e software antivirus e ha anche compromesso l'accesso dal computer al sito Web Microsoft Windows Update. In alcuni casi il malware ha modificato la libreria responsabile del caricamento del file hosts per reindirizzarlo a un file che è in grado di controllare liberamente.