Jump to content
    

Обработка Eternet-кадров под Windows.

Сразу скажу, что в деталях программирования под Windows я не разбираюсь, однако суть процессов понимаю. Я (типа) старший проекта. Так вот, мы адресуемся к устройствам сети по MAC-адресу. Т.е. голый Ethernet без TCP/IP и сокетов. А какие средства есть у программиста под Windows (XP), позволяющие обрабатывать (формировать, отсылать и принимать) Ethernet-кадры?

Share this post


Link to post
Share on other sites

Проще всего, наверное, будет воспользоваться готовой библиотекой Winpcap (www.winpcap.org)

Share this post


Link to post
Share on other sites

Под win, если пользоваться С++Builder 6, есть хорошие компоненты Indy (сервера м клиента).

Эхо-сервер порядка 10 строчек кода и все дела. Клиент не больше.

Share this post


Link to post
Share on other sites

alexander55

Как я понял, речь идёт о голом Ethernet. А разве через Indy можно просматривать и отсылать такие Ethernet пакеты?

Кстати, возможно ли в принципе увеличить задержку на повторную отсылку пакета с SYN при установлении соединения по XP? Или 3 секунды заданы как константы?

Share this post


Link to post
Share on other sites

Как я понял, речь идёт о голом Ethernet.

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

 

А разве через Indy можно просматривать и отсылать такие Ethernet пакеты?

И в LAN и в WAN.

 

Кстати, возможно ли в принципе увеличить задержку на повторную отсылку пакета с SYN при установлении соединения по XP? Или 3 секунды заданы как константы?

Через любое время можете законектиться. Главное - не создавать сумашедший траффик.

Что такое SYN (я не в курсе). :07:

Еще раз прочитал и увидел у Вас про MAC. Понял, что Вы что-то не допонимаете. MAC - это уникальный индентификатор производителя и не что иное. IP адреса - это и есть адрес устройства в сети. MAC используется сервером для проверки корректности используемого IP (чтобы враги не залезли), и больше не для чего больше.

Share this post


Link to post
Share on other sites

Еще раз прочитал и увидел у Вас про MAC. Понял, что Вы что-то не допонимаете. MAC - это уникальный индентификатор производителя и не что иное. IP адреса - это и есть адрес устройства в сети. MAC используется сервером для проверки корректности используемого IP (чтобы враги не залезли), и больше не для чего больше.

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

 

А по воросу - да - www.winpcap.org и http://www.ethereal.com/

Share this post


Link to post
Share on other sites

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

Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.

Продолжу свой бред или поясню для ясности (как получится).

IP адрес - 32 битный (всего примерно 4 миллиарда адресов). Это немного, учитывая, что некоторые фирмы имеют класс A или B и часть адресов закреплено. Продает IP-адреса некая организация, которая и следит за порядком во всемирной паутине.

MAC - 48 битный . Продаются производителям сетевого оборудования (того, что имеет IP-адрес). Многие производители, исчерпав весь диапазон пошли уже по второму или по третьему кругу (особенно это касается производителей сетевых плат).

Зачем нужны MAC-адреса ?

Ответ такой. Пусть Вы подключились к провайдеру класса B или С. Он имеет фиксированное количество IP-адресов в WAN. Он является шлюзом от WAN к своей сети. Из-за ограничений по количеству используется динамическое выделение IP-адресов. Чтобы индентифицировать оборудование пользователей своей сети на уровне железа используется индентификация по MAC-адресам (кроме имени и паролей). Но часто MAC-адреса вообще не используются, к тому же они перепрошиваются тоже.

Надеюсь, не запутал всех окончательно. :biggrin:

Share this post


Link to post
Share on other sites

Спасибо, навели меня на верный путь. В общем, pcap - вещь. На его основе пишутся снифферы. Про Indy ещё не знаю, но посмотрю в этом направлении. Еще есть Microsoft'овская технология raw socet. Но, говорят, в целях безопасности Windows её после XP SP2 закрыли заплаткой. Но, как я понял выход есть - библиотека pcap!

 

А смысл адресации по MAC-адресам такой - наше оборудование должно быть доступно для управления по сети не дожидаясь назначения IP-адреса пользователем или DHCP-сервером (которого может и не быть). И еще - при новом включении устройства оно получит новый IP от сервера, а это не есть good.

Share this post


Link to post
Share on other sites

А смысл адресации по MAC-адресам такой - наше оборудование должно быть доступно для управления по сети не дожидаясь назначения IP-адреса пользователем или DHCP-сервером (которого может и не быть). И еще - при новом включении устройства оно получит новый IP от сервера, а это не есть good.

Если у Вас своя LAN и хватает IP-адресов, то лучше их делать жесткими в пределах той маски, которую Вы используете.

Например, все АСУТП шные объекты делаются только с жесткими IP-адресами.

По поводу портов рекомендую использовать последнюю четверть (0xc000 - 0xfffe). Это рекомендация от *x.

Коль речь зашла про *x, то эхо-сервер, например, в QNX делается простым переопределением стандартных входа и выхода. :biggrin:

Share this post


Link to post
Share on other sites

Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.

 

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

 

 

Продолжу свой бред или поясню для ясности (как получится).
Не надо, мы уже все поняли :)

Share this post


Link to post
Share on other sites

Если так пишете, то хотя бы объясняйте, с чем Вы не согласны.

Продолжу свой бред или поясню для ясности (как получится)

Помимо TCP/IP в сети Ethernet (даже в рамках системы Windows XP) может прекрасно существать протокол IPX/SPX от фирмы Novel и протокол NetBEUI от фирмы Microsoft, и много чего еще, которые к IP адресам абсолютно никакого отношения не имеют. Без МАС адреса пакеты в сети Ethernet Ходить не могут ибо МАС - это свойство только Ethernet'a. Посмотрите как TCP/IP ложится на модель OSI. Можете провести эксперимент - удалите в Винде TCP/IP и поставьте IPX/SPX - Интернета не будет, а соседнюю машину, на которой тоже должет быть поднят этот протокол вы прекрасно увидите и сможете даже файлы копировать.

Share this post


Link to post
Share on other sites

Я понял - я консерватор. У меня просто уже все застыло, застандартизировалось и даже мысли иные не посещают. :biggrin:

Если надо сделать вещь саму в себе SMB (она же Samba, она же NETBEUI). Это достаточно быстрый протокол.

PS. Компоненты Indy Вам не подойдут, они под TCP/IP.

Share this post


Link to post
Share on other sites

Я понял - я консерватор. У меня просто уже все застыло, застандартизировалось и даже мысли иные не посещают. :biggrin:

Если надо сделать вещь саму в себе SMB (она же Samba, она же NETBEUI). Это достаточно быстрый протокол.

NetBEUI к SMB отношения не имеет. SMB идет поверх TCP/IP. NetBIOS и NetBEUI - это совсем разные вещи. Samba - это Юниксовая реализация микрософтовского протокола SMB. В Виндах Самбы нет так так то, что делает Самба там уже реализовано Дядей Билли

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...