Почему в аргументе -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 пакетов должно быть более чем достаточно, чтобы установить, есть ли большая потеря пакетов или дрожание.

Другие вопросы по тегам