Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка Eternet-кадров под Windows.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
AZbest
Сразу скажу, что в деталях программирования под Windows я не разбираюсь, однако суть процессов понимаю. Я (типа) старший проекта. Так вот, мы адресуемся к устройствам сети по MAC-адресу. Т.е. голый Ethernet без TCP/IP и сокетов. А какие средства есть у программиста под Windows (XP), позволяющие обрабатывать (формировать, отсылать и принимать) Ethernet-кадры?
GGGGG
Проще всего, наверное, будет воспользоваться готовой библиотекой Winpcap (www.winpcap.org)
alexander55
Цитата(AZbest @ Apr 14 2008, 10:14) *

Под win, если пользоваться С++Builder 6, есть хорошие компоненты Indy (сервера м клиента).
Эхо-сервер порядка 10 строчек кода и все дела. Клиент не больше.
ASN
alexander55
Как я понял, речь идёт о голом Ethernet. А разве через Indy можно просматривать и отсылать такие Ethernet пакеты?
Кстати, возможно ли в принципе увеличить задержку на повторную отсылку пакета с SYN при установлении соединения по XP? Или 3 секунды заданы как константы?
alexander55
Цитата(ASN @ Apr 14 2008, 12:36) *
Как я понял, речь идёт о голом Ethernet.

Голый - это LAN, а одетый - уже WAN. Так ? biggrin.gif

Цитата(ASN @ Apr 14 2008, 12:36) *
А разве через Indy можно просматривать и отсылать такие Ethernet пакеты?

И в LAN и в WAN.

Цитата(ASN @ Apr 14 2008, 12:36) *
Кстати, возможно ли в принципе увеличить задержку на повторную отсылку пакета с SYN при установлении соединения по XP? Или 3 секунды заданы как константы?

Через любое время можете законектиться. Главное - не создавать сумашедший траффик.
Что такое SYN (я не в курсе). 07.gif
Еще раз прочитал и увидел у Вас про MAC. Понял, что Вы что-то не допонимаете. MAC - это уникальный индентификатор производителя и не что иное. IP адреса - это и есть адрес устройства в сети. MAC используется сервером для проверки корректности используемого IP (чтобы враги не залезли), и больше не для чего больше.
Andrew2000
Цитата(alexander55 @ Apr 14 2008, 13:21) *
Еще раз прочитал и увидел у Вас про MAC. Понял, что Вы что-то не допонимаете. MAC - это уникальный индентификатор производителя и не что иное. IP адреса - это и есть адрес устройства в сети. MAC используется сервером для проверки корректности используемого IP (чтобы враги не залезли), и больше не для чего больше.

Не путайте человека - у Вас тут бред написан... полный.

А по воросу - да - www.winpcap.org и http://www.ethereal.com/
alexander55
Цитата(Andrew2000 @ Apr 14 2008, 18:31) *
Не путайте человека - у Вас тут бред написан... полный.

Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.
Продолжу свой бред или поясню для ясности (как получится).
IP адрес - 32 битный (всего примерно 4 миллиарда адресов). Это немного, учитывая, что некоторые фирмы имеют класс A или B и часть адресов закреплено. Продает IP-адреса некая организация, которая и следит за порядком во всемирной паутине.
MAC - 48 битный . Продаются производителям сетевого оборудования (того, что имеет IP-адрес). Многие производители, исчерпав весь диапазон пошли уже по второму или по третьему кругу (особенно это касается производителей сетевых плат).
Зачем нужны MAC-адреса ?
Ответ такой. Пусть Вы подключились к провайдеру класса B или С. Он имеет фиксированное количество IP-адресов в WAN. Он является шлюзом от WAN к своей сети. Из-за ограничений по количеству используется динамическое выделение IP-адресов. Чтобы индентифицировать оборудование пользователей своей сети на уровне железа используется индентификация по MAC-адресам (кроме имени и паролей). Но часто MAC-адреса вообще не используются, к тому же они перепрошиваются тоже.
Надеюсь, не запутал всех окончательно. biggrin.gif
AZbest
Спасибо, навели меня на верный путь. В общем, pcap - вещь. На его основе пишутся снифферы. Про Indy ещё не знаю, но посмотрю в этом направлении. Еще есть Microsoft'овская технология raw socet. Но, говорят, в целях безопасности Windows её после XP SP2 закрыли заплаткой. Но, как я понял выход есть - библиотека pcap!

А смысл адресации по MAC-адресам такой - наше оборудование должно быть доступно для управления по сети не дожидаясь назначения IP-адреса пользователем или DHCP-сервером (которого может и не быть). И еще - при новом включении устройства оно получит новый IP от сервера, а это не есть good.
alexander55
Цитата(AZbest @ Apr 15 2008, 11:48) *
А смысл адресации по MAC-адресам такой - наше оборудование должно быть доступно для управления по сети не дожидаясь назначения IP-адреса пользователем или DHCP-сервером (которого может и не быть). И еще - при новом включении устройства оно получит новый IP от сервера, а это не есть good.

Если у Вас своя LAN и хватает IP-адресов, то лучше их делать жесткими в пределах той маски, которую Вы используете.
Например, все АСУТП шные объекты делаются только с жесткими IP-адресами.
По поводу портов рекомендую использовать последнюю четверть (0xc000 - 0xfffe). Это рекомендация от *x.
Коль речь зашла про *x, то эхо-сервер, например, в QNX делается простым переопределением стандартных входа и выхода. biggrin.gif
XVR
Цитата(alexander55 @ Apr 15 2008, 09:02) *
Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.


Человеку не нужен TCP/IP стек, и даже голый IP не нужен. Ему нужен голый Ethernet. Для справки - Ethernet это не только TCP/IP, но и еще куча других протоколов, вплоть до IEEE 802.3


Цитата
Продолжу свой бред или поясню для ясности (как получится).
Не надо, мы уже все поняли smile.gif
vvs157
Цитата(alexander55 @ Apr 15 2008, 09:02) *
Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.
Продолжу свой бред или поясню для ясности (как получится)
Помимо TCP/IP в сети Ethernet (даже в рамках системы Windows XP) может прекрасно существать протокол IPX/SPX от фирмы Novel и протокол NetBEUI от фирмы Microsoft, и много чего еще, которые к IP адресам абсолютно никакого отношения не имеют. Без МАС адреса пакеты в сети Ethernet Ходить не могут ибо МАС - это свойство только Ethernet'a. Посмотрите как TCP/IP ложится на модель OSI. Можете провести эксперимент - удалите в Винде TCP/IP и поставьте IPX/SPX - Интернета не будет, а соседнюю машину, на которой тоже должет быть поднят этот протокол вы прекрасно увидите и сможете даже файлы копировать.
alexander55
Я понял - я консерватор. У меня просто уже все застыло, застандартизировалось и даже мысли иные не посещают. biggrin.gif
Если надо сделать вещь саму в себе SMB (она же Samba, она же NETBEUI). Это достаточно быстрый протокол.
PS. Компоненты Indy Вам не подойдут, они под TCP/IP.
vvs157
Цитата(alexander55 @ Apr 15 2008, 13:57) *
Я понял - я консерватор. У меня просто уже все застыло, застандартизировалось и даже мысли иные не посещают. biggrin.gif
Если надо сделать вещь саму в себе SMB (она же Samba, она же NETBEUI). Это достаточно быстрый протокол.
NetBEUI к SMB отношения не имеет. SMB идет поверх TCP/IP. NetBIOS и NetBEUI - это совсем разные вещи. Samba - это Юниксовая реализация микрософтовского протокола SMB. В Виндах Самбы нет так так то, что делает Самба там уже реализовано Дядей Билли
alexander55
Цитата(vvs157 @ Apr 15 2008, 14:36) *

NetBIOS 07.gif . Вроде вообще не упоминали или я опять что-то пропустил.
vvs157
Цитата(alexander55 @ Apr 15 2008, 14:57) *
NetBIOS 07.gif . Вроде вообще не упоминали или я опять что-то пропустил.
В контексте Самбы
http://www.opennet.ru/base/net/samba_wins2.txt.html
Andrew2000
о! вспомнил, как наследник ethereal называется:
www.wireshark.org

з.ы. тем кто не знает что такое Ethernet и т.д. - не читайте в _этой_ ветке сообщения от alexander55.
коротко тут:
www.wildpackets.com/support/compendium/ethernet/frame_ethernet_iee8023
http://ru.wikipedia.org/wiki/Ethernet
http://ru.wikipedia.org/wiki/MAC
alexander55
Цитата(Andrew2000 @ Apr 16 2008, 00:28) *
з.ы. тем кто не знает что такое Ethernet и т.д. - не читайте в _этой_ ветке сообщения от alexander55.

Я не претендую на истину в последней инстанции, это мое видение, которое кстати совпадает с Вашими ссылками (и про 7 и 4 уровневые модели, я тоже в курсе). biggrin.gif
Добавлю только, протокол TCP/IP - это уже стандарт промышленных сетей. Все остальные - от лукавого.
Andrew2000
Цитата(alexander55 @ Apr 16 2008, 08:24) *
... это мое видение, которое кстати совпадает с Вашими ссылками ...

Не совпадает. Вы весь смысл перевернули с ног на голову.
Цитата
Добавлю только, протокол TCP/IP - это уже стандарт промышленных сетей. Все остальные - от лукавого.

Стандарт промышленного езернета - EtherCAT, Powerlink, Profinet.
А TCP/IP в промышленности - это либо от бедности (от лени), либо Modbus (что то же самое).
Ну, или связь с верхним уровнем, т.е. не управление, а мониторинг.
alexander55
Цитата(Andrew2000 @ Apr 17 2008, 21:40) *
Не совпадает. Вы весь смысл перевернули с ног на голову.

Ладно, попробую еще раз выдать очередную порцию бреда.
Есть две модели сети OSI (7 уровневая) и DoD (4 уровня).
OSIк с снизу вверх.
1 - физический уровень (сигнальный)
2 - канальный (уровень физических адресов - MAC-адресов)
3 - сетевой ( преобразования виртульных адресов (IP-адресов) в физические (MAC-адреса)
4 - транспортный (уровень виртуальных адресов с протоколами доставки)
5- сеансовый (сокетный уровень (IP-адрес + порт) - типа аналога open, close, read-write для файлов, но для сокетов)
6 - представления ( структуры передаваемых-принимаемых данных)
7 - уровень приложения пользователя.
У DoDика 1-2 объединены и 5-7 - тоже, что проще для восприятия.
В некоторых моделях частных фирм наоборот уровни еще более детализированы, но это их дела.

Теперь открою Вам страшную тайну. biggrin.gif
В любой сети адреса не должны конфликтовать (это секрет Полишинеля). Ни на канальном, ни на сеансовом.
Исключения состовляют шпионские слушающие (но не передающие) девайсы.

Теперь философский вопрос.
Стоит ли опускать вниз до физических адресов ? Некоторые ходят и ездят по земле, а другие роют землю и там прокладывают тунели. Мотивация такая - там никакого движения (трафик нулевой).
Бред. Это моя консервативная, субъективная точка мнения. У меня это в голове не укладывается.
Бабочки красивые, но живут 1 день.
Извините за лирическое отступление, но как еще популярно объяснить.

PS. Что я перевернул ?
Я понял. Вы, наверное, пытаетесь меня завести. Не дождетесь.

Теперь со многим я мирюсь
Без сожаленья и утраты
Иною кажется мне Русь
Иными кладбища и хаты. (Есенин)
AZbest
Я, как автор темы smile.gif , позволю себе вмешаться и ответить на вопрос, стоит ли опускать вниз до физических адресов.

Мои устройства (модемы с возможностью разветвления) должны работать без предварительной настройки (установки IP-адресов), DHCP-сервера может не быть, да и не хочется превращать свои устройства в администрируемые объекты. Это основное препятствие.

Затем, задачу определение топологии сети решают на серьезном сетевом уровне с помощью маршрутизаторов - опять же в моём случае его может не быть. Да и не определит маршрутизатор порядок расположения устройств в цепочке (первое после второго или наоборот). На MAC-уровне топологию тоже трудно определить, но эту задачу я решаю встроенными в модем средствами.

Серьезный недостаток моего подхода - ПК с программой управления и мониторинга должен располагаться в данной сети, а не "за" маршрутизатором. Что-то должно перевесить...
alexander55
Цитата(AZbest @ Apr 18 2008, 09:59) *

По-моему, Вы уже сами себе ответили.
Тернистый путь выводит всегда на наезжаную дорогу. Если не заблудитесь. smile.gif
ASN
AZbest
Как я понимаю, модемы объединяют две сетки. Ну или несколько сеток.
Тогда как один абонент в одной сетке будет адресовать другого в сетке(которая через модем)?
Тут, imho, надо реализовавать arp и т.п. (то есть стек).
AZbest
Цитата(ASN @ Apr 18 2008, 12:36) *
AZbest
Как я понимаю, модемы объединяют две сетки. Ну или несколько сеток.
Тогда как один абонент в одной сетке будет адресовать другого в сетке(которая через модем)?
Тут, imho, надо реализовавать arp и т.п. (то есть стек).


Модемы пропускают прозрачно трафик, им не предназначенный. Модемы имеют MAC-адрес (и может быть IP-адрес) только для того, чтобы к ним можно было обращаться с целью управления. Ну, вроде пользовательского ADSL-модема или управляемого свитча.
vvs157
Цитата(alexander55 @ Apr 18 2008, 10:10) *
По-моему, Вы уже сами себе ответили.
Тернистый путь выводит всегда на наезжаную дорогу. Если не заблудитесь. smile.gif
Вообще-то скажем сетевые принтеры первоначальную установку по сети делают именно адресуясь по МАС адресу, поэтому подход автора корневого топика не есть хождение по нехоженным тропам.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.