<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99771</guid>
        <pubDate>Fri, 23 May 2003 12:54:55 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99771</link>
        <description><![CDATA[Andy_user: Спасибо за информацию.<br>Буду осваивать BPF.]]></description>
        <author>Andy_user</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99770</guid>
        <pubDate>Fri, 23 May 2003 08:32:57 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99770</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Andy_user, 21.05.03, 16:58:21</span><div class='quote '>Обычно использую в Linux (2.4.3-20mdk):<br>packet_socket = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))<br><br>По поводу BPF:<br>если не ошибаюсь, BPF позволяет только получит данные канального уровня, минуя стек TCP/IP. Отправить пакет нельзя (ИМХО).<br></div></div><br>Засомневался ... и специально проверил:<br>- BPF позволяет как принимать, так и отправлять пакеты канального уровня. Выглядит это как-то примерно так:<br>open( &quot;/dev/bf0&quot;, ... ); // там любопытно: bf0, bf1 ... - первый свободный<br>ioctl(...); // несколько раз - устанавливабтся параметры, фильтр...<br>read()/write(); // - всё, поехали читать/писать...<br><br>- запись в канальный уровень через BPF используется очень редко: UDP/TCP пишутся через IP-сокет, ICMP/IGMP - через RAW ... почти ничего не остаётся... Поэтому запись в BPF менее известна и освещена. Но - напр. демон RARP-разрешителя во многих OS не сделан в ядре (см. ниже), а как пользовательский процесс пишет в BPF. Запись в BPF - незаменимая штука, когда нужно отправлять &quot;хитрые&quot; UDP/TCP сегменты - если вы помните, там такая штука: UDP/TCP пакеты не доходят (!) до RAW-сокета - они известны ядру, оно их принимает, и не передаёт RAW...<br><br>- почему я и засомневался, что есть такая известная библиотека libcap - интерфейс к ... чуть не сказал BPF - это &quot;&quot;обобщённый&quot; интерфейс, который использует &quot;то что есть&quot;: BPF, пакетный &nbsp;сокет Linux, что-то ещё из TLI SVR4....<br><br>- BPF - считается много эффективнее, чем пакетный сокет Linux, и тем-более всякая самопальная фича, типа &quot;сниферов&quot;:<br>1. BPF много лет вылизан, стандартный интерфейс, всё время совершенствуется;<br>2. выполняется в режиме ядра с двойной (обменной) буферизацией и намного реже требует переключения в контекст пользовательского процесса и копирования буферов;<br>3. в отличие от пакетного сокета - выполняет фильтрацию в режиме ядра, и сыпет на пользовательский уровень только то, что запросили, а не &quot;всё&quot;, а это на порядки меньше переключений контекстов!<br><br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99769</guid>
        <pubDate>Wed, 21 May 2003 12:58:21 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99769</link>
        <description><![CDATA[Andy_user: Обычно использую в Linux (2.4.3-20mdk):<br>packet_socket = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))<br><br>По поводу BPF:<br>если не ошибаюсь, BPF позволяет только получит данные канального уровня, минуя стек TCP/IP. Отправить пакет нельзя (ИМХО).<br><br>]]></description>
        <author>Andy_user</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99768</guid>
        <pubDate>Mon, 19 May 2003 07:05:16 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99768</link>
        <description><![CDATA[Olej: Кстати, то, что я писал:<br><br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>fd = socket( AF_INET, SOCK_PACKET, htons( ETH_P_ALL ) );</div></div><br><br>- это специфика Linux, и никого более. А вот в хэдерах стандартной BSD реализации стека TCP/IP определено ещё такое адресное семейство как AF_LINK - т.е. судя по всему - это MAC-уровень, и они его сами в реализации для этого используют. Нельзя ли этой штукой попользоваться с пользовательского уровня?<br><br>И ещё одна штука, общеупотребимая (портированная) - это BPF (Berkley Packet Filter). Обычно, его знают в связи с снифером tcpdump, но это гораздо большее - он имеет описанный пользовательский интерфейс, вполне достаточный для манипулирования с сетью минуя стек TCP/IP (или параллельно - потому он и &quot;фильтр&quot;), в том числе и на MAC-уровне, что мы и видим по tcpdump.<br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99767</guid>
        <pubDate>Sun, 18 May 2003 02:59:01 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99767</link>
        <description><![CDATA[Balamut: сырцы для Ethernet&amp;TCP/IP &nbsp;смотреть на<br>http://www.opentcp.org]]></description>
        <author>Balamut</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99766</guid>
        <pubDate>Wed, 07 May 2003 10:39:21 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99766</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>ViSko, 05.05.03, 17:02:40</span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">У Стивенса есть... &#60;br&#62;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>до этого я ещё не дочитал љ:)</div></div><br><br>fd = socket( AF_INET, SOCK_PACKET, htons( ETH_P_ALL ) );<br><br>- странно мне только (но в Linux многое &quot;по-быстренькому&quot;) - почему сокет для MAC-уровня должен определяться в семейсиве адресов IP?<br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99765</guid>
        <pubDate>Mon, 05 May 2003 13:02:40 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99765</link>
        <description><![CDATA[Oksiv: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">У Стивенса есть... &#60;br&#62;</div></ol></div></div></div></div><br>до этого я ещё не дочитал &nbsp;:)]]></description>
        <author>Oksiv</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99764</guid>
        <pubDate>Wed, 30 Apr 2003 10:43:39 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99764</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>ViSko, 30.04.03, 14:01:08</span><div class='quote '>RAW сокеты есть и в Windows 2000.<br>Сокет MAC уровня звучит интересно :) в Linux сокет уровня IP если ты имел ввиду не одно и тоже.</div></div><br><br>Нет, я имел в виду именно сокет MAC-уровня, т.е. сокет Ethernet-кадра (или другой среды...), именно AF-PACKET в Linux его и определяет. То-же, с чем оперирует перехват пакетов в BPF (Berkley Packet Filter) &amp; tcpdump.<br>У Стивенса есть...<br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99763</guid>
        <pubDate>Wed, 30 Apr 2003 10:01:08 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99763</link>
        <description><![CDATA[Oksiv: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Olej, 30.04.03, 12:18:04</span><div class='quote '><br><br>RAW-сокет - это <strong class='tag-b'>уже</strong> сокет IP, но ... незаполненный. Т.е. для его использования уже нужен (полноценный!) транспортный уровень IP!<br><br>Сокет MAC-уровня есть пока реализованный только в Linux - тип SOCK_PACKET (так, кажется). Может там, в кодах смотреть надо.<br><br>Если уж совсем не ймётся туда лезть - смотрите книгу У.Стивенса, вот здесь об ней:<br>http://qnx.org.ru/forum/viewtopic.php?topic=1350&amp;forum=12&amp;10<br>- книга только что вышла в издательстве &quot;Питер&quot; - 1080 стр. детального текста с кодами по использованию техники сокетов. Ничего другого подобного нет!<br></div></div><br>RAW сокеты есть и в Windows 2000.<br>Сокет MAC уровня звучит интересно :) в Linux сокет уровня IP если ты имел ввиду не одно и тоже.<br><br><br><br>]]></description>
        <author>Oksiv</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99762</guid>
        <pubDate>Wed, 30 Apr 2003 08:18:04 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99762</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>klotho, 28.04.03, 13:13:34</span><div class='quote '>Я написал драйвер RTL8139, мне нужно теперь передавать пакеты из Windows в мои вычислители. А можно ли под Win98 выдавать &quot;сырые&quot; пакеты на уровне MAC-адресов?<br>Я почитал Windows-SDK, там про RAW-Socket что-то невразумительное написано...</div></div><br><br>RAW-сокет - это <strong class='tag-b'>уже</strong> сокет IP, но ... незаполненный. Т.е. для его использования уже нужен (полноценный!) транспортный уровень IP!<br><br>Сокет MAC-уровня есть пока реализованный только в Linux - тип SOCK_PACKET (так, кажется). Может там, в кодах смотреть надо.<br><br>Если уж совсем не ймётся туда лезть - смотрите книгу У.Стивенса, вот здесь об ней:<br>http://qnx.org.ru/forum/viewtopic.php?topic=1350&amp;forum=12&amp;10<br>- книга только что вышла в издательстве &quot;Питер&quot; - 1080 стр. детального текста с кодами по использованию техники сокетов. Ничего другого подобного нет!<br><br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99761</guid>
        <pubDate>Tue, 29 Apr 2003 11:24:47 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99761</link>
        <description><![CDATA[Oksiv: <strong class='tag-b'>2klotho</strong> - могу сказать одно, когда я писал драйвер USB устройства + USB host <br>controllera под DOS то лучше чем исходники ядра Linux быть не может, там и смотри всё что тебе надо особенно по сетям.<br><br>P.S почитал про MULTEX, интересно, а драйвер для USB хоста не думали написать, в принципе могу поучаствовать?<br>]]></description>
        <author>Oksiv</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99760</guid>
        <pubDate>Mon, 28 Apr 2003 09:13:34 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99760</link>
        <description><![CDATA[klotho: Я написал драйвер RTL8139, мне нужно теперь передавать пакеты из Windows в мои вычислители. А можно ли под Win98 выдавать &quot;сырые&quot; пакеты на уровне MAC-адресов?<br>Собственно, большего мне и не надо...<br>Я почитал Windows-SDK, там про RAW-Socket что-то невразумительное написано...]]></description>
        <author>klotho</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99759</guid>
        <pubDate>Wed, 23 Apr 2003 12:06:24 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99759</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>klotho, 23.04.03, 15:50:08</span><div class='quote '>А где посмотреть структуру MAC-заголовка?</div></div> <br><br>MAC пакет - для вашей платы - это Ethernet кадр.<br>Смотреть всё нужно в RFC (MAC, IP, ICMP/IGMP, UDP/TCP, ARP/RARP...) - номера я не помню, но это и несложно: поисковиком ищем справочники по RFC, есть хорошие русскоязычные, где-то в Новосибирске... Только RFC! - это основополагающие документы, всё остальное - их перепевки...<br><br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я просто с сетями возился до сих пор только на уровне сокетов в Delphi...</div></div><br><br>А первое с чего нужно начать - уровень абстракции сокетов, особенно Delphi - забыть: это всё уже использование надстроек, которые только предстоит построить.<br><br>P.S. А если уже и вправду - невмоготу ... я бы сделал так:<br>1. поставить небольшую &quot;эталонную&quot; OS, лучше из UNIX, я бы лично взял QNX 6.2.<br>2. установить в нём BPF + libcap - Берклиевский пакетный фильтр.<br>3. запустить над ним сетевой снифер tcpdump.<br><br>Вот теперь можно с tcpdump:<br>1. смотреть детально структуру всех пакетов: MAC, ARP, IP-UDP-TCP, .... NETBEUI и др.<br>2. видеть структуру пакетов &quot;мусора&quot;, который отсылается из новой OS в процессе доводки и отладки.<br><br><br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99758</guid>
        <pubDate>Wed, 23 Apr 2003 11:50:08 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99758</link>
        <description><![CDATA[klotho: Спасибо за ответ! Это, действительно, RTL8139, но все не так уж страшно...<br>После того, как я написал драйверы для звука чипсетов i815 и VIA, да навернул на них MP3-декодер, это уже меня не пугает. <br>А где посмотреть структуру MAC-заголовка? Я просто с сетями возился до сих пор только на уровне сокетов в Delphi...]]></description>
        <author>klotho</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99757</guid>
        <pubDate>Wed, 23 Apr 2003 11:41:16 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99757</link>
        <description><![CDATA[Olej: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>klotho, 23.04.03, 15:03:59</span><div class='quote '>Кто-нибудь, помогите! ::) </div></div> <br>Тут никто не поможет, это - к психиатру... :-(<br><br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Нужно обмениваться по сети компьютерам, которые работают под самодельной ОС (www.multex.nm.ru)<br>Ну, нашел я описание REALTEK - адаптера, получил доступ к его регистрам, а как организовывать пакеты и вообще, как сеть то работает с ними ??? Подскажите, где найти какую-нибудь документацию об этом. У меня ведь даже NETBIOS-a нет, значит все протоколы нужно вручную наворачивать. </div></div><br><br>Это уже начинаются настоящие &quot;наступания на грабли&quot; ... когда говорят: &quot;не лепите самопалки OS - не дело это!&quot;... Всё далеко не так просто, и только начинается (вам ещё IPC предстоит!!! :-(). Что предстоит сделать с сетью:<br><br>1. Прописать стек TCP/IP в полном соответствии с RFC (в Linux, помнится передача TCP - 8000 стр. кода, а приём - 23000, кажется - это когда уже транспорт IP сделан). Почему TCP/IP (там выше фраза про NETBEUI...)? Потому, сто TCP/IP postfactum стандарт общеупотребимый, а NETBEUI etc. - это частная фирменная херня никому, кроме MS не нужная. Т.е. п.1 - прописать &quot;транспортный уровень&quot; 7-уровневой модели OSI.<br><br>2. Для <strong class='tag-b'>каждого</strong> типа сетевой карты - написать драйвер, т.е. реализацию MAC-уровня для каждого типа железа (канальный уровень OSI). Это - вниз...<br><br>3. А вверх ... Для минимально полноценной OS:<br>- ppp и инкапсуляция через сериальные каналы;<br>- всю технику маршрутизации и разрешения имён: DNS, arp - rarp ....<br>- весь прикладной уровень: telnet, ssl/ssh, ftp, http ..... даже перечислять скучно.<br><br>... и вот только после всего этого ... можно подумать об том, чтоб с этой OS начинать выползать в сетевое окружение...<br><br>&quot;Я скорблю вместе с вами&quot; (с).<br><br>P.S. В качестве бонуса: для попыток обмена MAC-уровня нужно начинать со стандарта NE-2000 совместимых Ethernet карт - с этого все начинают - он масово реализован и достаточно описан. Кстати, выше сказано - REALTEC карта... это кто? &quot;Имя им легион&quot; (с) - если RTL8029 - это и есть NE-2000, RTL8139 ... всё гораздо хуже ...<br><br><br><br><br><br>]]></description>
        <author>Olej</author>
        <category>Сетевые Технологии</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99756</guid>
        <pubDate>Wed, 23 Apr 2003 11:03:59 +0000</pubDate>
        <title>Ethernet на самом низком уровне</title>
        <link>https://forum.sources.ru/index.php?showtopic=10831&amp;view=findpost&amp;p=99756</link>
        <description><![CDATA[klotho: Кто-нибудь, помогите! ::)<br>Нужно обмениваться по сети компьютерам, которые работают под самодельной ОС (www.multex.nm.ru)<br>Ну, нашел я описание REALTEK - адаптера, получил доступ к его регистрам, а как организовывать пакеты и вообще, как сеть то работает с ними ??? Подскажите, где найти какую-нибудь документацию об этом. У меня ведь даже NETBIOS-a нет, значит все протоколы нужно вручную наворачивать. <br>Буду благодарен за любую информацию.]]></description>
        <author>klotho</author>
        <category>Сетевые Технологии</category>
      </item>
	
      </channel>
      </rss>
	