IP/TCP стэк на Миландр 1986ВЕ91Т

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
dukvbg
Родился
Сообщения: 2
Зарегистрирован: Чт июн 29, 2017 09:03:00

IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение dukvbg »

Доброго времени суток!
Пытаюсь реализовать простейшее клиент-серверное приложение работающее через IP/TCP, на базе контроллера 1986ВЕ91Т.

Контроллер подключен к ПК, на ПК запускается программа, которая стучится по адресу и пытается установить канал по TCP с моим устройством, отправляет пакет с флагом SYN - см. рис. 1 (раскадровка с WireShark). Моё устройство отвечает пакетом с флагами SYN,ACK - см. рис. 2. (на данном скрине приведен пример с не правильным подсчетом контрольной суммы, но поверьте на слово, в исправленном варианте всё ровно то же самое)

Рисунок 1.
Изображение

Рисунок 2.
Изображение


Суть: Проблема в том, что после отправки пакета (SYN,ACK) не происходит ровным счётом НИЧЕГО. WireShark при этом говорит о том, что пакет принят и пакет составлен корректно. И программа (в данном случае играющая роль клиента) в ответ на "мой" пакет так же никак не реагирует (см.рис.3).

Рисунок 3.
Изображение


Для примера на рисунке 4 приведена раскадровка пакетов передаваемых между 2мя ПК, где на одном ПК прога играет роль клиента, а на другом роль сервера. Как можно заметить, после установки связи начинается благополучная передачи n-го числа байтов данных и успешное завершение сеанса связи.

Рисунок 4.
Изображение


Пытался отправить реплику пакета работающего варианта (т.е. создал точную копию пакета (SYN,ACK) который был
отправлен в ситуации с подключением двух компов и после которого всё сработало) - результат нулевой.

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

ЗЫ: Код приводить не вижу смысла, ибо гораздо нагляднее на раскадровке пакетов (но по просьбе трудящихся могу и выложить)
Аватара пользователя
vikonik
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб дек 13, 2014 16:32:13

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение vikonik »

Возникла такая же проблема. Может кто сталкивался?
Аватара пользователя
lizard66
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Чт май 14, 2015 16:58:00
Откуда: Kharkiv

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение lizard66 »

Доброго времени суток!
Пытаюсь реализовать простейшее клиент-серверное приложение работающее через IP/TCP, на базе контроллера 1986ВЕ91Т.

Контроллер подключен к ПК, на ПК запускается программа, которая стучится по адресу и пытается установить канал по TCP с моим устройством, отправляет пакет с флагом SYN - см. рис. 1 (раскадровка с WireShark). Моё устройство отвечает пакетом с флагами SYN,ACK - см. рис. 2. (на данном скрине приведен пример с не правильным подсчетом контрольной суммы, но поверьте на слово, в исправленном варианте всё ровно то же самое)

Попробуйте старший октет MAC адреса сервера сделать нулевым. В старшем байте адреса есть служебные биты, которые отдельно обрабатываются системой и могут вызвать неожиданные эффекты.

UPD: Упс. Не посмотрел на дату :(
Аватара пользователя
vikonik
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб дек 13, 2014 16:32:13

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение vikonik »

Да, я знаю об этом. Не помогает. Такое чувство, будто клиент не понимает что ему отвечает сервер и шлёт повторный запрос. Буду пробовать запустить клиента на МК и в отладчиком посмотрю что ему не нравится.
Аватара пользователя
lizard66
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Чт май 14, 2015 16:58:00
Откуда: Kharkiv

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение lizard66 »

Да, я знаю об этом. Не помогает. Такое чувство, будто клиент не понимает что ему отвечает сервер и шлёт повторный запрос. Буду пробовать запустить клиента на МК и в отладчиком посмотрю что ему не нравится.

Сервер на МК (WEB-ка), после SYN/ACK - все пучком. Физика - Mega8/ENC28J60 ...
Вложения
Shark_for_radiokot.jpg
(112.19 КБ) 231 скачивание
Аватара пользователя
vikonik
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб дек 13, 2014 16:32:13

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение vikonik »

lizard66, поделись пожалуйста рабочим проектом клиента, исходниками
dukvbg
Родился
Сообщения: 2
Зарегистрирован: Чт июн 29, 2017 09:03:00

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение dukvbg »

Про мой случай, забыл совсем описать суть.

КОРОТКО:
Не проверил настройки Wireshark. Нужно включить функцию проверки контрольной суммы TCP/IP. У меня эта сумма считалась не корректно, а Wireshark не сигнализировал об этом.


Конкретно в моем случае сыграла злую шутку настройкаWireshark. При работе с этой прогой оказалось, что у меня была отключена функция проверки контрольной суммы TCP/IP. Все пакеты которые шли, программа по определению считала корректными. В итоге спустя какое то время и пару сотен тысяч погибших нервных клеток я увидел, что у меня снята эта галочка, я ее обратно установил и произошло чудо - абсолютно все пакеты отправленные мной были с ошибкой. Я в своей программе не правильно считал контрольную сумму и поэтому конечное устройство просто игнорировало мои пакеты. Всё пофиксив - всё заработало.
Уверенность в том, что мои пакеты были правильно составлены опиралась сугубо на отсутствие ошибок в Wireshark, что в ситуации, когда Wireshark был не правильно настроен в итоге и сыграло злую шутку.
Аватара пользователя
vikonik
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб дек 13, 2014 16:32:13

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение vikonik »

Спасибо.

Так и есть. Вся беда о невнимательности. Конкретно у меня была проблема, не учел тип пакета при расчете контрольной суммы.

Долго искал как включить проверку на КС в wireshark
Edit->Preferences->Protocols, далее выбираем TCP и ставим галочку Validate the TCP checksum if possible
Андрей_Саров
Родился
Сообщения: 1
Зарегистрирован: Сб ноя 22, 2025 20:34:11

Re: IP/TCP стэк на Миландр 1986ВЕ91Т

Сообщение Андрей_Саров »

Понимаю, что времени уже прошло много, но все же попытаю счастья. Не могли бы вы выложить исходники?
Ответить

Вернуться в «ARM»