Насколько можно доверять полученным данным?

Хочется, конечно же, сосчитать количество физических устройств, но невозможно удаленно отличить шесть компьютеров от одного маршрутизатора с шестью интерфейсами. В описании обзора мною специально сделана оговорка: «абсолютные цифры никакого смысла не имеют, можно рассматривать только их изменение во времени». Точности исследования мешают объективные факторы. Например, если DNS-сервер не дает информацию о своем домене, то подсчитать машины в таком домене невозможно. Часто машина не отвечает на запрос ping, поскольку она закрыта сетевым экраном. Другие машины, реально работающие в Internet, не описаны в DNS и вообще нигде, поскольку работают через «маскарад» (masquerade). Кроме того, некоторые этапы исследования проводились непосредственно перед или сразу после праздников, когда число неработающих машин было больше обычного. Для уменьшения ошибки измерений я проводил опрос всех компьютеров три раза.

Методика исследования

Информация о количестве доменов и машин в них получена легальным путем из Domain Name System. По каждому из интересующих доменов (.ru, .su) производился запрос данных всей зоны. Для всех полученных зон процесс повторялся рекурсивно.

Все IP-адреса машин, найденных на стадии сканирования DNS, группировались по первым 3 байтам адреса (блок соответствует сети класса C). Далее выбирались 20% этих групп, и все машины, вошедшие в эту выборку, проверялись на доступность с помощью программы ping. Максимальное время ожидания ответа составляло 30 секунд. Процедура сканирования повторялась три раза. В процессе сканирования пришло несколько писем от администраторов сетей, которые просили прекратить этот процесс. Что и было сделано для их сетей. Избыточный поток информации, создаваемый процедурой сканирования, невелик - примерно 10 Кбайт на одну сеть класса C за один проход или 10 секунд работы канала на 9600.

Все машины, ответившие на стадии проверки достижимости, подвергались дальнейшему исследованию. Каждой из них посылался HTTP-запрос вида HEAD/HTTP/1.0. Ответившая машина помечалась как имеющая WWW-сервис, а заголовок Server: из ответа использовался для анализа распространенности Web-серверов. В дальнейшем под понятием Web-сервером понимается уникальная пара hostname - IP-адрес, ответившая на HTTP-запрос. Как и в случае с ping, процесс опроса Web-серверов повторялся три раза. Под официальным сервером понимаются машины с именем вида www.some.domain или some.domain. В процессе тестирования предпринималась попытка установить соединение с 80-м портом TCP, и все ответившие машины подсчитывались. Подсчет разных полей Server: в ответах Web-серверов использовался для анализа распространенности различного программного обеспечения Web-серверов.

Полное описание методики можно найти в Web по адресу http://www.lexa.ru/ru_survey.html.

  
Как оценить погрешность измерений?

О погрешности можно говорить, когда мы одну и ту же величину можем измерять дважды или когда есть эталон. Измеряя одну и ту же величину дважды, мы можем исключить случайную погрешность; сравнивая же ее с эталоном, исключим систематическую. Собственно, три повторения опроса позволяют уменьшить систематическую погрешность. С эталоном все несколько сложнее. Его, конечно, можно придумать. Я могу измерить сеть у нас на факультете, однако обобщить результаты на весь Internet нельзя. Наш администратор педант, у него все машины, и ни одной больше, перечислены в DNS. Погрешность будет нулевой, но таких администраторов не очень-то много. Для получения более или менее точных результатов нужно найти около пятисот различных сетей, в которых может быть измерено все. Естественно, выполнить эту работу без согласия администраторов сетей нереально.

Серьезно повлиять на оценку количества компьютеров могут и межсетевые экраны, так как при их использовании устройство считается недоступным для ping, хотя оно работает и доступно по HTTP. Определить же число реально работающих межсетевых экранов невозможно. Я могу оценить только количество администраторов, которые читают записи межсетевых экранов. (Кстати, я получил от них около десятка писем с просьбой больше не тестировать их сети.) Поэтому невозможно не только точно определить количество работающих в Сети компьютеров, но и оценить погрешность измерений. Остается сравнивать только результаты тестирования за какой-либо промежуток времени, так как можно предположить, что стиль администрирования отдельных сетей изменяется медленнее, чем растет Сеть.

Можно ли по полученным данным судить о количестве Web-серверов в доменах .ru и .su?

Сложно точно определить количество реальных Web-серверов, поскольку на одном IP-адресе или DNS-имени может располагаться несколько одинаковых Web-серверов. Например, спецификация HTTP 1.1 позволяет иметь на одном IP-адресе несколько серверов, которые будут отличаться только доменными именами. Эта возможность часто используется для работы с несколькими кодировками. Так, при обращении к серверу с именем win.domen.ru ответ будет выдаваться в кодировке Windows, если же обратиться к серверу koi.domen.ru, то все странички будут перекодироваться в КОИ-8. Таким образом, анализируя только DNS-имена, можно подсчитать несколько раз один и тот же Web-сервер для различных кодировок.

Теоретически можно получить содержание сервера или структуру HTML-документа (количество тегов) и проанализировать их, но такой метод анализа содержания блокируется кодировками, рекламой и динамически генерируемыми страничками, когда два обращения к одной и той же страничке дают разное содержание. Например, простой счетчик посетителей может каждый раз изменять Web-страницу. Есть и еще одна забавная ситуация, когда Web-сервер поставлен, но показывает только страничку по умолчанию, а другого содержания там просто нет. Считать такие серверы одинаковыми или разными? Не знаю. Достоверно только одно: серверов Apache много, а Microsoft Internet Information Server - мало, остальных же практически нет. Этот факт настолько очевиден, что с ним никто и не спорит. Все остальное - спекуляции. Даже процентное соотношение серверов.