Как определить количество блоков в пакете sctp?

Протокол SCTP имеет следующий формат пакетов: - Номер порта источника - Номер порта назначения - Тег подтверждения - Контрольная сумма - N чанков

Я пытаюсь написать синтаксический анализатор протокола, но я не знаю, как определить количество фрагментов в пакете SCTP. Спасибо!

1 ответ

Вам нужно разобрать заголовки чанков. Каждый из них содержит поле длиной 16 бит после полей 8-битного типа и 8-битных флагов. Помните, что все числовые значения в SCTP имеют сетевой порядок байтов (big-endian).

Поля чанков описаны в разделе 3.2 RFC 4960:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Chunk Type  | Chunk  Flags  |        Chunk Length           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                          Chunk Value                          /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Куски начинаются после описания полей общего заголовка SCTP.

Прочитав поле Длина фрагмента, вы можете пропустить его полезную нагрузку и найти начало следующего фрагмента. Повторяйте это до тех пор, пока не достигнете конца IP-пакета.

Длина фрагмента включает четыре байта, которые составляют поля типа, флага и длины.

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