Ethernet-пакеты

Тема в разделе "WASM.NETWORKS", создана пользователем blueboar, 20 авг 2009.

  1. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Разбираю логи TCPDUMP и столкнулся вот с каким вопросом:

    Вначале у каждого пакета идет Ethernet-заголовок - 6+6 байт MAC адресов и 2 байта - тип пакета. А где размер?!!

    Если IP - все логично и понятно - размер берем из заголовка IP. Если другой протокол то в принципе тоже можно прочитать его спецификацию и поглядеть. А если не IP? Вообще свой тип пакетов какой-нибудь?

    То есть получается, что размер Ethernet пакета нельзя узнать, не посмотрев пакет, который в нем "инкапсулирован"?!
     
  2. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    mtu - размер фрейма канального уровня ~ 1500 байт.
    неважно какой объём данных передаётся - нарезаться будет всегда на фреймы по размеру mtu
     
  3. mansurv

    mansurv New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2009
    Сообщения:
    38
    вроде бы min=60 - max=1514 байт,
    поравьте если не так.
     
  4. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Это может "по проводам" так передается. А анализатор трафика вида tcpdump - он же не пишет в дамп каждый пакет по 1514 байт - пишет столько, сколько есть.

    А как он определяет, сколько есть? Только анализируя вложенные данные?
     
  5. loginrl_103

    loginrl_103 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2008
    Сообщения:
    271
    есть такая вещь как (де)фрагментация.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Нет размера. Только маки и протокол. А зачем он вам?

    Ну, когда минипорт получает пакет, он получает и размер тоже. И передает это дело дальше в ндис. (в случае виндоуса, в никсах не разбирался, но могу с уверенностью сказать, что там так же).
    подробностей аппаратуры, к сожалению, не знаю, но очевидно, что размер фрейма получается аппаратно
     
  7. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    эзернет еще и нескольких стандартов бывает, и размер заголовка фрейма еще узнать нужно (как это все считается это в гугл, рфц и иже с ними)
    Если известно что среда эзернет, то на пользовательском уровне (NDIS) на размер длины пакета будет указывать длина инкапсулированного фрейма протокола сетевого уровня (или вообще размер данных в буфферах пакета), а на уровне драйвера карты на это укажет обрамление фрагмента, эзернет пакет в том виде который виден на уровне ндис, уже очищен от лишней информации, такой как байты синхронизации, метки начала и конца данных, контрольная сумма. Эти данные вобщем-то есть не только на физ уровне сетевых карт, а вообще любых устройств, более менее сложных устройств. Можно погуглить связь физического и канального уровней и все станет ясно.
     
  8. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Мне нужно следующее - у меня есть лог TCPDUMPа. Ну или WINDUMPа. Там стандартный Ethernet-в нем IP - в нем TCP - в нем HTTP. В лучшем случае. Или другие протоколы. Как определить размер Ethernet пакета, чтобы в случае, если мы не знаем протокола, в нем используемого, его можно было бы просто пропустить. Ведь поля размер то нет :dntknw:
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Что значит не знаем. У тебя что-то другое нежели ip? И разве в дампе нет размера ethernet фрейма?
     
  10. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    В большинстве своем все возможные протоколы инкапсулированные в эзернет известны, но если уж протокол точно не известен, то в общем случае никак, нужна более полная информация
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Все эти сниферы отслеживают ethernet фреймы и их размер лежит в самом дампе. В чём проблема у ТС, не понятно.
     
  12. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    судя по первому посту, разговор о Ethernet II
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    ohne
    По 8 посту, можно подумать, что ему нужно распарсить дамп. А там размер фрейма есть.
     
  14. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Итак, спасибо за ответы. Действительно, в дампе как оказалось размеры есть. Всем отвечавшим спасибо.

    Теперь еще один вопрос:

    - Во всех спецификациях написано, что типы Ethernet-пакетов выбраны >=0800, а если меньше, то это не тип, а размер (для совместимости с предыдущими версиями видимо)
    - У меня во всех пакетах типы >=0800, так что все в соответствии с нормой
    - Но! Иногда встречается тип 8100, который, как написано, в интернете, используется для разграничения VLANов друг от друга. VLANы у нас дейстивтельно имеются, так что все как бы в норме.
    - Опять же Но! Тогда после типа (8100) идет еще два байта - они меня (пока) не интересуют. А потом снова Ethernet-тип, но уже "нормальный". Так вот - там 0032. Или 0050. Вполне может быть, что это и есть размер, раз меньше 0800. Но тогда где брать тип? Что это за пакет - IP/ARP или что-то еще?
     
  15. mansurv

    mansurv New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2009
    Сообщения:
    38
    blueboar
    Может и зря, что не интересуют, т.к. первый из этих двух байтов должен быть тип протокола -если 0x45 это IPv4, если 0x60 - IPv6, и в зависимости от этого парсить далее.
     
  16. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Судя по http://en.wikipedia.org/wiki/IEEE_802.1Q, в этих двух байтах только

    3 бита - приоритет
    1 бит - флаг
    и 12 бит - индентификатор VLANа

    А потом два бита - тип/размер как обычно? И я не знаю как определить тип, если там размер
     
  17. mansurv

    mansurv New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2009
    Сообщения:
    38
    интересно было бы посмотреть HEX дамп такого пакета
     
  18. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    http://sushka-ekb.ru/wasm/towasm.jpg
     
  19. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Хотя вот сейчас скачал IEEE 802.1Q-2005. Там написано, что если в начале

    AA-AA-03, то это RFC_1042, SNAP_8021H или SNAP_Other. Что это все такое и зачем оно надо вообще не понятно :). Зато хотя бы понятно куда теперь копать.
     
  20. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    В общем удалось выяснить, что это "The 802.2 Sub-Network Access Protocol (SNAP)" (смотреть тут http://stason.org/TULARC/networking/lans-ethernet/4-1-What-are-the-different-Ethernet-frame-formats-Etherne.html)

    OUI вендора в моем случае 00-00-0C, что по списку есть CISCO Systems. Действительно, так.

    Только вот дальше чего-то не сходится. Ну да ладно. Будем копать дальше. Сам себе задал вопрос, сам себе отвечаю XD