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

 
 
6 страниц V  « < 2 3 4 5 6 >  
Reply to this topicStart new topic
> Склеиваются UDP пакеты
smalcom
сообщение Nov 30 2016, 21:42
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
"Стек модема" не тождественно "протокол UDP". И точка.

улыбнуло. это как: производители USB-флешек не обязаны соблюдать спецификации USB.

Цитата
Можно я сам решу интересно или нет?

да решайте. всё уже написано, по несколько раз писать одно и тоже не интересно.

ТС был 28.11, ставлю 50 г вискаса, что затуп в алгоритмах ТСа )

Цитата
То есть вроде как IP заголовок и пакета. Хотя, эти китайцы такие китайцы. Вполне возможно, это сложности перевода.

это когда чукча не читатель, а писатель, то ничего не понятно. А если открыть AT_Command_Manual и сложить буквы в слова, то сразу становится понятно, что делает эта команда.

Цитата
То есть вроде как IP заголовок и пакета. Хотя, эти китайцы такие китайцы. Вполне возможно, это сложности перевода.

это когда чукча не читатель, а писатель, то ничего не понятно. А если открыть AT_Command_Manual и сложить буквы в слова, то сразу становится понятно, что делает эта команда.
Go to the top of the page
 
+Quote Post
gerber
сообщение Nov 30 2016, 22:16
Сообщение #47


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Stream в TCP несет смысл тот, что пакеты будут доставлены ровно в том порядке, в каком ушли, то есть последовательность (поток, stream) сохранится, и это гарантирует протокол TCP.
Datagram в UDP несет смысл тот, что пакеты будут отправлены ровно в том порядке и так, как их нарезал (на датаграммы) отправитель. В каком порядке они придут получателю, и придут ли вообще - протокол не гарантирует. Поэтому требовать от него, чтобы он ещё и отдавал их раздельно - перебор.
А если у получателя нет даже буфера такого размера, чтобы принять весь пакет? Что, нельзя уже из UDP-сокета 4 байта прочитать? Только весь пакет?
А если можно 4 байта - что будет с недочитанным пакетом при следующем чтении recv()?


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
smalcom
сообщение Nov 30 2016, 22:23
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
На практике также следует учитывать, что если длина IPv4 пакета с UDP будет превышать MTU (для Ethernet по умолчанию 1500 байт), то отправка такого пакета может вызвать его фрагментацию, что может привести к тому, что он вообще не сможет быть доставлен, если промежуточные маршрутизаторы или конечный хост не будут поддерживать фрагментированные IP пакеты. Также в RFC 791 указывается минимальная длина IP пакета 576 байт, которую должны поддерживать все участники, и рекомендуется отправлять IP пакеты большего размера только в том случае если вы уверены, что принимающая сторона может принять пакеты такого размера. Следовательно, чтобы избежать фрагментации UDP пакетов (и возможной их потери), размер данных в UDP не должен превышать: MTU — (Max IP Header Size) — (UDP Header Size) = 1500 — 60 — 8 = 1432 байт. Для того чтобы быть уверенным, что пакет будет принят любым хостом, размер данных в UDP не должен превышать: (минимальная длина IP пакета) — (Max IP Header Size) — (UDP Header Size) = 576 — 60 — 8 = 508 байт.

Т.е. если
Цитата
А если у получателя нет даже буфера такого размера, чтобы принять весь пакет?

то это означает, что UDP не поддерживается.
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 30 2016, 23:23
Сообщение #49


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470



Цитата(smalcom @ Dec 1 2016, 01:23) *
то это означает, что UDP не поддерживается.

В контексте модема (я надеюсь мы все таки обсуждаем здесь именно модемы?) если "получатель" прочитать как "юзер", то это значит что юзеру и не нужны все данные из пакета одним махом. Он их замечательно вычитает теми порциями которые пролезут в буфер. А вот сам стек будет поддерживать и правильный прием, и возможно что и внутрений буфер для данных будет куда больше 1432.
И UDP поддерживается, и TCP, и у юзера хитреца эдакого буфер маленький!

Цитата(smalcom @ Dec 1 2016, 00:42) *
улыбнуло. это как: производители USB-флешек не обязаны соблюдать спецификации USB.

Согласно вашей логике правильнее так:
а) поддерживается спецификация USB в достаточном для функционирования объеме
б) на уровне файловой системы у вас нет совершенно никакого доступа к его пакетам и процессам.
Вывод - USB не поддерживается, ведь нет низкоуровневого доступа.

Цитата(smalcom @ Dec 1 2016, 00:42) *
да решайте. всё уже написано, по несколько раз писать одно и тоже не интересно.

Я все таки настаиваю. Тычек в название доки и раздел где это описано. Не в том плане что мне лень, могу ведь промахнуться

Цитата(smalcom @ Dec 1 2016, 00:42) *
ТС был 28.11, ставлю 50 г вискаса, что затуп в алгоритмах ТСа )

