Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Логика сетевого соединения
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
3.14
Нужно передать из сетевого девайса А команду (несколько байт) в другой девайс В, так же иногда надо передавать в реальном времени голос.
Делаю на AT91SAM7X256 под FreeRTOS+uIP.
Насколько я себе представляю алгоритм передачи команды (TCP)
1) Устанавливаю соединение - простой вызов функции соединения с адресом и портом удаленной системы. Насколько я понимаю, под установлением соединения подразумевается выяснение MAC адреса удаленной стороны с помощью ARP (все делает сам стек). Может еще чего должно происходить?
2) Шлю команду и жду подтверждение (причем анализировать должен сам) ...
3) Разрываю соединение

Передача звука (UDP) аналогична передаче команд за исключением того что не надо анализировать подтверждение приема.

На данный момент у меня никак не выходит UDP соединение, если с TCP все как то более менее, то при вызове функции установления соединения UDP даже ARP пакеты не бегают (слушаю сеть через EthReal)
sff
Цитата(3.14 @ Nov 10 2006, 20:56) *
Насколько я себе представляю алгоритм передачи команды (TCP)
Насколько я понимаю, под установлением соединения подразумевается выяснение MAC адреса удаленной стороны с помощью ARP (все делает сам стек). Может еще чего должно происходить?

Я бы так не сказал, да и создатели TCP/IP, наверное тоже...
Под соединение TCP подразумевается, что инициатор посылает пакет с флагом SYN указывая номер порта, и ISN (intial sequence number) использующийся далее при всех передачах. Сервер отвечает пакетом с SYN (и своим ISN) и подтверждая полученный пакет с SYN выставляя ещё флаг ACK и указывая на номер ISN+1. Клмент подтверждает подтверждает полученныу SYN от сервера, выставляя в пакете ответа ACK с ISN сервера +1. После этого соединение считается установленным..

А ARP это протокол другого уровня, остносящейся к передачи данных.. Его может и не быть если линк PPP к примеру smile.gif

Вообще прос структуру TCP/IP есть книга W. Richard Stevens TCP/IP Illustrated Volume 1. (Протоколы TCP/IP )
exSSerge
Цитата(3.14 @ Nov 10 2006, 23:56) *
На данный момент у меня никак не выходит UDP соединение, если с TCP все как то более менее, то при вызове функции установления соединения UDP даже ARP пакеты не бегают (слушаю сеть через EthReal)

Так ведь UDP никакого процесса соединения не предусматривает - просто посылается пакет с данными и всё, авось дойдёт.
Другое дело - всякая подготовительная работа, которая, вероятно нужна для выделения буферов, инициализации каких-нибудь структур и тому подобное. Но никаких пакетов при этом отправляться не должно. Вот будут данные для передачи - тогда другое дело.

PS. Я смотрел (давно уже) исходники версии 0.6, так там никакого UDP не было вовсе. Наверное с тех пор уже добавили...
3.14
Спасибо за разъяснения, сейчас в uIP имеется поддержка UDP.
Моя загвоздка была в следующем, при приеме UDP пакета анализировался мой открытый локальный порт и порт источника, когда инициализируется новое UDP соединение новой структуре соединения выдается первый свободный порт. В итоге хост шлет мне на 1234 порт (а у меня автоматом открыт 1025), так же откуда мне знать порт источника ...
В общем не понятно почему были такие условия при приеме, пришлось править.
sff
Цитата(3.14 @ Nov 13 2006, 13:07) *
Спасибо за разъяснения, сейчас в uIP имеется поддержка UDP.
Моя загвоздка была в следующем, при приеме UDP пакета анализировался мой открытый локальный порт и порт источника, когда инициализируется новое UDP соединение новой структуре соединения выдается первый свободный порт. В итоге хост шлет мне на 1234 порт (а у меня автоматом открыт 1025), так же откуда мне знать порт источника ...
В общем не понятно почему были такие условия при приеме, пришлось править.

Вообще в TCP / UDP есть 2 связывания на уровне сокетов, неявное локальное связывание, при этом система сама выбирает локальный порт при установление соединение (отсылки дейтаграммы) и явное, где пользователь сам указывает локальный порт.

может примерчик покажете?
3.14
спасибо за заботу, уже не актуально ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.