Не могу понять опцию uTorrent Transfer Protocol «расширение» в заголовке - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь понять, как структурирован заголовок uTP и как он обрабатывает трафик, перегрузку и все такое.

При просмотре документации здесь я не мог полностью обернутьмоя голова вокруг того, что работала часть расширения заголовка.Вот заголовок:

0       4       8               16              24              32
+-------+-------+---------------+---------------+---------------+
| type  |  ver  | extension     | connection_id                 |
+-------+-------+---------------+---------------+---------------+
| timestamp_microseconds                                        |
+---------------+---------------+---------------+---------------+
| timestamp_difference_microseconds                             |
+---------------+---------------+---------------+---------------+
| wnd_size                                                      |
+---------------+---------------+---------------+---------------+
| seq_nr                        | ack_nr                        |
+---------------+---------------+---------------+---------------+

И эта часть говорит о поле 'extension':

extension

The type of the first extension in a linked list of extension headers. 0 means no extension.

There is currently one extension:

    Selective acks

Extensions are linked, just like TCP options. If the extension field is non-zero, immediately following the uTP header are two bytes:

0               8               16
+---------------+---------------+
| extension     | len           |
+---------------+---------------+

where extension specifies the type of the next extension in the linked list, 0 terminates the list. And len specifies the number of bytes of this extension. Unknown extensions can be skipped by simply advancing len bytes.

Как связанные списки попадают во все это?Это (для меня) подразумевает дальнейшие доступные расширения?

1 Ответ

0 голосов
/ 29 ноября 2018

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

Это связанный список, потому что заголовок N-го расширения ссылается на N + 1-е расширение.

Это общий шаблонвставлять переменное количество расширений между заголовком пакета с фиксированной разметкой и основной полезной нагрузкой.Например, IPv6 и TCP используют очень похожие механизмы.

...