Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Resolución de DNS

El módulo de resolución de DNS proporciona protección al usuario para la interceptación de DNS y los ataques de actualización de la configuración y mejora el rendimiento de la red para las resoluciones de DNS. El módulo contiene el código que implementa la resolución de stub de DNS, que traduce nombres como www.google.com a direcciones IP como 2001: db8 :: 1 . El solucionador de stub de DNS respalda elementos de la API de Java como InetAddress # getAllByName y Network # getAllByName , así como funciones de red nativas , e implementa el envío y la recepción de consultas de DNS y el almacenamiento en caché de los resultados.

Cambios en Android 10

En los dispositivos que ejecutan Android 9 y netd , el código de resolución de DNS se distribuye entre Bionic y netd . Las búsquedas de DNS están centralizadas en el demonio netd para permitir el almacenamiento en caché en todo el sistema, mientras que las aplicaciones llaman a funciones (como getaddrinfo ) en Bionic. La consulta se envía a través de un socket UNIX a /dev/socket/dnsproxyd al demonio netd , que analiza la solicitud y llama a getaddrinfo nuevamente para emitir búsquedas de DNS, luego almacena en caché los resultados para que otras aplicaciones puedan usarlos. La implementación de la resolución de DNS estaba contenida principalmente en bionic/libc/dns/ y parcialmente en system/netd/server/dns .

Android 10 mueve el código de resolución de DNS a system/netd/resolv, convierte a C ++, luego lo moderniza y refactoriza. El código en Bionic sigue existiendo por razones de compatibilidad de aplicaciones, pero el sistema ya no lo llama. Estas rutas de origen se ven afectadas por la refactorización:

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

Formato y dependencias

El módulo de resolución de DNS se entrega como un archivo APEX y está vinculado dinámicamente por netd ; sin embargo, netd no es una dependencia ya que el módulo sirve directamente al socket /dev/socket/dnsproxyd . El punto final de Binder para la configuración del resolutor se movió de netd al resolutor, lo que significa que el servicio del sistema puede llamar directamente al módulo resolutor sin pasar por netd .

El módulo de resolución de DNS depende de libc (Bionic) y enlaza estáticamente sus dependencias; no se requieren otras bibliotecas.