![]() |
|
Модераторы: xvr |
![]()
|
|
| konshyn |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Доброго вечера.
Есть несколько вопросов, на которые я пока что не смог найти ответ. Есть сетевой интерфейс. У него есть свой mac-адрес, но отсутствует ip-адрес (это обязательное условие). Карточка подключена кабелем напрямую к другой карточке (к другому компу). Как можно отправить свои созданные пакеты с этого интерфейса, просто отправить в никуда, к примеру широковещательный(вообще желательно широковещательный, т.е. dest mac-адрес FF:FF:FF:FF:FF:FF). И как можно принимать пакеты с такого же интерфеса (без ip-адреса). Вот то, что я пытался сделать (вкратце):
дальше формировал пакет(ethernet-frame). вот такой он получился (по байтам в 16 с/с): FF FF FF FF FF FF 64 66 B3 01 80 DD 08 00 45 00 00 20 00 00 00 00 FF 11 05 74 C0 A8 01 84 AD C2 46 6A 13 56 13 56 00 0C 5A F7 54 65 73 74 FF FF FF FF FF FF - destination mac-адрес 64 66 B3 01 80 DD - source mac-адрес 08 00 - означает, что в eth-фрейм вложен ip пакет. 45 - первая цифра - версия ip-протокола, вторая цифра - размер ip-заголовка в байтах. 00 - то, что не имеет значение в данном случае (тип службы и что-то еще) 00 20 - размер ip-пакета (без eth-заголовка) в байтах, вместе с ip-заголовком. 0x20 = 32 байта. 20 байт заголовок ip, 8 байт заголовок udp, 4 байта - данные. 00 00 - идентификатор пакета 00 00 - флаги/смещение FF - время жизни 11 - номер вложенного протокола, в данном случае - UDP 05 74 - контрольная сумма ip-заголовка C0 A8 01 84 - source ip-адрес (192.168.1.132) AD C2 46 6A - dest ip-адрес (173.194.70.106) 13 56 - порт отправителя 13 56 - порт получателя 00 0C - длина датаграммы 5A F7 - контрольная сумма udp 54 65 73 74 - собственно данные - слово "T e s t" (без пробелов) заполняю структуру
perror выводит ошибку: sendto() failed: Network is down И еще раз напишу, а то к концу прочтения можно забыть, что у меня не получается: Есть сетевой интерфейс. У него есть свой mac-адрес, но отсутствует ip-адрес (это обязательное условие). Карточка подключена кабелем напрямую к другой карточке (к другому компу). Как можно отправить свои созданные пакеты с этого интерфейса, просто отправить в никуда, к примеру широковещательный(вообще желательно широковещательный, т.е. dest mac-адрес FF:FF:FF:FF:FF:FF). И как можно принимать пакеты с такого же интерфеса (без ip-адреса). Если кто-то знает или есть догадки, как это можно сделать, поделитесь, пожалуйста. P.S. Если светофор, который описывает побайтово пакет, напрягает кого-то, напишите - исправлю. Спасибо -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
||||
|
|||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
А что говорит на этот интэрфейс ip link ?
|
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Да что там, собственно. Чтобы отправлять пакеты через AF_PACKET, SOCK_RAW -- не требуется ip-адрес, но интэрфейс должэн быть UP.
|
|||
|
||||
| konshyn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Он как раз говорил о том, что state DOWN
Вы правы, сработало. Спасибо UPD: Но теперь другая проблема. Wireshark видит, что пакет отправляется. А на другой машине, wireshark не видит этот пакет. UPD2: Все видит. Это я в своих интерфейсах запутался. Утро:( tzirechnoy, Спасибо Это сообщение отредактировал(а) konshyn - 12.2.2014, 10:08 -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |