Перейти к содержанию
    

Как быстро передавать данные через Ethernet

Просто под рукой кросс-кабеля не нашлось :-) Но я его или найду, или сделаю сам.

Вообще-то, современные сетевые карты умеют менять функции каналов приема/передачи автоматически. Так что можете попробовать соединить компьютеры обычным патч-кордом.

 

Ведь, насколько я понял, клиенту MAC-адрес вынь да положь?

MAC-адрес обычно аппаратно прописан в каждой сетевой карте.

 

А как насчет ARP-пакетов? Они ведь останутся?

ARP-пакеты в сети закончатся, как только оба клиента узнают MAC-адрес своего партнера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Вообще-то, современные сетевые карты умеют менять функции каналов приема/передачи автоматически. Так что можете попробовать соединить компьютеры обычным патч-кордом.

У меня плата не "молодая", не поддерживает, пробовал.

 

MAC-адрес обычно аппаратно прописан в каждой сетевой карте.

Да, источника - прописан, но ведь сетевому уровню для Ethernet-фрейма нужен и адрес приемника? Насколько я понял, именно для этого и применяются отдельные запросы.

 

ARP-пакеты в сети закончатся, как только оба клиента узнают MAC-адрес своего партнера.

Они постоянно валят, заразы...

 

А как вообще организовать связь двух изолированных компьютеров? Нет DHCP, нет роутера - вообще никого больше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как вообще организовать связь двух изолированных компьютеров? Нет DHCP, нет роутера - вообще никого больше.

Может, для начала почитать какой-нить букварь по TCP/IP?

 

А то, эти ваши вопросы.. "они постоянно валят, заразы..." :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Может, для начала почитать какой-нить букварь по TCP/IP?

Да читал я... В "букварях" не описываются тонкости взаимодействия интерфейсов. К тому же, я хотел бы использовать UDP протокол. Он намного "легче" TCP. И я совсем не встречал ситуации соединения двух компьютеров без всей остальной тяжеловесной инфраструктуры. Меня как раз и интересует, как по-проще это сделать. Т.е. без Интернета, без всего остального громоздкого и сложного для понимания. Просто компьютер-компьютер и все.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Да, я именно об этом и подумал. В общем-то мне именно это и нужно. Просто под рукой кросс-кабеля не нашлось :-) Но я его или найду, или сделаю сам.

 

А как насчет ARP-пакетов? Они ведь останутся? Ведь, насколько я понял, клиенту MAC-адрес вынь да положь? Спускаться на уровень Ethernet-фреймов или как-то иначе?

Для начала смотрите команды с ничего не значащими именами :) - route и arp.

 

При точка-точка паразитного трафика в канале будет немного - изредка ARP - иногда ICMP это если Вы вдруг не туда что-то слать начнете - в общем - мешать не должно.

 

Успехов! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как насчет ARP-пакетов? Они ведь останутся? Ведь, насколько я понял, клиенту MAC-адрес вынь да положь? Спускаться на уровень Ethernet-фреймов или как-то иначе?

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

 

Они постоянно валят, заразы...

После ARP-ответа такого не будет, реализуйте поддержку ARP!

 

Выше советовали пример от альтера с железным udp_offloader, если его используете, то там ещё должна быть софтварная поддержка минимального IP-стека (ARP, ICMP) на Nios II.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да читал я... В "букварях" не описываются тонкости взаимодействия интерфейсов. К тому же, я хотел бы использовать UDP протокол.

Как уже советовали, используйте для соединения со своим устройством отдельную карту. Запретите на этом интерфейсе всё, кроме IPv4. Если нету (пока) поддержки ARP в дивайсе, то можно руками прописать МАС адрес в таблицу (команда arp). Всё это здорово убавит "шум" в интерфейсе. Ну, и в шарке же можно легко настроить фильтр, чтобы показывал только пакеты от коннекта с вашим дивайсом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Продолжаю продираться через препоны к назначенной цели :-)

 

Сначала столкнулся с проблемой, что при включении моего отдельного сегмента вырубается основная сеть. В смысле, сеть есть, а связи с Интернетом нет. Потом допетрил ("Семен Семеныч!" (С)) и сделал этот отдельный сегмент другой подсетью (основная 192.168.1.1, отдельная - 192.168.147.1(2)). Все стало работать нормально: Кесарю - кесарево, слесарю - слесарево.

 

Спасибо, друзья, за подсказку! Позадавал и там, и там IP<->MAC с помощью команды arp. Запускаю мою пару клиент-сервер. Работает, передает, но все-равно остаются паузы между посылкой данных клиентом и их приемом сервером. Почитал еще раз про winsock и узнал, что данные командой sendto() не передаются, а буферируются системой. То же относится и к recvfrom(). Это убедило меня в необходимости дальнейшего углубления в winsock. Не знаю, поможет ли команда select(), но подозреваю, что должна быть возможность задать немедленную посылку данных. Что-то вроде флага "send immediately".

 

В общем, продолжаю погружение...

 

P.S. Для этих двух Ethernet-карт позапрещал все, кроме TCP/IP. Думал, что можно доустановить протокол UDP/IP, но система сказала: "Давай диск". Отказался...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

гуглите функцию setsockopt и опции сокетов, например SO_SNDBUF, SO_SNDLOWAT, SO_SNDTIMEO и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

гуглите функцию setsockopt и опции сокетов, например SO_SNDBUF, SO_SNDLOWAT, SO_SNDTIMEO и т.д.

Спасибо за подсказку! Мне как раз всякие дополнительные моменты понадобятся, т.к. я приступаю к разработке тестовой пары передатчик-приемник. Тут мне понадобятся всякие прибамбасы с ивентами и т.п.

 

А паузы я поборол! :-) Спасибо за помощь! "Собака порылась" в очень простой вещи: в NetBIOS-се. Я эту штуку на карте отдельного сегмента сети вырубил, а на основной карте она осталась. И получалось, что после приема пакета от клиента Wireshark показывал еще 5-6 пакетов NBNS от основной карты, и только потом отправляемый обратно мой пакет.

 

P.S. Еще небольшая непонятка. Основной интерфейс (192.168.1.50) каждые ~35 секунд посылает широковещательный пакет. Это выглядит так:

 

No.     Time           Source                Destination           Protocol Length Info
    111 896.507917000  192.168.1.50          255.255.255.255       UDP      82     Source port: 1025  Destination port: 1947
    112 930.686786000  192.168.1.50          255.255.255.255       UDP      82     Source port: 1025  Destination port: 1947
    113 965.080060000  192.168.1.50          255.255.255.255       UDP      82     Source port: 1025  Destination port: 1947

Если я что-то передаю по тестовому сегменту, то широковещательные пакеты все равно вклиниваются:

 

No.     Time           Source                Destination           Protocol Length Info
    266 1275.393877000 192.168.147.2         192.168.147.1         UDP      142    Source port: 1666  Destination port: 1666    <- От клиента
    267 1275.394245000 192.168.147.1         192.168.147.2         UDP      142    Source port: 1666  Destination port: 1666    -> Эхо клиенту
    268 1275.489097000 192.168.1.50          255.255.255.255       UDP      82     Source port: 1025  Destination port: 1947
    269 1275.719379000 192.168.147.2         192.168.147.1         UDP      142    Source port: 1666  Destination port: 1666
    270 1275.719754000 192.168.147.1         192.168.147.2         UDP      142    Source port: 1666  Destination port: 1666

Погуглил насчет порта UDP/1025 - какой-то WIN-RPC (Windows RPC) (к чему он тут?), про порт UDP/1947 - вообще что-то невразумительное ("1947/TCP HASP SRM Работа и с сетевым, и с локальным ключами HASP происходит через локальный демон или службу по TCP/1947", но я-то вижу пакет UDP).

 

Как это понимать? Наплевать и забыть?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю продираться через препоны к назначенной цели :-)

Парень. Главная препона в том, что о поставленной задаче ты не знаешь абсолютно ничего, а она довольно велика...

В твоей теме сидят уже 2 или 3 человека, которые имеют готовые решения, и терпеливо терпят всю твою пионерскую чушь, в надежде что ты все-таки поймешь в итоге, что нужно правильное делать.

 

Тебе уже даже намекнули, что надо на самом деле сделать: банка варенья и коробка печенья.

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

 

При этом ты все равно будешь главным, не сорвешь все сроки, прослывешь очень большим техническим экспертом, и опытным руководителем, и получишь потом целую гору шоколада от руководства.

 

Альтернатива в твоем состоянии - потратить на все ето дело год-другой, и завалить дело целиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...