Вопрос о команде Ping

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Вопрос о команде Ping

Сообщение Vova_2581 » 09.10.2019 (Ср) 23:47

Здравствуйте!
У меня, наверное, совсем уже детский вопрос, как для Вас... но все же хочу спросить у специалистов некую специфику всех этих отправляемых пакетов по протоколу ICMP. Как я понимаю, Ping по умолчанию отправляет пакет определенной длины - 32 байта, собственно такой структуры...
Screen1.jpg
Screen1.jpg (51.5 Кб) Просмотров: 472

Но параметром << -l >> я могу менять размер пакета. Задать размер, скажем 128, 16 или 8, а может вообще 0 (ноль!) и пинг проходит!!
Так что же получает сервер, когда я наберу команду: Ping 8.8.8.8 -l 0
Screen2.jpg
Screen2.jpg (37.66 Кб) Просмотров: 472

P.S. Если будете бить не сильно и не ногами, то я Вам даже спасибо скажу. :)

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2864
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Вопрос о команде Ping

Сообщение Proxy » 10.10.2019 (Чт) 0:32

Очевидно пакет с нулевым (отсутствующим) Payload
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 10.10.2019 (Чт) 4:51

Причём тут VB1—VB6? Переношу в другой раздел.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 10.10.2019 (Чт) 9:22

Ага.. То есть, если правильно понимаю, то при пинге, в любом случае отправляется 32 байта, как бы неизменной структуры пакета с параметрами, а уже в догрузку к этому - Payload я могу дополнительно расширить пакет произвольным числом байтов, чтобы проверить всели пакеты проходят, или ничего не расширять указав ноль. Я правильно Вас понял? :roll:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 10.10.2019 (Чт) 10:16

Почему 32?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 10.10.2019 (Чт) 19:15

Ну, я исхожу из той IP датаграммы, которую я привел выше... последняя колонка Bit 24-31.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2864
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Вопрос о команде Ping

Сообщение Proxy » 11.10.2019 (Пт) 0:30

32 * 7 (строк в таблице) = 224 бита;
224 бита = 28 октетов (байт) при нулевом Payload, чисто Headers.
Откуда 32 байта?
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14168
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вопрос о команде Ping

Сообщение alibek » 11.10.2019 (Пт) 8:55

Vova_2581 писал(а):То есть, если правильно понимаю, то при пинге, в любом случае отправляется 32 байта, как бы неизменной структуры пакета с параметрами

Неправильно.
По умолчанию ping использует 32-байтовый payload, но это значение можно переопределить ключом -l.
Содержимое этого payload в windows-версии циклически наполняется строкой алфавита.
28-байтовый заголовок отправляется в любом случае, независимо от ключей.
Количество байт, указываемых в выводе ping, относятся только к данным, без заголовка.
Lasciate ogni speranza, voi ch'entrate.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 13.10.2019 (Вс) 8:33

alibek писал(а):По умолчанию ping использует 32-байтовый payload, но это значение можно переопределить ключом -l.
Содержимое этого payload в windows-версии циклически наполняется строкой алфавита.
28-байтовый заголовок отправляется в любом случае, независимо от ключей.
Количество байт, указываемых в выводе ping, относятся только к данным, без заголовка.

О.. сейчас все абсолютно четко и ясно! Я понял. Большое Вам спасибо за доскональное разъяснение! :)
P.S. Хочу написать небольшую свою программку для пинга, чтобы на работе проверять доступность интернета,
и было очень важно понять этот механизм. Спасибо что прояснили!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14168
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вопрос о команде Ping

Сообщение alibek » 15.10.2019 (Вт) 10:32

Доступность интернета через ping проверять не надо.
Во-первых, ping может быть недоступен, заблокирован или ограничен в привилегиях.
Во-вторых, успешный или неуспешный ответ на пинг ни о чем не говорит.

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

Если очень хочется, то более правильным будет делать так же, как делают популярные ОС при проверке хотспотов.
Нужно попытаться открыть заранее известный собственный ресурс и анализировать итог.
Например яблочные устройства пытаются открыть адрес http://captive.apple.com/generate_204.
Если в ответ получают пустой HTML с тестом Success — значит интернет есть.
Если получают HTML с другим содержимым — значит на хотспоте нужно авторизоваться.
Если не получают ничего, значит интернета нет.
Lasciate ogni speranza, voi ch'entrate.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 15.10.2019 (Вт) 14:07

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

А если пинговать ресурс с заранее открытыми и доступными всеми привилегиями для пинга, например, какие-нибудь публичные DNS сервера???
Например, dns.google по IP - 8.8.8.8 или 8.8.4.4, любой другой публичный DNS... например, из защищенных: quad9 - IP 9.9.9.9
Логика простая: доступ к ресурсам тех или иных сайтов, в первую очередь, обеспечивается через DNS. Правильно??
Если DNS пингуется один или сразу несколько произвольных, значит интернет есть, если все DNS НЕ пингуются, - значит интернета нет. Логично??
А можно пойти и другим путем: на целевом ПК делать запрос через API или проще WMI на получение активного и альтернативного DNS локальной машины и пинговать их.
Если они оба не пингуются, то и интернета на этой машине не будет.
alibek писал(а):Во-вторых, успешный или неуспешный ответ на пинг ни о чем не говорит.

Что Вы имеете ввиду? Пинг проходит, а интернета нет?? Разве так может быть???

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 15.10.2019 (Вт) 19:15

Vova_2581 писал(а):А если пинговать ресурс с заранее открытыми и доступными всеми привилегиями для пинга, например, какие-нибудь публичные DNS сервера???
Например, dns.google по IP - 8.8.8.8 или 8.8.4.4, любой другой публичный DNS... например, из защищенных: quad9 - IP 9.9.9.9

Причём тут открытый и заранее доступный. Протокол ICMP может резаться не владельцами этих публичных серверов, а системным администратором исходного компьютера. Или его провайдером последней мили. Или каким-то промежуточным провайдером.

Vova_2581 писал(а):Если DNS пингуется один или сразу несколько произвольных, значит интернет есть, если все DNS НЕ пингуются, - значит интернета нет. Логично??

Нет, не логично, потому что понятия «интернет есть» с технической точки зрения не имеет смысла. С практической, как правильно подметил Алибек, если нам в интернете нужен какой-то ресурс, то надо его сразу и проверять. Интернет это совокупность машин, это децентрализованная сеть, и непонятно, какая часть должна отвалиться, чтобы можно было сказать «интернета нет».

С обывательской точки зрения интернет — это вообще синоним слова веб. Если обывателю отрезать HTTP и HTTPS, а всё остальное оставить рабочим, обыватель будет уверен, что интернета нет. Хотя, если HTTP не трогать, но задавить DNS-трафик, у обывателя тоже почти все сайты перестанут открываться (или выборочно — в зависимости того, какие результаты резолвинга хостов попали в локальный кеш DNS).

Так что различные протоколы могут работать в самых различных комбинациях. Может незаться ICMP-трафик, и тогда проверка пингом будет давать результат, противоречащий обывательскому представлению о работе интернета. ICMP может работать, но резаться всё остальное. И опять будет расхождение. И так далее.


А что касается вопроса о том, какой минимальный размер ICMP сообщения, то здесь вообще надо разобраться, относительно чего считать:
icmp_measurement.png
icmp_measurement.png (8.66 Кб) Просмотров: 344
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 15.10.2019 (Вт) 20:52

Хакер
Вы все правильно написали, но мне кажется, что, при этом, Вы очень сильно все усложнили. :drunken:
Конечно же я понимаю, что могут быть различные вариации. Теперь по-порядку...
Хакер писал(а):С практической, как правильно подметил Алибек, если нам в интернете нужен какой-то ресурс, то надо его сразу и проверять.

А если нужен не один какой-то конкретный ресурс, а вообще интернет, как таковой и доступ к нему, когда имя запрашиваемого ресурса заранее неизвестно. Вот Вы пишите:
Хакер писал(а):Интернет это совокупность машин, это децентрализованная сеть, и непонятно, какая часть должна отвалиться, чтобы можно было сказать «интернета нет».

