При проверке эхо-запросов ping кажется, что утилиты / библиотеки часто только проверяют контрольную сумму пакета и фактически не подтверждают, что отправленная полезная нагрузка совпадает с возвращенной полезной нагрузкой. Например, анализатор ICMP Wireshark проверяет только неправильные контрольные суммы, и это все, что Ruby net-ruby также проверяет.
Я отлаживаю проблему низкоуровневого сетевого драйвера, и мне нужно подтвердить, что данные не обрабатываются при получении, поэтому я хочу протестировать свой драйвер с помощью низкоуровневого запроса, такого как ICMP Echo . Однако моих существующих инструментов Ping недостаточно, потому что я боюсь, что, хотя контрольная сумма может совпадать с данными, содержащимися в ответе эха, данные в ответе эха не совпадают с данными в запросе эха. Поэтому, несмотря на то, что у них обоих есть действительные контрольные суммы (в коде контрольной суммы нет ошибок), в части приема данных есть ошибка, так что мой драйвер не получает то, что, по мнению хоста, он отправляет.
Как я могу проверить полезную нагрузку эха, чтобы убедиться, что она такая же, как и отправленная мной? Если есть отдельная утилита «paranoid ping», которую я мог бы использовать, это тоже хорошо - мне просто нужно иметь возможность изменять длину и частоту пинга, так как я вижу проблему только при затоплении сети.
Я бы предпочел его в форме библиотеки / фрагмента Ruby, но приемлемо любое языковое или автономное приложение, если я могу запустить его в Windows.
Спасибо!