O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Resolvedor DNS

O módulo DNS Resolver fornece proteção ao usuário para interceptação de DNS e ataques de atualização de configuração e desempenho de rede aprimorado para resoluções de DNS. O módulo contém o código que implementa o resolvedor de stub DNS, que traduz nomes como www.google.com em endereços IP como 2001: db8 :: 1 . O resolvedor de stub DNS apóia elementos da API Java como InetAddress # getAllByName e Network # getAllByName , bem como funções de rede nativas e implementa o envio e recebimento de consultas DNS e o armazenamento em cache dos resultados.

Mudanças no Android 10

Em dispositivos que executam o Android 9 e inferior, o código do resolvedor de DNS é espalhado por Bionic e netd . As pesquisas de DNS são centralizadas no daemon netd para permitir o cache de todo o sistema, enquanto os aplicativos chamam funções (como getaddrinfo ) no Bionic. A consulta é enviada por um soquete UNIX para /dev/socket/dnsproxyd para o daemon netd , que analisa a solicitação e chama getaddrinfo novamente para emitir pesquisas DNS e, em seguida, armazena em cache os resultados para que outros aplicativos possam usá-los. A implementação do resolvedor de DNS estava contida principalmente em bionic/libc/dns/ e parcialmente em system/netd/server/dns .

O Android 10 move o código do resolvedor de DNS para system/netd/resolv, converte-o para C ++ e, em seguida, moderniza e refatora o código. O código no Bionic continua existindo por motivos de compatibilidade de aplicativos, mas não é mais chamado pelo sistema. Esses caminhos de origem são afetados pela refatoração:

  • bionic/libc/dns
  • system/netd/client
  • system/netd/server/dns
  • system/netd/server/DnsProxyListener.*
  • system/netd/resolv

Formato e dependências

O módulo DNS Resolver é entregue como um arquivo APEX e é vinculado dinamicamente por netd ; entretanto, o netd não é uma dependência, pois o módulo atende diretamente ao socket /dev/socket/dnsproxyd . O endpoint do Binder para a configuração do resolvedor foi movido de netd para o resolvedor, significando que o serviço do sistema pode chamar diretamente para o módulo do resolvedor sem passar pelo netd .

O módulo DNS Resolver depende da libc (Bionic) e vincula estaticamente suas dependências; nenhuma outra biblioteca é necessária.