Как стать автором
Обновить

Комментарии 13

К тому же практически все компьютеры при получении ICMP пакета отсылают обратно ответ на него.

Очевидно, что если мы не получаем ответ на ICMP пакет - значит, сервер выключен.

Это давно не так. Могут, но не обязаны. И более того, любой FW по пути может прибить ICMP со словами "не положено"

При отправке он ставится в значение 64 (может отличаться),

Это тоже не так, зависит по умолчанию от ОС и может настраиваться - например тут
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters]
DefaultTTL

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
\Interfaces<InterfaceID>]

int fd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); if (fd == -1) {

Код стянут с гитхаба, а не написан самостоятельно
https://github.com/br101/pingcheck/blob/master/icmp.c

А может и вообще без слов - т.е. молча.

Первое действие:
man ping
4 COUNT-пинга без остановка клавой Ctrl+C
ping -c 4 google.com

Просто хочу поделиться внезапным (для себя) открытием: пингу можно указать (ключ -I ) какой физический интерфейс использовать независимо от адреса узла назначения.

1. Физический

Биты

Работа со средой передачи, сигналами и двоичными данными

USB, RJ

Зачем вы так с утра?

Вообще непонятно, зачем натягивать сову на глобус мёртвый 7 уровневый OSI на реально используемые 4 уровня TCP/IP.

Сетевики смотрят на Вас с непониманием...

потому программу нужно запускать через sudo

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

Да вот не осиливает:

# Ubuntu 18.04
$ ls -l /bin/ping
-rwsr-xr-x 1 root root 64424 Jun 28  2019 /bin/ping

# Ubuntu 22.04
$ ls -l /usr/bin/ping
-rwxr-xr-x 1 root root 72776 Jan 31  2020 /usr/bin/ping
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep

(cap_net_raw, setuid)

обычный ping использует дополнительный трюк для того, что бы работать от непривелигированного пользователя

https://unixetc.co.uk/2016/05/30/linux-capabilities-and-ping/

а вот в общем случае "сырые сокеты", о которых говорится в статье, требуют прав Администратора (Windows) или root (unix-like системы) в любом случае, так как позволяют не только отправлять но и читать напрямую из сетевой карты. Поэтому tcpdump, работающий по этому же принципу, требует sudo или членства в соответствующей группе.

Всемирный интернет работает именно по этой модели.

Ничто в мире не работает по этой модели.Когда-то, когда автор скорее всего ещё не родился, кое-что пыталось, но потерпело абсолютное фиаско в неравном бою с TCP/IP.

И утилита ping как воплощение ICMP является блестящей демонстрацией того, что и “всемирный интернет” кладёт с прибором на эту модель, которая исключает “перепрыгивание” через уровень.

ISO OSI не просто так называют “эталонной” — она прекрасна для теоретизирования, но не для практического применения.

TTL - Time-To-LiVe. Понимать нада однако:)

А мне понравилась наивная фраза "Линукс может просто поставить свою, если мы не обнулим." ). Это видимо речь про неинициализированную структуру, которая забита мусором, это особенность C/C++, линукс тут не при чем.

Второе замечание, зачем использовать макросы там где это не нужно и только запутывает код? Это я про инициализацию структур, можно же написать обычную функцию или написать этот код прямо по месту. Ох уж эти сишники...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории