Как сделать трассировку до сайта

Я ищу способ сделать клиентскую часть traceroute, то есть в браузере. Насколько мне известно, невозможно отправлять ICMP, UDP или TCP-пакеты с произвольными значениями TTL через Javascript или Flash. Я знаю, что Flash разрешает TCP-соединения через класс Socket в ActionScript, но это не кажется полезным для реализации traceroute. Является единственным решением для разработки плагина для браузера?

EDIT: я только узнал, что это было сделано с помощью Java-апплета: http://www.codefromthe70s.org/traceroute.aspx Плохая новость заключается в том, что этот апплет требует подписания кода, поскольку он фактически анализирует вывод из исполняемого файла ping базовой клиентской системы. Из-за этого пользователю предлагается разрешить запуск приложения Java, что является громоздким.

Дополнительная информация здесь: http://www.codefromthe70s.org/traceroute_explained.aspx Я все еще ищу более простое решение, если кто-то может помочь. EDIT 2: Спасибо за ваши ответы. Думаю, мне придется пойти с Java. Интересно, будет ли NaCl (http://code.google.com/p/nativeclient/) поддерживать какое-то приложение traceroute.

Как пропинговать сервер и сделать трассировку

Franck 01 фев. 2010, в 15:59
Поделиться
Почему вы не можете подписать апплет?
shylent 03 фев.

2010, в 18:31
Я могу подписать это, конечно. Просто проверяю, есть ли другие способы сделать это.
Franck 04 фев. 2010, в 00:40

Поделиться:
client-side
actionscript
traceroute

8 ответов

Лучший ответ

Вы не можете сделать это вообще из браузера. Javascript может в лучшем случае открыть соединение с исходным сервером для запросов AJAX, но может делать это только через HTTP. Flash может разговаривать с произвольными хостами, но только если они указаны в файле crossdomain.xml на исходном сервере и снова только через TCP. Поддержка UDP во Flash, по-видимому, ожидается.

Traceroute и ping — это протоколы, основанные на ICMP, и не могут быть созданы/управляются с помощью Flash или Javascript. Они также требуют «сырого» доступа для создания пользовательских пакетов, и это определенно не может быть сделано на стороне браузера. Вот почему «ping» — это программа «SUID» для Unix-систем, поскольку для доступа к пакетному доступу требуются привилегии root.

В лучшем случае вы можете выполнить серверную реализацию и получить вывод, отправленный в браузер. И даже тогда вы, скорее всего, не смогли бы сделать это из процесса на сервере в окне Unix, поскольку веб-сервер вряд ли будет работать от имени root. Вам нужно будет выполнить ping системы и/или traceroute и перенаправить вывод обратно в браузер.

Marc B 03 фев. 2010, в 23:13
Поделиться

«Вы не можете сделать это вообще из браузера». — за исключением подписанного апплета с использованием JNI. Я почти уверен, что подписанный апплет под управлением JNI может делать буквально все что угодно.

Еще по теме:  Настройка модема id TV

Frank Farmer 13 авг. 2010, в 17:22

Почему бы вам просто не подписать апплет? Разве проблема не в том, что вы еще не знаете, как подписать апплет? Если да, тогда начинайте здесь: jarsigner. Здесь — более четкое руководство.

Как сделать трассировку до сервера

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

Javascript и ActionScript не могут этого сделать из-за ограничений безопасности. Они живут только в контексте веб-страницы. Silverlight, возможно, сможет это сделать, но не прикасайтесь ко мне. Я не делаю NET.

BalusC 03 фев. 2010, в 13:37
Поделиться

Дело не в том, что я не знаю, как это сделать, но спасибо за ссылку на учебник. Я только хотел получить некоторое подтверждение того, что это невозможно в JS / ActionScript из-за модели безопасности браузера.

Franck 04 фев. 2010, в 00:40

Я ожидал, что подписанный Java-апплет сможет отправлять ICMP-пакеты, но после некоторого поиска в Google это выглядит так, как будто Java поддерживает только TCP / UDP? Я полагаю, это все еще возможно через JNI.

Frank Farmer 13 авг. 2010, в 17:19

Существует расширение браузера CoNetServ (Комплексные сетевые службы). Он способен делать traceroute с вашей локальной машины прямо в вашем браузере. http://wiki.github.com/VojtechVitek/CoNetServ/

EDIT: И Chrome, и Firefox отменили объединение библиотек NPAPI в расширения/надстройки. К сожалению, вышеупомянутое больше не будет работать.

Vojtech Vitek 07 июль 2010, в 13:16
Поделиться
Есть ли альтернатива, чтобы иметь возможность делать то, на что способен CoNetServ?
Jay Doughty 26 июль 2014, в 21:25

Хм. нет, из-за модели безопасности.

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

Мне бы хотелось, чтобы здесь было неправильно.

Rich 03 фев. 2010, в 13:44
Поделиться

function runapp() Click me!

Таким образом, он работает только в IE из-за ActiveX.

Он будет запускать traceroute до 10.10.35.1 и записать вывод в div с .

Ярослав Исаев 29 фев. 2016, в 10:49
Поделиться

Вам не нужно создавать апплет и подписывать его! Можно использовать java из javascript. Я сделал script для выполнения traceroute с ActiveX или Java.

Я не вижу никаких предупреждений о безопасности на OS X. Попробуйте это в Windows и Linux и скажите мне, что происходит: -)

UPD: кажется, что он работает только в Firefox

myfreeweb 14 янв. 2012, в 17:12
Поделиться

Возможно, немного поздно, но может быть интересен для будущих чтений (например, mine: -D).

Еще по теме:  Моя трансляция ren ТВ

В Java 1.5 есть класс InetAdress с методом isReachable, который вы можете попробовать. Проверьте это:

mTorres 13 май 2011, в 07:39
Поделиться

Не гарантируется, что это фактический ICMP-запрос, и вы не можете настроить TTL. 0x13.de/index.php/code-snippets/74-icmp-ping-in-java.html

Justin Dearing 06 июль 2011, в 14:34

Как насчет выполнения traceroute на сервере и возврата результата с somekind ajax-вызова

Источник: overcoder.net

TRACERT – трассировка маршрута к заданному узлу в командной строке Windows.

nbsp Утилита трассировки маршрута до заданного узла TRACERT.EXE является одним из наиболее часто используемых инструментов сетевой диагностики. Основное ее назначение — получить цепочку узлов, через которые проходит IP-пакет, адресованный конечному узлу, имя или IP-адрес которого задается параметром командной строки.

Формат командной строки:

tracert [-d] [-h максЧисло] [-j списокУзлов] [-w таймаут] [-R] [-S адресИсточника] [-4] [-6] конечноеИмя

Параметры командной строки:

-d — не использовать разрешение в имена узлов.

-h максЧисло — максимальное число прыжков при поиске узла.

-j списокУзлов — свободный выбор маршрута по списку узлов (только IPv4).

-w таймаут — таймаут каждого ответа в миллисекундах.

-R — трассировка пути (только IPv6).

-S адресИсточника — использовать указанный адрес источника (только IPv6).

-4 — принудительное использование IPv4.

-6 — принудительное использование IPv6.

В основе трассировки заложен метод анализа ответов при последовательной отправке ICMP-пакетов на указанный адрес с увеличивающимся на 1 полем TTL. («Время жизни» — Time To Live). На самом деле это поле не имеет отношения к времени, а является счетчиком числа возможных переходов при передаче маршрутизируемого пакета. Каждый маршрутизатор, получив пакет, вычитает из этого поля, сохраняемого в заголовке пакета, единицу и проверяет полученное значение счетчика TTL. Если значение стало равным нулю, такой пакет отбрасывается и отправителю посылается ICMP-сообщение о превышении времени жизни (сообщение «Time Exceeded», значение 0x11 в заголовке ICMP).

Если бы не было предусмотрено включение поля TTL в IP пакетах, то при ошибках в маршрутах, могла бы возникнуть ситуация, когда пакет будет вечно циркулировать в сети, пересылаемый маршрутизаторами по кругу.

nbsp При выполнении команды tracert.exe сначала выполняется отправка ICMP пакета с полем TTL в заголовке равным 1 и первый в цепочке маршрутизатор (обычно это основной шлюз из настроек сетевого подключения) вычтя единицу из TTL получает его нулевое значение и сообщает о превышении времени жизни. Таким образом, утилита TRACERT.EXE получает IP-адрес первого маршрутизатора, участвующего в доставке пакетов конечному узлу. Эта последовательность повторяется трижды, поэтому в строке результата, формируемой tracert.exe, после номера перехода отображаются три значения времени отклика:
1 nbsp 1 ms nbsp 1 — номер перехода (1 — первый маршрутизатор)
1 ms 2 — первый маршрутизатор его уменьшит до 1 и отправит следующему в цепочке, который после вычитания 1 обнулит TTL и сообщит о превышении времени жизни. Утилита TRACERT.EXE получит второй IP-адрес узла, участвующего в доставке пакета получателю и его время ответа. Процесс трассировки будет продолжаться до тех пор, пока не будет достигнут конечный узел, имя или адрес которого заданы в качестве параметра командной строки, например , tracert yandex.ru , или до обнаружения неисправности, не позволяющей доставить пакет. По умолчанию, утилита TRACERT.EXE использует счетчик максимального числа переходов равный 30, что должно быть достаточно для достижения любого узла на планете. При необходимости, иное значение счетчика можно задать с помощью параметра -h

Еще по теме:  Танки фильм когда на ТВ

Пример результатов выполнения tracert google.com

tracert google.com — трассировка маршрута к узлу google.com

Трассировка маршрута к google.com [74.125.45.100] с максимальным числом прыжков 30:
1 1 ms

nbsp В результатах трассировки могут присутствовать строки, где вместо адреса узла отображается звездочка (узел номер 3 в примере). Это не обязательно является признаком неисправности маршрутизатора, и чаще всего, говорит о том, что настройки данного узла запрещают отправку ICMP-сообщений по соображениям безопасности и уменьшения нагрузки на канал при в случае некоторых разновидностей DDoS-атак . Например, подобные настройки используются в сетях Microsoft . Серверы корпорации не отвечают на ping и не позволяют выполнить трассировку маршрута к ним.

Примеры использования TRACERT

tracert google.com — выполнить трассировку маршрута к узлу google.com .

tracert 8.8.8.8 — выполнить трассировку маршрута к узлу с IP-адресом 8.8.8.8

tracert -d yandex.ru — выполнить трассировку маршрута к узла yandex.ru без разрешения IP-адресов в имена узлов. Трассировка в таком режиме выполняется быстрее.

tracert -d -6 ipv6.google.com — выполнить трассировку с использованием протокола IPv6.

Пример результатов трассировки с использованием протокола IPv6:

trace to ipv6.google.com (2a00:1450:4013:c00::71), 30 hops max, 40 byte packets 1 2a02:348:82::1 (2a02:348:82::1) 8.087 ms 8.063 ms 8.086 ms 2 te0-22.cr1.nkf.as49685.net (2001:4cb8:40b:1::1d01) 2.143 ms 2.129 ms 2.103 ms 3 amsix-router.google.com (2001:7f8:1::a501:5169:1) 1.379 ms 1.415 ms 1.422 ms 4 (2001:4860::1:0:87ab) 1.437 ms (2001:4860::1:0:87aa) 2.157 ms (2001:4860::1:0:87ab) 1.408 ms 5 (2001:4860::8:0:87b0) 1.494 ms 1.469 ms (2001:4860::8:0:87b2) 8.350 ms 6 (2001:4860::8:0:b1b7) 5.364 ms 5.321 ms 4.748 ms 7 (2001:4860::2:0:8651) 4.653 ms 6.994 ms (2001:4860::2:0:8652) 13.926 ms 8 ee-in-x71.1e100.net (2a00:1450:4013:c00::71) 4.732 ms 4.733 ms 4.783 ms

Источник: ab57.ru

Как сделать трассировку (tracert)

Трассировка — это возможность проверить маршрутизацию, то есть путь до сервера игры, и узнать, на каком этапе возникают задержки. Может быть, проблемы с пингом у вас на уровне вашего роутера или провайдера.

Выполнить трассировку вы можете спомощью командной строки cmd.exe, для этого необходимо в окне консоли ввести команду:

Пример трассировки до sto.valve.net

Цифры в каждой строке означают время прохождения пакета от предыдущего узла
на маршруте до текущего.

Источник: click-storm.ru

Оцените статью
Добавить комментарий