Тут вопрос возник. Все перехватчики сетевых пакетов (ну возьмем ириску) при перехвате выдают raw пакет начиная с MAC адресов отправителя и получателя и т.п. Однако в стандарт 802.3 Ethernet II (Media access control frame structure) входит еще и поле контрольной суммы (чточнее здесь CRC а не сумма), а вот этого поля почему-то ни один снифер не показыает. Т.е. получается драйверу сетевой карточки передается пакет без 4 байтов CRC? Кто нибудь программировал сетевухи через порты ввода вывода. Интерисует сам процесс - как они работают на программно-аппаратном уровне. Вообще интерисует вопрос CRC в данном случае может вооще считается аппаратно сетевой карточкой и ей нужно передать только данные без CRC или где-то в сетевом стеке для этой цели есть код? PS: можно меня послать конечно к IEEE Std 802.3™-2002, но там 1538 страниц, потому если у кого есть инфа по данному поводу пожалуйста поделитесь.
+1 Ищите что то вроде "Аппаратный расчет суммы" или "CRC offload" в настройках драйвера НИК. Справедливо практически для всех совр. карт. Включено дефолтом как правило.
вот исходный код драйвера для Attansic L1 Gigabit Ethernet под Linux >= 2.6.* http://falaleev.at.tut.by/attansic.rar могу если что прокомментировать некоторые вещи
тут еще довольно познавательная статься про архитектуру Ethernet http://book.itep.ru/4/41/eth_4111.htm
нет CRC присутствует нет преамбулы, SFD и EFD драйвер обычно проверяет CRC и передает пакет сетевой подсистеме без него
rei3er Вот это: Отсюда: http://book.itep.ru/4/41/eth_4111.htm - ссылка твоя выше Как это сочетается с Еще в одном источнике читал что нет CRC http://faqs.org.ru/lan/ethernet.htm В конечно итоге - просто для экономии времени - кто-нибудь реверсил пакет до передачи через порты на карточку - так есть или нетути CRC? Как считать CRC впринципе понятно, только вот непонятно делается это аппаратно или драйвером? PS: rei3er зачем адрес почты светить?
очень просто при передаче пакета преамбула, SFD, EFD и CRC добавляются контроллером на аппаратном уровне при получении пакета его CRC и длина записываются контроллером в качестве метаинформации в один приемный буфер, а сам пакет - в другой обычно драйвер не передает метаинформацию сетевой подсистеме поэтому, все, что выше драйвера, видит только 14 байт заголовка + данные этот адрес для всего важный я не свечу
Ra_ Сюда то зачем? - это флуд чистой воды. rei3er Сенкс. Доступно и понятно. Т.е. на CRC до драйвера сетевой карточки мы никак повлиять не можем. А при программировании сетевухи напрямую - ей достаточно передать кадр без преамбул и CRC - они считаются и проверяются аппаратно. По идее можно закрывать топик, если не имеется никаких дополнений.
вообщем, да по крайней мере для тех сетевый карточек, с которыми я имел дело хотя вполне вероятно, что существуют сетевые карточки, которые драйверу и CRC не передают