Затуп у него 99% в протоколе - рассчет на то что пакеты будут приходить по отдельности и данные будут вылезать такими же порциями, где порция = данные строго одного пакета. Сидит и перекраивает. Или свой стек поднимает.
Go to the top of the page
 
+Quote Post
smalcom
сообщение Dec 1 2016, 00:00
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
Затуп у него 99% в протоколе

хотите научить - учите. поучать не надо. был конкретный вопрос и очень важный,

Цитата
Я все таки настаиваю.

вы даже не видите того, что не увидели. не то, что неинтересно, а нудно и расстраивает. если интересно - читайте ветку по новой, конспектируйте.
Go to the top of the page
 
+Quote Post
butthead2
сообщение Dec 1 2016, 01:17
Сообщение #51


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470



Цитата(smalcom @ Dec 1 2016, 03:00) *
хотите научить - учите. поучать не надо. был конкретный вопрос и очень важный,

ТС ответ получил, неоднократно и от разных участников и под разным ракурсом. В том числе как от проблемы избавиться. Дальше тут обсуждать нечего.
Считать поучениями или чем то другим это ваше право.

Цитата(smalcom @ Dec 1 2016, 00:42) *
вы даже не видите того, что не увидели.

Интересная логическая конструкция, я в замешательстве.
Я вижу редкие вкрапления толковых постов по теме + три страницы обсасывания особенностей протокола UDP.
Знакомое слово "UDP", понеслась! Кривая реализация стека, ату его ату!

Цитата(smalcom @ Dec 1 2016, 00:42) *
не то, что неинтересно, а нудно и расстраивает. если интересно - читайте ветку по новой, конспектируйте.

Понятно, ответа нет. Вы и вопрос скорее всего не читали, к ветке он не относится.

Go to the top of the page
 
+Quote Post
smalcom
сообщение Dec 1 2016, 01:21
Сообщение #52


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
Так и не понял из-за чего сыр-бор развели. С UDP я никгда не работал

спец
Go to the top of the page
 
+Quote Post
Daniil
сообщение Dec 1 2016, 03:27
Сообщение #53


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

Группа: Свой
Сообщений: 82
Регистрация: 3-09-04
Из: Russia, Novosibirsk
Пользователь №: 590



Цитата
У него аппаратное управление потоком и какая-то программулька на ПК

"Программулька" не на ПК, с модемом работает микроконтроллер, но не думаю что это что-то меняет.

Цитата
Может он RTS/CTS'ом не умеет пользоваться, может CIPRXGET вызывает раз в час. Т.е. доказательств отсутствия ошибки ТСа нет. Развели балаган. Книжки читайте, да хоть вики.

RTS/CTS'ом пользоваться умею, пробовал временно отключать, ситуация та же.
Принятый пакет ловлю по URC, кроме того идет постоянный вызов CIPRXGET с небольшим (снижал до 1сек) интервалом (на случай если вдруг что пропустил). Помимо всего прочего, я смотрел напрямую данные с модема на ПК (пока он общается с контроллером), URC реально не приходит. Логи пока предоставить не могу, по техническим причинам.

Цитата
Затуп у него 99% в протоколе - рассчет на то что пакеты будут приходить по отдельности и данные будут вылезать такими же порциями, где порция = данные строго одного пакета. Сидит и перекраивает. Или свой стек поднимает.

Тогда затупы в протоколах почти у всех, кто использует любые протоколы поверх UDP через встроенный стек модема.

2 smalcom
Я правильно понимаю, что вы пытаетесь сказать что проблема у меня, а модем работает как положено, выдавая все принятые данные по UDP одним потоком, как в TCP?
Go to the top of the page
 
+Quote Post
Alechek
сообщение Dec 1 2016, 04:43
Сообщение #54


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(smalcom @ Dec 1 2016, 02:42) *
это когда чукча не читатель, а писатель, то ничего не понятно. А если открыть AT_Command_Manual и сложить буквы в слова, то сразу становится понятно, что делает эта команда.

Вот тут попрошу без оскорблений. Мне наср@ать что делает эта команда. Но из названия следует, что модем при использовании этой команды все-таки работает с пакетами. И ее описание дальнейшее этому не противоречит.

Daniil, настойки модема скажите. А то тут клавиатуру скоро все сломают smile3046.gif и в рукопашную перейдут smile3009.gif !
Достаточно команды AT+CIPSCONT? после всех инициализаций.
Go to the top of the page
 
+Quote Post
smalcom
сообщение Dec 1 2016, 11:17
Сообщение #55


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
Я правильно понимаю, что вы пытаетесь сказать что проблема у меня, а модем работает как положено, выдавая все принятые данные по UDP одним потоком, как в TCP?

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

ведь для
Цитата
идет постоянный вызов CIPRXGET

тоже надо настраивать модем. А как вы его настраиваете неизвестно - нет журнала.

--------
Цитата
Мне наср@ать что делает эта команда.

ну, а в дискуссии надо участвовать без дефекации. и это ваше недержание реальная проблема, судя по вашим проблемам с модемом в соседник ветках.
Go to the top of the page
 
+Quote Post
Daniil
сообщение Dec 1 2016, 12:43
Сообщение #56


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

Группа: Свой
Сообщений: 82
Регистрация: 3-09-04
Из: Russia, Novosibirsk
Пользователь №: 590



2 Alechek
Код
AT+CIPSCONT?
+CIPSCONT: 1
+CIPCSGP: 1
Gprs Config APN: internet.mts.ru
Gprs Config UserId: mts
Gprs Config Password: mts
+CIPHEAD: 0
+CIPSHOWTP: 0
+CIPSRIP: 0
+CIPATS: 0,0
+CIPSPRT: 1,0
+CIPQSEND: 0
+CIPMODE: 0
+CIPCCFG: 5,2,1024,1,0,1460,50
+CIPMUX: 1
+CIPDPDP: 1,10,3
+CIPRXGET: 1
+CIPRDTIMER: 2000,3500


Цитата
тоже надо настраивать модем. А как вы его настраиваете неизвестно - нет журнала

В чем там настройка? Автоматчиеский / ручной режим приема, другого я не вижу (я про CIPRXGET).
Журнал модема мне пока недоступен, т.к. модем физически далеко. Доступна только отладочная консоль.
Есть инициализация из старого лога, особо ничего не менял.
Код
AT
OK
AT+CSMINS?
+CSMINS: 0,1

OK
ATE1
OK
AT+IFC=2,2
OK
AT+CFUN=1
OK

+CPIN: READY
AT+CPIN?
+CPIN: READY

OK
AT+GSMBUSY=1
OK
AT+CREG?
+CREG: 0,2

OK
AT+CREG?
+CREG: 0,2

OK

Call Ready
AT+CREG?
+CREG: 0,2

OK

SMS Ready
AT+CREG?
+CREG: 0,1

OK
AT+CGATT?
+CGATT: 0

OK
AT+CGATT?
+CGATT: 1

OK
AT+CIPRXGET=1
OK
AT+CIPMUX=1
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+CSTT="internet.mts.ru","mts","mts"
OK
AT+SAPBR=3,1,"APN","internet.mts.ru"
OK
AT+SAPBR=3,1,"USER","mts"
OK
AT+SAPBR=3,1,"PWD","mts"
OK
AT+CIICR
OK
Go to the top of the page
 
+Quote Post
Alechek
сообщение Dec 1 2016, 13:07
Сообщение #57


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Daniil, вариантов я вижу 3:

1. Действительно ли надо вручную выгребать данные? Попробуйте работать с +CIPRXGET=0. При заборе данных в ручном режиме никаких упоминаний про пакеты нет.
2. Установите +CIPHEAD=1
3. Попробуйте работать без режима мультиплексора +CIPMUX=0

В Вашем случае и с Вашими настройками вполне допускаю, что пакеты в данные склеивает модем.
Go to the top of the page
 
+Quote Post
Daniil
сообщение Dec 1 2016, 13:34
Сообщение #58


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

Группа: Свой
Сообщений: 82
Регистрация: 3-09-04
Из: Russia, Novosibirsk
Пользователь №: 590



Цитата(Alechek @ Dec 1 2016, 20:07) *
Daniil, вариантов я вижу 3:

1. Действительно ли надо вручную выгребать данные? Попробуйте работать с +CIPRXGET=0. При заборе данных в ручном режиме никаких упоминаний про пакеты нет.
2. Установите +CIPHEAD=1
3. Попробуйте работать без режима мультиплексора +CIPMUX=0

В Вашем случае и с Вашими настройками вполне допускаю, что пакеты в данные склеивает модем.


1. Прямой необходимости нет, просто это позволяет контролировать максимальный объем принимаемых данных. Но при возможности проверю, спасибо.
2. Проверял, не помогает. Адрес и порт один и тот же.
3. Не могу, у меня в будущем ожидается 2 соединения.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Dec 1 2016, 13:42
Сообщение #59


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Daniil @ Dec 1 2016, 18:34) *
1. Прямой необходимости нет, просто это позволяет контролировать максимальный объем принимаемых данных.

При IPHEAD=1 (чтобы узнать длину) и аппаратном управлении потоком в таком контроле максимального объема нет необходимости.
Go to the top of the page
 
+Quote Post
Daniil
сообщение Dec 1 2016, 13:46
Сообщение #60


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

Группа: Свой
Сообщений: 82
Регистрация: 3-09-04
Из: Russia, Novosibirsk
Пользователь №: 590



Цитата(Alechek @ Dec 1 2016, 20:42) *
При IPHEAD=1 (чтобы узнать длину) и аппаратном управлении потоком в таком контроле максимального объема нет необходимости.

Я понимаю, просто изначально концепция была такая. Может быть пошел в неверном направлении...
В любом случае - спасибо за идею sm.gif
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:23
Рейтинг@Mail.ru


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