5. TCP-соединение по IP
connect(5, ..., sin_addr=inet_addr("130.193.50.59"))
Здесь уже сам curl устанавливает TCP-соединение по IP-адресу, который ему вернула getaddrinfo().‼️ Таким образом, когда мы вызываем curl, мы не видим DNS-запросов напрямую — их делает библиотека glibc внутри вызова
getaddrinfo(). Но strace позволяет увидеть косвенные признаки:Среди вызовов будет попытка подключиться к nscd, вызов connect() к DNS-серверу, отправка UDP-пакета через sendmmsg(), а затем — стандартное TCP-соединение по IP:
connect(7, {AF_INET, 172.24.31.107:53}) = 0
sendmmsg(7, [{ "download.astralinux.ru" }]) = 2
recvfrom(7, ...) = ...
connect(5, {130.193.50.59:80}) = 0Важно отметить, что поведение
getaddrinfo() может зависеть от реализации libc. Например, в glibc результаты могут кэшироваться, что влияет на производительность и актуальность данных.#DNS #Linux | 😏 @iscode | YouFast VPN — сильнейший из всех