Методика исследования
Данные, полученные из DNS
Информация о количестве доменов и машин в них получена
легальным путем из Domain Name System. Для каждого из интересующих
доменов (.RU, .SU) производился запрос типа SOA, если он происходил
успешно, то производился Zone Transfer. Для всех успешных Zone
Transfersпроцесс повторялся рекурсивно.
В приводимых результатах 'доменом' считается запись типа NS c
уникальным именем для которой существует (хотя бы в теории) запись
типа SOA. Случаи, когда SOA не был получен из-за timeout посчитаны
отдельно
'Хостом' или машиной считается запись типа A. Понятно,
что этот подход спорен (например, машины с несколькими именами
сделанными через A-record будут посчитаны, а с несколькими именами
через CNAME - не будут), но этот подход имеет такое же право на жизнь
как и все остальные методы (можно считать
уникальные имена, можно уникальные IP-адреса и так далее) и я выбрал
именно его (собственно, подход не важен, главное чтобы он все время
был одинаковым)
Хостом с Intranet-адресом считается машина с адресом из
Private Address Space (10/8,172.16/12,192.168/16), либо с адресом
localhost(127/8).
Информация о распределении IP-адресов и достижимости
отдельных машин
Все IP-адреса машин, найденных на стадии сканирования DNS,
группировались по первым 3 байтам адреса (блок размером с class C
network). Далее выбирались 20% этих групп и все машины, вошедшие
в эту выборку, проверялись на доступность методом посылки ICMP Echo
Request и ожидания ICMP Echo Reply. Максимальное время ожидания
ответа составляло 30 секунд (если это время больше, то машину можно
считать недоступной в практическом смысле этого слова).
Очевидно, что заметная часть машин доступна не круглые сутки
(пользовательские машины включаются и выключаются, каналы падают и
поднимаются), поэтому процедура сканирования повторялась 3 раза
(после 3-го сканирования каждый следующий проход находит еще до
0.5-2% активных машин, этот процесс может продолжаться бесконечно
или около того).
Естественно, если какая-то часть машин в домене недостижима, это не
означает, что они не работают. Если ICMP Echo Request/Reply закрыто
firewall'ом, то эффект будет такой же, как если бы эти машины не
работали.
Легальность примененного подхода. В процессе сканирования я
получил несколько писем от администраторов сетей, которые просили
прекратить этот процесс. Что и было сделано для их сетей. Но я
сканировал только IP-адреса, опубликованные в DNS, т.е.
взятые из публично доступного источника информации.
Легальность посылки пакета на опубликованный адрес в сети
публичного пользования подвергать сомнению трудно, хотя некоторых
системных администраторов это нервирует.
Желающие исключить свои сети из этого и последующих этапов
сканирования могут связаться со мной по
E-mail. В дальнейшем я
планирую сделать Web-based-form для автоматизации этого процесса.
Избыточный траффик,
создаваемый процедурой сканирования невелик - примерно 10 килобайт
на одну сеть класса C за один проход или 10 секунд работы канала на
9600 т.е. и тут каких-либо проблем быть не должно.
Распространенность WWW-сервиса
Все машины, ответившие на стадии проверки достижимости подвергались
дальнейшему исследованию. Каждой из них
посылался HTTP-запрос (на TCP-port 80) вида
"HEAD / HTTP/1.0".
Ответившая машина помечалась как имеющая WWW-сервис, заголовок Server:
из ответа использовался для анализа распространенности WWW-серверов.
В дальнейшем под понятием "WWW-server" понимается
уникальная пара hostname - IP-address, ответившая на HTTP-запрос.
Очевидно,что способов посчитать WWW-сервера довольно много (скажем,
если сервер на одном IP-адресе отвечает по-разному на запросы с
разным заголовком Host:, то это один сервер или несколько ?),
поэтому нужно ограничиться каким-то одним способом подсчета и
использовать его. В этом смысле подсчет по
парам hostname-address (т.е. по DNS-записям типа A) нисколько не хуже
других. И не лучше.
Как и в случае с ping, процесс опроса WWW-серверов повторялся три
раза.
Официальные WWW-серверы.
Под официальным сервером в этой статистике понимаются машины с
именем (т.е. A или CNAME record в DNS) www.some.domain или some.domain.
В процессе тестирования предпринималась попытка установить соединение
с TCP port 80 и все ответившие машины подсчитывались.
Распространенность программного обеспечения WWW-серверов
В отличие от прочих моих исследований, методика подсчета WWW-серверов не
нуждается в подробном комментировании. Подобных исследований много,
самым известным является
Netcraft Web Server Survey.
Суть этого этапа исследования заключается в подсчете разных
HTTP-заголовков Server: в ответах WWW-серверов, полученные на двух
предшествующих этапах исследования т.е. в анализе распространенности
различного программного обеспечения WWW-серверов.
Достоверность результатов
Все приводимые на конкретную дату результаты за исключением числа доменов
2-го уровня следует считать ориентировочными. Точности исследования мешают
такие объективные факторы:
- Часть доменов не отдает информацию о себе по AXFR. Соответственно,
посчитать машины в них невозможно.
- В DNS имеются дубликаты, причем непонятно как их удалить. Скажем,
если hostA.domain1.ru и hostB.domain2.ru имеют одинаковый IP-адрес, то
какому из доменов "записать" эту машину ? В-принципе,
ответ на вопрос может дать reverce domain lookup, но для того, чтобы
сделать такой lookup для 150 тысяч IP-адресов необходимо писать
отдельную программу, простой последовательный gethostbyaddr()
безумно медленный (прямой lookup примерно 6000 официальных WWW-серверов
занял у меня больше суток). В настоящий момент такая программа у
меня отсутствует, поэтому дубликаты просто не удалялись.
- Часто машин не отвечает на Ping т.к. закрыты firewall.
- Другие машины, реально работающие в Internet не описаны в DNS и
вообще нигде т.к.работают через "маскарад" (masquerade).
- Некоторые этапы исследования проводились сразу перед или сразу
после праздников, когда число не работающих машин было больше
среднего.
- Еще миллион "Но"
Как следствие, не имеет смысла говорить, что на 5-е мая имеется ровно
212840 машин. В то же время, цифры прироста каждого параметра будут
существенно более точными при условии точного соблюдения процедуры.
Это происходит за счет того, что "процент использующих firewall",
средняя доля администраторов, не отдающих AXFR и так далее меняется
медленнее, чем происходит рост сети. Большую погрешность может
внести только полное закрытие для исследования какого-либо большого
домена и за этим приходится следить отдельно.
Таким образом посчитать точное количество машин/доменов/итд - невозможно.
Оценить прирост - вполне реально.
|