Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Perl, Ping Определение расстояния до узла

3.2K
04 февраля 2008 года
Sania
186 / / 28.10.2006
Задача: определить расстояние до узла.
Решил по принципу Ping, расст=MinTTL с которым пакет доходит, слегка оптимизировав процесс перебора TTL...

Но Ping пакет помимо начального TTL должен содержать и реальное значение счетчика... Расст=StartTTL-EndTTL
Что позволит определить расстояние с 1 пинга...
Но как выдрать конечный TTL? :confused:

Заранее спасибо.
2
04 февраля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Sania
Задача: определить расстояние до узла.
Решил по принципу Ping, расст=MinTTL с которым пакет доходит, слегка оптимизировав процесс перебора TTL...

Но Ping пакет помимо начального TTL должен содержать и реальное значение счетчика... Расст=StartTTL-EndTTL
Что позволит определить расстояние с 1 пинга...
Но как выдрать конечный TTL? :confused:

Заранее спасибо.



начнем с начала. что значит "расстояние до узла"? в километрах, маршрутизаторах, попугаях?

3.2K
07 февраля 2008 года
Sania
186 / / 28.10.2006
Цитата: squirL
начнем с начала. что значит "расстояние до узла"? в километрах, маршрутизаторах, попугаях?



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

Но исходя из того, что в вопросе упомянут TTL, можно предположить, что требуется расстояние в хопах(к-во узлов до компа).
[кстати расстояние в КМ дано :D ]
Что качается TTL, то мне помнится, что начальный TTL записан в Ping пакете, а конечный TTL кажись запрятан на уровне TCP/IP фрейма... Хотя я могу ошибаться...

2
07 февраля 2008 года
squirL
5.6K / / 13.08.2003
для определения расстояния в хопах, думаю, вам нужно реализовать алгоритм, используемый traceroute - посылать пакеты, постепенно увеличивая TTL начиная с 1 и считая количество "отбоев" от промежуточных маршрутизаторов.
пример. допустим между вами и пунктом назначения A один роутер.
вы посылаете ping A c TTL 1. первый же роутер дает вам ICMP TIME_EXCEEDED. посчитали. посылаем с TTL 2. Получаем ICMP echo reply. вывод - мы прошли один хоп до пункта назначения ;)

насчет километров - приблизительно можно посчитать ;) просчитав среднее время хождения определенного количества пакетов до узла и зная скорость распространения э/м волны по проводам ;)
3.2K
09 февраля 2008 года
Sania
186 / / 28.10.2006
:mad:
squirL, вы первый пост читали???
Я уже решил эту задачу подбором TTL... (можно считать что это trace).
с помощью обычного ping
1. Перебор TTL по порядку занимает столько же времени, сколько хопов до узла, в моем случае это от 4 до 25...
2. Бинарный поиск позволяет определить minTTL за 8 ping'ов, т.е. в большинстве случаев - быстрее.
3. В ответ на первый ping нам приходит пакет, в котором указан TTL их сервера (в пределах России это обычно 128 или 64), что позволяет сэкономить еще 1-2 пинга (т.е. 6-7).
4. Найти узел, до которого больше 32 узлов, сложновато т.е. мы определяем расстояние до любого узла за 5 пингов+1двухпакетный пинг для определения доступности узла (на 1й ping пакет многие узлы не отвичают... видимо DOS боятся:D )
В итоге получаем 7 пакетов...

Мой вопрос: как определить расстояние в 1-2 пакета...
Ну можете еще подсказать, как на Perl'е асинхрон пишется...
Обьяснить задачу подробнее?
2
09 февраля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: Sania
:mad:
squirL, вы первый пост читали???



читал. ваш алгоритм не кажется мне оптимальным. вы можете еще раз описать его пошагово?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог