Влияние DNS на качество звучания аудио файлов в интернет

Оценка качества звучания аудиофайлов на сайтах с использованием DNS (Domain Name System «система доменных имён») и через прямое IP соединение.

Backtomusic team

Небольшой компьютерный ликбез, если кто не в курсе: подобно телефонам, все серверы в интернет имеют уникальные цифровые номера (IP адреса). Чтобы человек мог легко запомнить нужный адрес, каждому IP адресу присваивается имя (domen name). Как пример — IP этого сайта: 188.134.31.189, имя: www.backtomusic.ru, все по подобию с телефонной книгой. Раньше, когда сеть интернет была относительно небольшой, функция замены IP на доменное имя реализовывалась с помощью обычных таблиц, на сегодня определением IP по имени занимается сложная сеть специализированных компьютеров с криптографической проверкой целостности данных, рекурсивными запросами, резервированием и другими необходимыми для надежной работы наворотами.

На Backtomusic история с доменами стала актуальной во время работы над отдельным плеером БТМ, когда понадобились два дополнительных доменных имени — для самого плеера и для его наладки. Плеер был размещен на субдомене play.backtomusic.ru, его разработка и отладка велась на test.backtomusic.ru.

Промежуточная проверка качества звучания плеера на тестовом сайте проводились после каждого изменения кода плеера. На каждом значительном этапе работы, если в коде не было ошибок и звук оказывался нормальным, весь проект копировался на play.backtomusic.ru. После нескольких таких копирований стало очевидно, что по какой-то причине один и тот же код плеера на test.backtomusic.ru звучит выразительней, чем на play.backtomusic.ru. Чтобы разобраться в чем дело, был проведен эксперимент — конфигурация сайтов на сервере была переписана таким образом, чтобы домен Тест соответствовал плееру из проекта Play, в свою очередь домен Play был перенаправлен на плеер из проекта Test. В результате Play, на котором теперь велась разработка, все так же звучал хуже, чем Test. Отсюда был сделан вывод, что проблема не в сервере, а где-то вне его.

Следующим шагом стала регистрация третьего субдомена clean.backtomusic.ru. Новое имя было протестировано, как с сайтом для разработки, так и с его публичной копией. Звук Clean оказался неплохим, слегка хуже Test и значительно лучше Play. На этом этапе ситуация уже более-менее прояснилась, стало очевидно, что:

  • Использование субдомена однозначно влияет на звук
  • Разные субдомены влияют на звук различно
  • Характерный звук каждого субдомена возникает при регистрации и не меняется

Разбор полетов показал значительную разницу в том, как браузер компьютера ищет нужный сайт в случае, если вы указали ему прямой IP и в случае использования доменного имени:

Последовательность событий при поиске IP через DNS

  1. Пользователь вводит в адресную строку браузера доменное имя
  2. Браузер проверяет локальный кэш DNS
  3. При неудаче браузер обращается к программе DNS-resolver операционной системы
  4. DNS-resolver запрашивает DNS-серверы в интернет и получает в ответ IP
  5. Браузер подключается к серверу по IP

Таким образом, браузер при поиске IP по имени дополнительно задействует ресурсы операционной системы компьютера и общается с DNS серверами. Это как минимум, что там на самом деле происходит знают только разработчики — сейчас мало кого волнует оптимизация работы кода, компьютеры справляются без заметных задержек и ладно.

Понятно, что для человека не сведущего в тонкостях аудио ситуация с влиянием DNS на звук выглядит сказочной, особенно в случае, когда IP искомого сервера уже находится в кэше браузера. Однако, во время разработки плеера БТМ уже выяснились многие подобные, невероятные на первый взгляд факторы, влияющие на качество звучания, например:

  • замена синтаксиса Javascript (JS)
  • использование определенных, предпочтительных по звуку методов JS
  • использование определенных ключевых слов, например, в JS пришлось отказаться от ‘this’, хотя это усложняет код
  • упрощение кода (группировка повторяющихся фрагментов и выбор оптимальной логики)
  • размещение HTML и скриптов плеера в одном, едином файле так, чтобы код плеера не ссылался на скрипты в соседних файлах.

В связи с этим был проведен еще один эксперимент: на сервере был создан дополнительный сайт, обслуживающий запрос чистого IP и загружающий при этом тот же код плеера, что и публичные DNS сайты — play.backtumusic.ru и clean.backtomusic.ru. Как и следовало ожидать, из всех вариантов, наилучшим и стабильным по звуку оказался вариант с IP!

Эксперименты, проведенные с DNS демонстрируют, что ничего лишнего в причинно-следственных связях, создаваемых кодом программ, связанных с воспроизведением аудио быть не должно. При этом не важно, связана какая-то определенная часть кода с аудио сигналом напрямую или это часть кода, ответственная за дизайн плеера или за формирование ссылки на аудио файл, как в нашем случае. Любые связи, задействованные «по пути» между компьютером слушателя и аудио файлом на сервере влияют на восприятие музыки в той или иной степени.

На данный момент Player BTM clean использует все три способа оптимизации его звучания, найденные за последнее время:

  1. Исключение CMS (Content Management System) WordPress — код плеера общается прямо с сервером без посредников
  2. Работа через протокол HTTP (исключение шифрования потока данных)
  3. Прямое соединение с браузером через IP

Плеер, как и раньше, использует общую с Backtomusic.ru базу аудио файлов. После замены DNS ссылок плеера на IP, разница в качестве воспроизведения одних и тех же файлов между DNS плеерами, расположенными на Backtomusic и BTM Player clean стала еще более выраженной, в чем можно убедиться, сравнив звучание одних и тех же треков по этим двум ссылкам.

Антон Степичев

Добавить в комментарий отформатированную цитату можно, если вставить ее текст внутрь HTML тэга <blockquote>, чтобы это выглядело так:
<blockquote> Текст цитаты </blockquote>
Текст комментария.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Максимальный размер загружаемого файла: 10 МБ. Вы можете загрузить: изображение, аудио, документ, текст, архив. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файлы сюда