Я все больше и больше вижу программистов, разрабатывающих веб-приложения, основанные на том, что я называю менталитетом «пинг-то-делай». Примером может служить приложение, которое проверяет почтовый сервер перед отправкой почты. В довольно жарких дебатах на другом форуме я сделал следующее заявление: «Если вы собираетесь писать программы, использующие Интернет, вы должны хотя бы иметь общее представление об основах». Желание «пинговать, потом делать» подсказывает мне многие, кто есть, не делают ".
На этом форуме и в Stack Overflow я вижу множество вопросов о маршруте ping / trace и задаюсь вопросом, почему? Если это приемлемо для обсуждения здесь, я хотел бы услышать, что думают другие. Если нет, я предполагаю, что он будет быстро закрыт.
Одно уточнение - я хочу прояснить, что я говорю об интернет-трафике, а не о частных сетях.
По моему опыту, многие программисты не понимают, что такое пинг, а что нет. Я часто встречал тех, кто думает, что если они могут пинговать объект, то могут использовать службу X, работающую на этом устройстве. И есть также те, кто думает, что если они не могут пинговать, значит, они не могут и использовать. Оба предположения неверны.
При этом мы не можем ограничить сетевые приложения только теми, кто полностью разбирается в работе с сетью, так же как мы не можем ограничить приложения баз данных теми, кто полностью понимает базы данных. Если бы мы это сделали, мы бы увидели намного меньше приложений, а программисты столкнулись бы с гораздо меньшим количеством обучающих моментов.
Я не уверен, что это не относится к мете, но это медленное утро, так в чем же вред?
ping, в частности, является одним из тех инструментов, которые имеют низкий барьер входа и обеспечивают высокую степень полезности при небольших усилиях. Это также один из первых диагностических инструментов, которым кто-то учится в сети. Это означает, что с ним сталкивается множество людей с разным уровнем подготовки.
Базовые механизмы практически не видны конечному пользователю ping. Новый пользователь может сразу определить, включен ли хост или нет. По крайней мере, они так думают, что видят. Как опытный пользователь, вы знаете, что это не всегда так. В чем проблема использования ping в качестве единственного диагностического инструмента.
Это не показатель того, что что-то идет вверх или вниз. Это показатель времени отклика. Отсутствие ответа не влияет на то, получает ли хост трафик или нет, но это то, как он используется, потому что большинство хостов отвечают на пакеты ICMP. У меня все еще есть относительно знающие пользователи, которые клянутся, что удаленные серверы не работают, если они не отвечают на ICMP.
В результате, пока он используется пользователями, которые не знают его назначения, будут возникать вопросы. Бонус в том, что эти вопросы дают нам возможность улучшить знания задающих их людей.
Что касается traceroute, то это действительно сложный инструмент, который кажется действительно простым. «Если я прослежу этот IP-адрес, я увижу все компьютеры между ним и мной», как если бы Интернет был серией трубок, как метро, где вы могли видеть остановки между собой и пунктом назначения.
Как известно, интернет так не работает. Маршруты все время меняются. Нет гарантии, что два пакета пройдут по одному и тому же пути (или даже что ответ ICMP пройдет по тому же пути, что и источник). Это не означает, что traceroute бесполезен, но для его интерпретации требуется более высокий уровень знаний.
Опять же, когда люди задают вопросы по трассировке, мы должны рассматривать это как возможность обучить, а не как оправдание для злоупотреблений.
Обработка ошибок - это самая недооцененная возможность в программировании и наименее проверенная. Если фрагмент кода выполняет «ping» или «traceroute», у него должны быть очень веские причины для этого. Например. к тому же чтобы почувствовать «Я не могу связаться с почтовым сервером», код может уточнить и записать дамп ping и traceroute в журналы. Это может быть очень полезно, если топология вашей сети неисправна, но только в 4 часа ночи.
Сначала детально определите сбой службы, а затем проведите диагностику. Было бы глупо предполагать, что все в порядке, судя по диагностике хоста.
Смысл ping-then-do может заключаться в том, что большинство протоколов на основе TCP имеют довольно длинные таймауты, и программисты пытаются избавить пользователей от ожидания. Однако здесь по-прежнему неправильно выполнять пинг. Обнаружение отказа почтового сервера в отдельном процессе, перенастройка на использование резервного сервера. Есть чистые решения практически для каждой ситуации сбоя без использования ping.
Что побудило меня начать это, так это то, что я проголосовал за простой вопрос, почему кто-то выполняет трассировку маршрута в Google.
Был парень, которого я знал в месте, которое вы бы знали, если бы я вам сказал. Мы довольно часто бывали вместе в окне обслуживания в o'dark тридцать, и он находил людей с заметными шаблонами пинга, а затем скачивал. Он любил блокировать ICMP на этих портах на несколько минут. Это было 15 лет назад, и я уверен, что такого больше не происходит. О, истории, которые я мог бы рассказать. Мы все были удивлены тем, насколько быстро росла магистраль Интернета.
Мое твердое мнение состоит в том, что приложение никогда не должно пинговать, а затем что-то делать, если только оно не является какой-либо формой инструмента мониторинга сети, используемой администраторами сети.
Я являюсь сетевым администратором своей домашней сети, и у меня есть три дальних канала Wi-Fi от провайдера, поэтому временами у меня нестабильное обслуживание. Я не пингую Yahoo, когда у меня есть проблемы, и приложения, которые я пишу, тоже нет.
Есть программисты, которые, даже когда это объясняется, все еще считают, что ping-then-do - это хорошо. Я ходил туда-сюда с одним парнем на одном форуме. Он опубликовал код, показывающий почему, и я отправил его код обратно исправленным, он отправлял почту, насколько я помню. Это повторялось два или три раза, и его последний ответ заключался в том, что сообщение об ошибке из-за сбоя ping лучше, чем сообщение об ошибке из-за сбоя отправки почты. Тебе это должно понравиться.
Если у кого-то есть пример того, когда ping-then-do - это хорошая идея, опубликуйте его здесь.
хм, если ваш хакер запускает процесс на удаленной машине, это нехорошо, вам нужно сначала собрать другую информацию. Если вы взламываете важный / безопасный сайт, и они пропускают icmp (маловероятно), тогда у них будут запущены идентификаторы / IPS, и если вы включите эту вещь слишком рано ... tr