Тогда вопрос: ок, идем по плану alibek и периодически запрашиваем адрес http://captive.apple.com/generate_204 получаем Success, а далее происходит, как Вы выразились «отвал» сайта http://captive.apple.com, например, хакерская атака или просто электричество кончилось. :D И вот в один прекрасный момент мы получаем Null – значит интернета нет – именно так и сообщит моя программа. В тоже время, как Вы правильно заметили, – все остальные сайты НЕ подвергшиеся хакерской атаке или вовремя заплатившие за электричество поставщику электроэнергии, работают, как и обычно. Получаем ошибочное представление о, якобы, «пропавшем» интернете. Получается, что и так тоже действовать неправильно. :scratch:

И еще вопрос: на кой хрен вообще админу, провайдеру или «дяде Пете», еще кому по списку... «резать» ICMP ??? На фига??? :shock:
Ведь прога Ping для всех админов есть рабочий инструмент. А иначе, как он налаживает сеть, если не может проверить соединение??? :scratch:

Хакер писал(а):Если обывателю отрезать HTTP и HTTPS, а всё остальное оставить рабочим, обыватель будет уверен, что интернета нет. Хотя, если HTTP не трогать, но задавить DNS-трафик, у обывателя тоже почти все сайты перестанут открываться

Вам не кажется, что обывателю вообще по фиг, что и кто там отключит, когда у него на компе из всего того, что ему нужно в интернете, 90% станет НЕдоступным – это и есть отсутствие интернета с точки зрения простого обывателя – именно к этому мы и стремимся. То есть, говоря простым языком: если по каким-либо причинам хотя бы большая половина >60% сайтов на компе простого обывателя перестанет открываться - это и будет означать однозначное – интернета НЕТ!

Значит вывод такой: чтобы реализовать все вышеописанное, нужен комплексный подход...
1) Запрос ресурса HTTP
2) Запрос ресурса HTTPS
3) Пинг DNS 1
4) Пинг DNS 2
5) Пинг DNS 3
Нет ответа по всем пунктам - ИНТЕРНЕТА НЕТ! Все! :) Так годится???

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 16.10.2019 (Ср) 1:36

Vova_2581 писал(а):как и обычно. Получаем ошибочное представление о, якобы, «пропавшем» интернете.

Так не надо делать представление об интернете. Надо делать представление об отдельных ресурсах. Нет никакого интернета, который может пропадать. Пропадают отдельные ресурсы.

Vova_2581 писал(а):И еще вопрос: на кой хрен вообще админу, провайдеру или «дяде Пете», еще кому по списку... «резать» ICMP ??? На фига???

Да причин много. От сугубо технических, до синдрома вахтёра.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14168
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вопрос о команде Ping

Сообщение alibek » 16.10.2019 (Ср) 9:12

Хакер писал(а):Хотя, если HTTP не трогать, но задавить DNS-трафик, у обывателя тоже почти все сайты перестанут открываться (или выборочно — в зависимости того, какие результаты резолвинга хостов попали в локальный кеш DNS).

Это уже не совсем так.
Браузер Google Chrome (самый распространенный) при обращении к ресурсам из встроенного списка (в основном гуглоресурсы) не использует системный DNS, а использует гугловский DNS.
Не исключено, что и другие браузеры/сайты к этому присоединяться.
Это уж не говоря о DoH, DoT и экспериментах CloudFlare.
Lasciate ogni speranza, voi ch'entrate.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 16.10.2019 (Ср) 9:50

Ну, хорошо я понял... Спасибо за ответы. Я не ставлю прямо такие глобальные задачи 100% проверить доступность интернета, я уже понял, что это нереально. Поэтому попробую сделать "полумеру" попроще, а там... практика покажет.
Спасибо Вам за дельные советы, разъяснения и рекомендации. :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 16.10.2019 (Ср) 14:19

alibek писал(а):Браузер Google Chrome (самый распространенный) при обращении к ресурсам из встроенного списка (в основном гуглоресурсы) не использует системный DNS, а использует гугловский DNS.

Гугловский, или же жестко вшитые пары хост->IP? Если просто не дефолтный, а свой, то блокировка DNS-трафика даст тот же результат.

А если вшитый список — то очевидно, что гуглосайты продолжат работать, но только это движение против унификации, стандартизации, переход от общих решений к частным решениям.

