Вычисление длины заголовка TCP? - PullRequest
0 голосов
/ 27 ноября 2018

Кто-нибудь может подсказать мне следующее?

Я пытаюсь найти ответ, как показано в первом вопросе в блоге malwarejake [.] Blogspot.com/2015/05/packet-analysis.-practice-part-3.html.

В соответствии с найденным образцом пакета

Что такое встроенный протокол, порт назначения и объем данных, не считая заголовки протокола?

    0x0000:  4500 004c 1986 4000 4006 9cba c0a8 0165
    0x0010:  c0a8 01b6 0015 bf3c dad0 5039 2a8c 25be
    0x0020:  8018 0072 06ec 0000 0101 080a 008a 70ac

Ответ на вопросВыше вопрос такой же, как и выше.

    Embedded protocol: TCP
    Total packet length:  76
    IP Header length:  20
    Protocol header length: 32
    Data length: 24
    Dest Port: 0xbf3c (48956)

Мне удалось получить все остальные ответы, за исключением Длина заголовка протокола и Длина данных .

Разве длина заголовка TCP обычно не составляет 20 байтов с расширением до 40 байтов?Но как 32 байта получены из вышеуказанного пакета?Я не понимаю

Спасибо!

1 Ответ

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

Вот заголовок TCP непосредственно из RFC :

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Значения 0015 и bf3c являются портами.Значения dad0 5039 и 2a8c 25be являются номерами последовательности / подтверждения.

Теперь рассмотрим следующие 4 бита.Те по смещению 0x20.Значение байта равно 0x80, что означает, что самые верхние 4 бита равны 1000.Они соответствуют полю «смещение данных»:

Смещение данных: 4 бита

Количество 32-битных слов в заголовке TCP.Это указывает, где данные начинаются.Заголовок TCP (даже один с опциями) представляет собой целое число длиной 32 бита.

Итак, 1000 означает, что заголовок состоит из 8 x 32-разрядных слов, что означает 8 x 4 байта.= 32 байта.

...