Как читать и интерпретировать форматы пакетов в RFC (запрос комментариев)?

374
nd510

Часто, когда я читаю документацию «Запрос для комментариев», я всегда вижу раздел формата пакета для протокола, описанного ниже. У меня вопрос: что представляют цифры и различные символы (+ - |)?

 Краткое описание формата данных RADIUS приведено ниже. Поля передается слева направо.  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 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + | Код | Идентификатор Длина | + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + | | | Аутентификатор | | | | | + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + | Атрибуты ... + - + - + - + - + - + - + - + - + - + - + - + - + - 

Спасибо

0

1 ответ на вопрос

3
Ron Maupin

Числа являются номерами битов, начиная с самого старшего бита. Может показаться нелогичным, что бит 0является наиболее значимым битом, но это первый передаваемый бит. Порядок байтов в сети (и битов) имеет порядок с прямым порядком байтов (наиболее значимым первым).

Другие символы должны показывать отдельные биты, своего рода неполная сетка.

Есть RFC, которые объясняют это. Например, RFC 1700, присвоенные номера :

Обозначения данных

В документации интернет-протоколов существует соглашение о том, чтобы выражать числа в десятичном виде и отображать данные в «старшем порядке» [ COHEN ]. То есть поля описываются слева направо, с наиболее значимым октетом слева и наименее значимым октетом справа.

Порядок передачи заголовка и данных, описанных в этом документе, разрешен до уровня октетов. Всякий раз, когда на диаграмме показана группа октетов, порядок передачи этих октетов является нормальным порядком, в котором они читаются на английском языке. Например, на следующей диаграмме октеты передаются в порядке их нумерации.

 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 1 | 2 | 3 | 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 5 | 6 | 7 | 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 9 | 10 | 11 | 12 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

Порядок передачи байтов

Всякий раз, когда октет представляет числовую величину, самый левый бит на диаграмме является старшим или старшим битом. То есть бит с меткой 0 является наиболее значимым битом. Например, следующая диаграмма представляет значение 170 (десятичное).

 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1 0 1 0 1 0 1 0| +-+-+-+-+-+-+-+-+ 

Значение битов

Аналогичным образом, всякий раз, когда многооктетное поле представляет числовую величину, самый левый бит всего поля является старшим значащим битом. Когда передается многооктетное количество, самый старший октет передается первым.

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