Какой порт назначения UDP (ы) (ы) UDP делает MTR -U?

Ваша реализация tar, вероятно, GNU, определяет, что файл, переданный в качестве параметра, сжат.

Наиболее используемые в наши дни реализации tar, GNU tar и busybox, смотрят на первые байты файла, так называемое магическое число, чтобы определить, сжат ли файл и какой алгоритм сжатия использовать.

Реализации tar, найденные в коммерческих Unix, которые основаны на оригинальном коде AT&T, не поддерживают флаг -z в первую очередь. Заметным исключением является Solaris 11 tar, где это расширение было добавлено, включая возможность определения формата файла.

1
29.06.2018, 23:49
1 ответ

TL;DR По умолчанию он начинается с 33000 и увеличивается.

Вы можете наблюдать это, если одновременно запускаете трассировку сети:

tcpdump -i any -n host 8.8.8.8 &
mtr -u --report -c 1 8.8.8.8
21:21:50.777482 IP [redacted].31507 > 8.8.8.8.33000: UDP, length 36
21:21:50.877579 IP [redacted].31507 > 8.8.8.8.33001: UDP, length 36
21:21:50.977694 IP [redacted].31507 > 8.8.8.8.33002: UDP, length 36
21:21:51.077850 IP [redacted].31507 > 8.8.8.8.33003: UDP, length 36
21:21:51.177966 IP [redacted].31507 > 8.8.8.8.33004: UDP, length 36
21:21:51.278081 IP [redacted].31507 > 8.8.8.8.33005: UDP, length 36
21:21:51.378198 IP [redacted].31507 > 8.8.8.8.33006: UDP, length 36
21:21:51.478341 IP [redacted].31507 > 8.8.8.8.33007: UDP, length 36
21:21:51.578498 IP [redacted].31507 > 8.8.8.8.33008: UDP, length 36
21:21:51.678646 IP [redacted].31507 > 8.8.8.8.33009: UDP, length 36
21:21:51.778801 IP [redacted].31507 > 8.8.8.8.33010: UDP, length 36
21:21:51.878949 IP [redacted].31507 > 8.8.8.8.33011: UDP, length 36
21:21:51.979117 IP [redacted].31507 > 8.8.8.8.33012: UDP, length 36

Вот почему в коде.

Исходный код находится по адресуhttps://github.com/traviscross/mtr

Если вы проанализируете его, вы увидите различное поведение между TCP и UDP при анализе аргументов командной строки:

    case 'u':
        if (ctl->mtrtype != IPPROTO_ICMP) {
            error(EXIT_FAILURE, 0,
                  "-u, -T and -S are mutually exclusive");
        }
        ctl->mtrtype = IPPROTO_UDP;
        break;
    case 'T':
        if (ctl->mtrtype != IPPROTO_ICMP) {
            error(EXIT_FAILURE, 0,
                  "-u, -T and -S are mutually exclusive");
        }
        if (!ctl->remoteport) {
            ctl->remoteport = 80;
        }
        ctl->mtrtype = IPPROTO_TCP;

Таким образом, для UDP по умолчанию не задан порт, тогда как для TCP по умолчанию используется порт 80.

mtr.hесть

#define MinPort 1024
#define MaxPort 65535

но это заблуждение, правда происходит в ui/net.c.

  1. net_send_queryзвонкиnew_sequence
  2. и результаты передаются среди прочего вsend_probe_command
  3. new_sequenceв этом файле естьstatic int next_sequence = MinSequence;

Теперь, после множества прыжков, вы попадаете в set_udp_ports, который имеет:

    if (param->dest_port) {
...
    } else {
        udp->dstport = htons(sequence);

Короче говоря, «порядковый» номер на самом деле является портом назначения UDP.

И если мы вернемся к ui/net.c, мы увидим, что он определяется как:

#define MinSequence 33000
#define MaxSequence 65536
3
27.01.2020, 23:23

Теги

Похожие вопросы