# Hosts (arquivo)

O arquivo hosts, é um arquivo de computador utilizado pelo sistema operacional destinado a relacionar hostnames a endereços de ip. É um arquivo de texto plano, tradicionalmente nomeado como hosts.

## Propósito

O arquivo hosts é uma das facilidades existentes no endereçamento de redes dentro de um computador. Faz parte da implementação do protocolo de internet, e serve na tradução de um nome compreensível para os seres humanos em um endereço ip, que identificará um integrante ou destino da rede.
Em alguns sistemas operacionais utilizam o arquivo hosts como método preferencial de resolução de nomes ao invés de outros métodos como o DNS ou ainda implementarem o Name Service Switch, que define várias formas de resolução de nomes. Ao contrário do DNS, o arquivo hosts permite o controle direto do administrador local de um computador.

## Conteúdo do Arquivo

O conteúdo do hosts consiste basicamente em linhas que definem os hosts, e colunas onde a primeira determina o endereço ip, e as colunas subseqüentes determinam os possíveis nomes para tal endereço. O caractere # no início de uma linha define um comentário, e tal linha será ignorada na resolução de nomes.
Este exemplo define que o ip 127.0.0.1 terá o nome localhost, e o ip 192.168.1.1 os nomes gateway ou firewall. Os outros nomes abaixo do segundo comentário foram gerados de forma automática na instalação, definindo endereços pré-determinados do tipo IPv6

## Localização do arquivo hosts

A localização do arquivo hosts varia, dependendo do sistema operacional ou sistema de arquivos em questão:
| Sistema Operacional | Versão(ões) | Localização |
| Unix, Unix-like, POSIX | | /etc/hosts |
| Microsoft Windows | 95, 98/98SE, Me | %WinDir%\ |
| Microsoft Windows | NT, 2000, e XP 32-bits, 2003, Vista, 7 | %SystemRoot%\system32\drivers\etc\ |
| Microsoft Windows | Versões 64-bit | %SystemRoot%\system32\drivers\etc\ (Muitas fontes, incluindo a própria documentação da microsoft apontarão tal arquivo para %SystemRoot%\SysWOW64\drivers\etc\) |
| Microsoft Windows | Windows Mobile | Chave de Registro: \HKEY_LOCAL_MACHINE\Comm\Tcpip\Hosts |
| Apple Macintosh | 9 ou mais recentes | System Folder: Preferências ou Diretório do Sistema |
| Apple Macintosh | Mac OS X 10.0 – 10.1.5 | (Adicionado por NetInfo ou niload) |
| Apple Macintosh | Mac OS X 10.2 and newer, iOS | /private/etc/hosts ou desde que o /etc é um link simbólico para /private/etc, /etc/hosts (como POSIX) |
| Novell NetWare | | SYS:etc\hosts |
| OS/2 & eComStation | | "bootdrive":\mptn\etc\ |
| Symbian | Symbian OS 6.1–9.0 | C:\system\data\hosts |
| Symbian | Symbian OS 9.1+ | C:\private\10000882\hosts |
| Android | | /system/etc/hosts |

## História

Na ARPANET, a predecessora da internet, não existia uma base de dados distribuída de nomes. Cada rede mantinha sua própria forma de mapear os integrantes dessa rede de forma a distribuir nomes que fossem facilmente memorizados pelos usuários. Não havia formas de verificar que dois computadores estavam utilizando o mesmo nome, ou obter uma cópia recente do arquivo hosts de outro computador.
A dimensão da ARPANET na época, fazia com que a distribuição de um novo arquivo hosts gerasse pouco retrabalho e fosse algo relativamente preciso. Nós de rede possuíam apenas um endereço e vários nomes associados, porém, com a popularidade da LAN crescendo, a manutenção e alteração do arquivo hosts se tornou dificultosa e a frequência de alterações em tal arquivo também aumentou de forma significativa.
Padronizações por outro lado como a especificação do arquivo HOSTS.TXT na RFC 952, e protocolos de distribuição como o servidor de hostnames na RFC 953, ajudaram com estes problemas, porém a forma monolítica e centralizada de servidor de nomes, gerou a necessidade da criação do DNS distribuído.

## Funcionalidades adicionais

Em sua função de resolver nomes, o arquivo hosts pode ser usado para definir nomes ou domínios para serem utilizados pelo sistema local. Esta funcionalidade pode ser benéfica ou utilizada para fins maliciosos.

### Redirecionar domínios locais

    Alguns serviços web, e administradores ou desenvolvedores da intranet definem domínios locais em sua LAN, com o objetivo de acessar recursos internos a empresa, ou criar um ambiente para desenvolvimento e teste de software.

### Bloqueio de conteúdo da internet

    Entradas especialmente criadas no arquivo hosts podem ser utilizados para bloquear publicidade na internet(online advertising), ou domínios que podem conter conteúdos maliciosos como servidores com spyware, adware, ou qualquer tipo de malware. Esta configuração pode ser atingida adicionando entradas para tais sites, redirecionando as requisições para um endereço IP inexistente, ou que não possui tais conteúdos.
Existem vários softwares que povoam o arquivo hosts com entradas indesejáveis de conteúdo de internet de forma automática.

## Segurança

Por ser a principal regra de resolução de nomes local, o arquivo hosts representa um vetor de ataque para softwares de conteúdo malicioso. O arquivo pode ser hackeado, por exemplo, por um adware, vírus de computador ou por um software do tipo trojan horse, sendo modificado para redirecionar o tráfego para um destino com conteúdo intrusivo ou ofensivo para o usuário de um computador. O Worm Mydoom.B, conhecido pela sua grande infecção, bloqueava o acesso de usuários a sites sobre segurança de computadores ou sites de antivírus, assim como também afetava o acesso dos usuários ao site do Windows Update, da empresa Microsoft.