реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Логика сетевого соединения
3.14
сообщение Nov 10 2006, 17:56
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



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

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

На данный момент у меня никак не выходит UDP соединение, если с TCP все как то более менее, то при вызове функции установления соединения UDP даже ARP пакеты не бегают (слушаю сеть через EthReal)


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
sff
сообщение Nov 11 2006, 18:20
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Цитата(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 )
Go to the top of the page
 
+Quote Post
exSSerge
сообщение Nov 12 2006, 17:30
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 136
Регистрация: 18-08-06
Из: Novosibirsk
Пользователь №: 19 655



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

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

PS. Я смотрел (давно уже) исходники версии 0.6, так там никакого UDP не было вовсе. Наверное с тех пор уже добавили...
Go to the top of the page
 
+Quote Post
3.14
сообщение Nov 13 2006, 10:07
Сообщение #4


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Спасибо за разъяснения, сейчас в uIP имеется поддержка UDP.
Моя загвоздка была в следующем, при приеме UDP пакета анализировался мой открытый локальный порт и порт источника, когда инициализируется новое UDP соединение новой структуре соединения выдается первый свободный порт. В итоге хост шлет мне на 1234 порт (а у меня автоматом открыт 1025), так же откуда мне знать порт источника ...
В общем не понятно почему были такие условия при приеме, пришлось править.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
sff
сообщение Nov 13 2006, 20:09
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



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

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

может примерчик покажете?
Go to the top of the page
 
+Quote Post
3.14
сообщение Nov 14 2006, 20:41
Сообщение #6


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



спасибо за заботу, уже не актуально ...


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 09:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016