Home

Page 223
Page 223
background image

216 Глава 5

Если что-то непонятно, то потерпите, когда вы увидите исходный код ска-
нера, все станет ясно. На практике это легче воспринимается.

5.2.1. Время и количество

Когда мы запускаем ожидание события, то должны указать максимальное

время в секундах. Это необходимо, потому что если сервер не ответит ни на

одну попытку соединения, то программа может ждать очень долго. Это осо-
бенно важно для сканера портов, так как мы будем пытаться присоединить-
ся ко всем портам.

Допустим, что программа проверяет соединение с

 портом. А если он

у сервера закрыт, то она может долго и нудно ждать ответа, которого просто

не будет. Раз порт закрыт, значит, и ответа не может быть. Вот именно по-
этому обязательно нужно указывать максимальное время ожидания, после
которого считается, что соединение невозможно.

В синхронном режиме за время ожидания отвечает библиотека WinSock,

а в асинхронном мы сами регулируем время и можем прервать ожидание

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

сервере, а не с ожиданием освобождения порта или сервера.

При выборе максимальной продолжительности ожидания нужно быть очень

аккуратным, потому что если выбирать слишком большое число, то сканер

потеряет в скорости. Ну а если указать слишком маленькое, то сервер может
не успеть ответить, и вы будете думать, что порт закрыт, а на самом деле все

в порядке.

Время ожидания сильно зависит от количества одновременно сканируемых
портов, скорости соединения и мощности сервера. Из моей практики могу

сказать, что если сканировать через модем при скорости 28,8 по 20—40 пор-
тов в пачке, максимальное время нужно ставить в

 2 секунды. Если вы

хотите отсканировать сразу 1 024 порта, то лучше поставить 3—4 секунды.

Большее значение лучше не ставить, потому что все равно из 1 024 портов у

интернетовских серверов открыто бывает не более 10. За 4 секунды любой
сервер сможет ответить на попытку соединения на 10 из его портов. Но я не
советую вам сканировать такими большими пачками, лучше ограничиться
максимумом в 50 портов.

Для локальных сетей это значение можно уменьшить и сканировать по

50 портов с задержкой в 1 секунду. Даже при средней загрузке сервера это

вполне нормально.


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.