Vova_2581 писал(а):задачи 100% проверить доступность интернета, я уже понял, что это нереально.

Не нереально, а сама фраза «доступность интернета» бессмысленна.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14168
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вопрос о команде Ping

Сообщение alibek » 16.10.2019 (Ср) 21:12

Хакер писал(а):Гугловский, или же жестко вшитые пары хост->IP? Если просто не дефолтный, а свой, то блокировка DNS-трафика даст тот же результат.

Гугловский.
А насчет результативности у меня большие сомнения.
Во-первых, как только из-за блокировки DNS отвалятся гуглосервисы, то 99% пользователей тут же снимет блокировку.
Во-вторых, ничего не мешает использовать не чистый DNS, а DNSSEC или DoH, и тогда подмена/перехват DNS станут невозможны, да и даже просто детектирование/блокировка DNS станет делом непростым.
Lasciate ogni speranza, voi ch'entrate.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 30.10.2019 (Ср) 11:56

Хакер писал(а):...сама фраза «доступность интернета» бессмысленна

Разрешите еще поинтересоваться таким вопросом: если нет такого выражения как "доступность интернета", то скажите, пожалуйста, что находится внутри айпишной функции InternetGetConnectedState ???
Она, ведь, и проверяет ту самую "доступность" или нет???

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16230
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вопрос о команде Ping

Сообщение Хакер » 30.10.2019 (Ср) 13:27

Vova_2581 писал(а):что находится внутри айпишной функции InternetGetConnectedState ???

В документации чётко сказано, как она работает.

Она возвращает True если есть хотя бы одно активное модемное соединение или хотя бы одна функционирующая сетевая карта.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 30.10.2019 (Ср) 14:19

Значит, здесь уже идет упор на активность именно "железа" подключенного к интернету?
Получается, что может быть такая ситуация, когда модем/карта активны, а интернета нет. То есть, обрезан HTTP/HTTPS админом, к примеру, или сайт недоступен.
Эта функция все равно вернет True ???

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4267
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Вопрос о команде Ping

Сообщение iGrok » 30.10.2019 (Ср) 18:33

Vova_2581 писал(а):Значит, здесь уже идет упор на активность именно "железа" подключенного к интернету?
Получается, что может быть такая ситуация, когда модем/карта активны, а интернета нет. То есть, обрезан HTTP/HTTPS админом, к примеру, или сайт недоступен.
Эта функция все равно вернет True ???

Ага.

И например если комп включен в роутер, а тот не включен никуда - она тоже вернёт True.
label:
cli
jmp label

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 31.10.2019 (Чт) 10:54

Понятно... Спасибо!

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 20.11.2019 (Ср) 12:02

Пробую применить метод, который описал alibek...
alibek писал(а):...пытаются открыть адрес http://captive.apple.com/generate_204.
Если в ответ получают пустой HTML с тестом Success — значит интернет есть.

Вот таким кодом по таймеру...
Код: Выделить всё
Private Sub Timer1_Timer() 'Interval - 1000 ms
On Error Resume Next
Dim oXMLHTTP As Object
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
  With oXMLHTTP
   .Open "GET", "http://captive.apple.com/generate_204", False
   .Send
   Cls
   If .responseText Like "*Success*" Then
     Print "Ресурс доступен"
   Else
     Print "Ресурс НЕ доступен"
   End If
  End With
  Set oXMLHTTP = Nothing
End Sub

Прикол в том, что объект MSXML2 кэширует полученные данные и при повторном обращении читает данные с кэша, а не из интернета по этому ресурсу. Поэтому я всегда получаю True... даже если выдерну кабель интернета из разъема! :lol: Как мне сбрасывать кэш?? :roll:

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1664
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Вопрос о команде Ping

Сообщение Debugger » 20.11.2019 (Ср) 15:06

1) POST?
2) ipconfig /flushdns ?

Vova_2581
Бывалый
Бывалый
 
Сообщения: 270
Зарегистрирован: 10.01.2010 (Вс) 18:08

Re: Вопрос о команде Ping

Сообщение Vova_2581 » 20.11.2019 (Ср) 20:51

Debugger
Попробовать POST ???.. Думаете, поможет??? :roll:


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList