Продолжительность заголовка Ethernet обязательно 14?

Фрагмент кода отсюда:

void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
    ....
    /* retireve the position of the ip header */
    ih = (ip_header *) (pkt_data +
        14); //length of ethernet header
    ....

Но в этом изображении не говорится, что это обязательно 14:

alt text
(источник: lewis в www.dcs.gla.ac.uk)

Как я должен сделать это правильно?

5
задан Glorfindel 25 July 2019 в 19:09
поделиться

3 ответа

В 802.3 адреса отправителя и получателя являются 48-битными MAC-адресами. 6 + 6 + 2 = 14

6
ответ дан 13 December 2019 в 22:03
поделиться

Заголовок Ethernet имеет фиксированную ширину, однако протоколы расширения, такие как 802.1q для vlan / qos, являются общими и эффективно расширяют заголовок L2.

1
ответ дан 13 December 2019 в 22:03
поделиться

В Википедии есть хорошее изображение фрейма

WIKI

IPv4 / v6 - это протоколы третьего уровня.

0
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

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