Почему в аргументе -q команды traceroute есть ограничение в 10?
Аргумент -q traceroute устанавливает количество зондов, которые будут использоваться.
В системах Linux кажется, что это может быть только до 10. Если используется более высокое значение, traceroute возвращает.
не более 10 проб на хоп
На коробке соляриса такой же параметр доступен и там он принимает больше 10.
Интересно, почему этот предел есть. Это просто произвольный выбор?
2 ответа
Вы не можете ожидать, что любая программа в любой системе генерирует идентичные выходные данные. Каждый волен адаптировать исходный код.
POSIX определяет интерфейс прикладного программирования (API), а также оболочки командной строки и служебные интерфейсы для совместимости программного обеспечения с вариантами Unix и других операционных систем.
Это просто определяется в исходном коде инструмента, среди других ограничений:
#define MAX_HOPS 255
#define MAX_PROBES 10
#define MAX_GATEWAYS_4 8
#define MAX_GATEWAYS_6 127
#define DEF_HOPS 30
#define DEF_SIM_PROBES 16 /* including several hops */
#define DEF_NUM_PROBES 3
#define DEF_WAIT_SECS 5.0
#define DEF_SEND_SECS 0
#define DEF_DATA_LEN 40 /* all but IP header... */
#define MAX_PACKET_LEN 65000
Там нет комментария, указывающего, почему, так что я думаю, "произвольный выбор" это.
Вероятно, разработчики думали, что более 10 на прыжок не будут полезны и, вероятно, не будут представлять собой вменяемый выбор.
Вы имеете дело с высокой потерей пакетов или дрожанием? Даже 10 пакетов должно быть более чем достаточно, чтобы установить, есть ли большая потеря пакетов или дрожание.