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

 
 
> Склеиваются UDP пакеты
Daniil
сообщение Nov 21 2016, 04:42
Сообщение #1


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

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



Всем добрый день.

Имеется SIM800C, который раз в 5сек отсылает UDP пакет на сервер, на что сервер ему немедленно отвечает.
Большую часть времени работает стабильно, но иногда наблюдается такая картина:
-> модем отправил пакет
<- пришел ответ
-> модем отправил пакет
<- пришел ответ
-> модем отправил пакет
-> модем отправил пакет
-> модем отправил пакет
<- пришло сразу 3 пакета в одном
smile3046.gif
Сервер при этом пишет, что честно отправил ответ немедленно.
По потреблению модема видно, что все эти 15сек. данные действительно не приходят.

Такие дикие задержки на сети оператора? Или что-то еще?
Ладно бы задержки, но как разделять эти пакеты? Модем не дает никакой информации о том, где один пакет закончился и начался другой, выдает данные одним потоком. Может есть способ от модема добиться больше информации?
При этом непонятно - то ли пакеты склеились на стороне оператора (чего быть не должно), то ли пришли с таким коротким интервалом, что модем их выдал одним пакетом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение Nov 28 2016, 07:05
Сообщение #2


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

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



У ТС'а UDP. Попыток доставить такой стек не делает. Пропал Никодим да и заголовок с ним.
Рекомендую посмотреть и показать журнал (например HHD Free Serial Port Monitor) обмена с модемом во время инициализации [модема] и процессе обмена данными. У меня такого поведения не было ни на телитах,
ни на симкомах. Тоже использую командный режим и маленькие пакеты.
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 29 2016, 12:13
Сообщение #3


Местный
***

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



Так и не понял из-за чего сыр-бор развели. С UDP я никгда не работал, но в TCP симком так себя ведет со времен царя гороха.
Если идут серьезные задержки, то модем потом одновременно выдает все данные которые к нему пришли.

Господа программисты! Где написано что модем должен выдавать данные в виде пакетов? Ткните пожалуйста в строку документации.

Представьте что ваши данные сыпятся через проводок по UART непрерывным потоком и без пауз. Протокол работает? Значит и через модем будет работать. Не работает? В топку.
Делайте протоколы которые из потока символов однозначно восстанавливают свои пакеты и будет вам счастье.

пс. Модемы telit в этом плане ведут себя ровно так же как и симком. Да и в описании других я никогда не встречал никаких пакетов.
Так что задумайтесь "на чьей стороне проблема"
Go to the top of the page
 
+Quote Post
Alechek
сообщение Nov 29 2016, 12:52
Сообщение #4


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

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



Цитата(butthead2 @ Nov 29 2016, 17:13) *
Господа программисты! Где написано что модем должен выдавать данные в виде пакетов? Ткните пожалуйста в строку документации.

Не ели UDP?Так зачем пытаетесь обсуждать его вкус?

Смотрим:
Цитата(SIM800 Series_AT Command Manual_V1.09 )
8.2.15 AT+CIPHEAD Add an IP Head at the Beginning of a Package Received

На русский перевести?

Да, автор не указал, какое значение у этой переменной.

Кстати, представители Симком может пояснят суть команды
8.2.25 AT+CIPUDPMODE UDP Extended Mode
?
Может в этом дело?
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 29 2016, 13:10
Сообщение #5


Местный
***

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



Цитата(Alechek @ Nov 29 2016, 15:52) *
Не ели UDP?Так зачем пытаетесь обсуждать его вкус?

Даже комментировать не хочется. Внешние отличия TCP от UDP в стеке можно на пальцах одной руки перечислить.

Цитата(Alechek @ Nov 29 2016, 15:52) *
8.2.15 AT+CIPHEAD Add an IP Head at the Beginning of a Package Received
На русский перевести?

А прочитать что там пониже в описании написано слабо? Или только название команды читаем? Или может на русский перевести?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 29 2016, 14:04
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (butthead2 @ Nov 29 2016, 16:10) *
Внешние отличия TCP от UDP в стеке можно на пальцах одной руки перечислить.
Начинайте перечислять. Главное отличие уже было названо: TCP - потоковый протокол, UDP - протокол датаграмм (что следует из его названия). И именно это отличие запрещает модему дробить и склеивать UDP-пакеты (датаграммы), в отличие от TCP. "Я так думаю!".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 29 2016, 15:43
Сообщение #7


Местный
***

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



Цитата(Сергей Борщ @ Nov 29 2016, 17:04) *
Начинайте перечислять. Главное отличие уже было названо: TCP - потоковый протокол, UDP - протокол датаграмм (что следует из его названия). И именно это отличие запрещает модему дробить и склеивать UDP-пакеты (датаграммы), в отличие от TCP. "Я так думаю!".

Прямо симпозиум писателей biggrin.gif Читаем медленно по словам - "внешние", "в стеке".

Цитата(Alechek @ Nov 29 2016, 17:18) *
А что там пониже в описании? Можно и на английском и на китайском.

Да пожалуйста:
Parameters
<mode> A numeric parameter which indicates whether an IP header is added to the received data or not.
0 Not add IP header
1 Add IP header, the format is:
1) For single IP connection (+CIPMUX=0)
+IPD,<data length>:
2) For multi IP connection (+CIPMUX=1)
+RECEIVE,<n>,<data length>:
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 30 2016, 07:46
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (butthead2 @ Nov 29 2016, 18:43) *
Прямо симпозиум писателей biggrin.gif Читаем медленно по словам - "внешние", "в стеке".
Разверните свою мысль, пожалуйста. Я не нашел в исходном вашем сообщении этих слов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 30 2016, 10:43
Сообщение #9


Местный
***

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



Цитата(Сергей Борщ @ Nov 30 2016, 10:46) *
Разверните свою мысль, пожалуйста.

Разворачиваю. Внутренности и особенности как UDP так и TCP скрыты от пользователя внутри стека. То что видно на вершине айсберга через AT - практически монопенисуарно.
Поведение естественно будет отличаться, но на уровне команд одно и то же. Не доверяете? Добро пожаловать в документацию

Цитата(Сергей Борщ @ Nov 30 2016, 10:46) *
Я не нашел в исходном вашем сообщении этих слов.

Исключено. Чтобы не наврать я как раз его скопировал и стер лишнее
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 30 2016, 12:27
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (butthead2 @ Nov 30 2016, 13:43) *
Разворачиваю. Внутренности и особенности как UDP так и TCP скрыты от пользователя внутри стека. То что видно на вершине айсберга через AT - практически монопенисуарно.
Поведение естественно будет отличаться, но на уровне команд одно и то же. Не доверяете? Добро пожаловать в документацию
Вы вроде и русские слова используете, но я все равно не понимаю, что вы пытаетесь сказать. Пакеты UDP обязаны приходить отдельно. Если их склеивает модем - надо пинать производителя модема, а не пихать какие-то костыли поверх протокола.

QUOTE (butthead2 @ Nov 30 2016, 13:43) *
Исключено. Чтобы не наврать я как раз его скопировал и стер лишнее
Скопировал и его и еще предыдущее (т.е. оба два ваших сообщения на тот момент). Не знаю, что вы там стирали, но слов "внешние" и "в стеке" в них не находит даже мой текстовый редактор, а ему я доверяю. Выделите зеленым цветом:

QUOTE (butthead2 @ Nov 29 2016, 16:10) *
Даже комментировать не хочется. Внешние отличия TCP от UDP в стеке можно на пальцах одной руки перечислить.

А прочитать что там пониже в описании написано слабо? Или только название команды читаем? Или может на русский перевести?


QUOTE (butthead2 @ Nov 29 2016, 15:13) *
Так и не понял из-за чего сыр-бор развели. С UDP я никгда не работал, но в TCP симком так себя ведет со времен царя гороха.
Если идут серьезные задержки, то модем потом одновременно выдает все данные которые к нему пришли.

Господа программисты! Где написано что модем должен выдавать данные в виде пакетов? Ткните пожалуйста в строку документации.

Представьте что ваши данные сыпятся через проводок по UART непрерывным потоком и без пауз. Протокол работает? Значит и через модем будет работать. Не работает? В топку.
Делайте протоколы которые из потока символов однозначно восстанавливают свои пакеты и будет вам счастье.

пс. Модемы telit в этом плане ведут себя ровно так же как и симком. Да и в описании других я никогда не встречал никаких пакетов.
Так что задумайтесь "на чьей стороне проблема"

И впредь будьте внимательнее, чтобы не сесть в лужу снова.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
butthead2
сообщение Nov 30 2016, 15:24
Сообщение #11


Местный
***

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



Цитата(Сергей Борщ @ Nov 30 2016, 15:27) *
Вы вроде и русские слова используете, но я все равно не понимаю, что вы пытаетесь сказать. Пакеты UDP обязаны приходить отдельно. Если их склеивает модем - надо пинать производителя модема, а не пихать какие-то костыли поверх протокола.

Вы (как и многие) хотите поиметь "на халяву" разбиение на пакеты. Это в корне неверно. Модем выдает данные (payload!). Уровень пакетов пользователю недоступен, и что самое главное - никто его и не обещал. Поэтому претензии к производителям совершенно безосновательны.
SOCKET в winapi работает точно так же - сколько данных упало, столько склеенных и на выходе. Где спрашивается шквал претензий к Билли?
Хотя я встречал негодование с квадратными глазами "а же я свои пакеты отличать один от другого буду" sm.gif

Не устраивает стек, всегда можно запилить свой собственный. Многие так и делают. А там уже будет и доступ к пакетам и прочий блекджек и ш*хи.



Цитата(butthead2 @ Nov 29 2016, 16:10) *
не находит даже мой текстовый редактор, а ему я доверяю. Выделите зеленым цветом:
И впредь будьте внимательнее, чтобы не сесть в лужу снова.


Смело заявляю: этот текстовый редактор - г. Не доверяйте ему больше, а то неудобно получается.
Зеленый плохо заметно, синим лучше
Цитата(butthead2 @ Nov 29 2016, 16:10) *
Даже комментировать не хочется. Внешние отличия TCP от UDP в стеке можно на пальцах одной руки перечислить.


Сообщение отредактировал butthead2 - Nov 30 2016, 19:13
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 30 2016, 16:26
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (butthead2 @ Nov 30 2016, 18:24) *
Вы (как и многие) хотите поиметь "на халяву" разбиение на пакеты. Это в корне неверно. Модем выдает данные (payload!). Уровень пакетов пользователю недоступен, и что самое главное - никто его и не обещал. Поэтому претензии к производителям совершенно безосновательны.

SOCKET в winapi работает точно так же - сколько данных упало, столько склеенных и на выходе. Где спрашивается шквал претензий к Билли?
Вы, похоже, снова смешали в кучу UDP и TCP. В UDP отдельные пакеты обещаны. Начало-конец датаграммы - такая же информация (payload!) как и все остальное ее содержимое.

QUOTE (butthead2 @ Nov 30 2016, 18:24) *
Зеленый плохо заметно, красным лучше
Красный оставьте модераторам. И постарайтесь не нарушать п 2.1б Правил форума. Считайте это предупреждением.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Baser
сообщение Nov 30 2016, 17:00
Сообщение #13


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Сергей Борщ @ Nov 30 2016, 18:26) *
Вы, похоже, снова смешали в кучу UDP и TCP. В UDP отдельные пакеты обещаны. Начало-конец датаграммы - такая же информация (payload!) как и все остальное ее содержимое.

Зря на коллегу нападаете, все он правильно написал.
Смешал в кучу UDP и TCP не он, а модемописальщики.
Речь то идет о надстройке над стеком, об АТ-командах.
При работе с этой надстройкой, действительно, нет никаких отличий в использовании UDP или TCP.
Никакое обрамление пакетов стека на входе/выходе недоступно, только голые данные.
Будете смеяться, даже установление CONNECT-а одинаково и он также присутствует даже при наличии UDP.
И закрывать этот UDP connect тоже нужно sm.gif

Я так и не понял, какая между ними разница со стороны модема. Траффик больше (может быть, не проверял sm.gif)

А по изначальному вопросу топикстартера, так вроде бы уже все подробно разжевали...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Daniil   Склеиваются UDP пакеты   Nov 21 2016, 04:42
- - Alechek   Оператор, конечно, может чудить, но в Вашем случае...   Nov 21 2016, 06:26
- - k155la3   Цитата(Daniil @ Nov 21 2016, 07:42) . . ....   Nov 21 2016, 06:39
- - Daniil   1. Сервер под nodejs, но роли особой это не играет...   Nov 21 2016, 06:39
|- - k155la3   Цитата(Daniil @ Nov 21 2016, 09:39) . . ....   Nov 21 2016, 07:15
|- - Сергей Борщ   QUOTE (k155la3 @ Nov 21 2016, 10:15) Если...   Nov 21 2016, 07:32
|- - k155la3   Скользкое место - это передача/прием по компорту в...   Nov 21 2016, 08:12
- - Daniil   В UDP пакует сам модем. Отсылаю стандартно, по ком...   Nov 21 2016, 07:32
- - Baser   Цитата(Daniil @ Nov 21 2016, 06:42) Имеет...   Nov 21 2016, 11:17
|- - Сергей Борщ   QUOTE (Baser @ Nov 21 2016, 14:17) Проток...   Nov 21 2016, 12:23
||- - Baser   Цитата(Сергей Борщ @ Nov 21 2016, 14:23) ...   Nov 21 2016, 12:46
|- - Alechek   Цитата(Baser @ Nov 21 2016, 16:17) У вас ...   Nov 21 2016, 12:42
||- - Сергей Борщ   QUOTE (Alechek @ Nov 21 2016, 15:42) Так ...   Nov 21 2016, 12:50
|- - Daniil   Цитата(Baser @ Nov 21 2016, 18:17) Честно...   Nov 21 2016, 13:40
|- - k155la3   Цитата(Daniil @ Nov 21 2016, 17:40) . . ....   Nov 21 2016, 13:54
|- - Alechek   Цитата(k155la3 @ Nov 21 2016, 18:54) У оп...   Nov 21 2016, 18:19
- - Alechek   Сергей Борщ, вот и я о том же, что ОпСоСы подобны ...   Nov 21 2016, 12:53
- - dxp   А с чего взяли, что склеивается именно на уровне U...   Nov 22 2016, 04:43
|- - Daniil   Цитата(dxp @ Nov 22 2016, 11:43) А с чего...   Nov 22 2016, 06:50
|- - Baser   Цитата(Daniil @ Nov 22 2016, 08:50) Нет, ...   Nov 22 2016, 09:59
- - Alechek   99% проблема в операторе. Кто, кстати? Не Мегафон ...   Nov 22 2016, 07:16
|- - Daniil   Цитата(Alechek @ Nov 22 2016, 14:16) 99% ...   Nov 22 2016, 07:21
|- - GeGeL   Цитата(Alechek @ Nov 22 2016, 10:16) 99% ...   Nov 26 2016, 20:25
|- - Daniil   Цитата(GeGeL @ Nov 27 2016, 03:25) Сервер...   Nov 28 2016, 05:42
- - Alechek   Так, как идея - порт какой? Может сменить на друго...   Nov 22 2016, 08:16
|||- - Alechek   Цитата(butthead2 @ Nov 30 2016, 15:43) Не...   Nov 30 2016, 11:03
||||- - Alechek   Цитата(Baser @ Nov 30 2016, 22:00) Никако...   Nov 30 2016, 19:15
||||- - butthead2   Цитата(Alechek @ Nov 30 2016, 22:15) Кое ...   Nov 30 2016, 19:45
|||- - butthead2   Цитата(Сергей Борщ @ Nov 30 2016, 19:26) ...   Nov 30 2016, 19:12
||- - Alechek   Сергей Борщ, здесь обсуждается возможный косякособ...   Nov 29 2016, 14:18
|- - Velund   QUOTE (butthead2 @ Nov 29 2016, 15:13) пс...   Dec 27 2016, 09:58
|- - butthead2   Цитата(Velund @ Dec 27 2016, 12:58) пришл...   Dec 27 2016, 20:20
|- - Сергей Борщ   QUOTE (Velund @ Dec 27 2016, 11:58) Надо ...   Dec 28 2016, 06:45
|- - molecul   Цитата(Сергей Борщ @ Dec 28 2016, 09:45) ...   Dec 28 2016, 08:29
- - CADiLO   Вопрос который никто не задал. Какой размер буфер...   Nov 30 2016, 14:39
- - smalcom   ЦитатаSOCKET в winapi работает точно так же - скол...   Nov 30 2016, 18:24
- - smalcom   ЦитатаПК не мой профиль, для мох убогих програмуле...   Nov 30 2016, 19:28
- - smalcom   Цитата"Стек модема" не тождественно ...   Nov 30 2016, 21:42
- - gerber   Stream в TCP несет смысл тот, что пакеты будут дос...   Nov 30 2016, 22:16
- - smalcom   ЦитатаНа практике также следует учитывать, что есл...   Nov 30 2016, 22:23
|- - butthead2   Цитата(smalcom @ Dec 1 2016, 01:23) то эт...   Nov 30 2016, 23:23
- - smalcom   ЦитатаЗатуп у него 99% в протоколе хотите научить ...   Dec 1 2016, 00:00
|- - butthead2   Цитата(smalcom @ Dec 1 2016, 03:00) хотит...   Dec 1 2016, 01:17
- - smalcom   ЦитатаТак и не понял из-за чего сыр-бор развели. С...   Dec 1 2016, 01:21
|- - butthead2   Цитата(smalcom @ Dec 1 2016, 04:21) спец ...   Dec 1 2016, 15:55
- - Daniil   ЦитатаУ него аппаратное управление потоком и какая...   Dec 1 2016, 03:27
- - Alechek   Цитата(smalcom @ Dec 1 2016, 02:42) это к...   Dec 1 2016, 04:43
- - smalcom   ЦитатаЯ правильно понимаю, что вы пытаетесь сказат...   Dec 1 2016, 11:17
- - Daniil   2 Alechek Код AT+CIPSCONT? +CIPSCONT: 1 +CIPCS...   Dec 1 2016, 12:43
- - Alechek   Daniil, вариантов я вижу 3: 1. Действительно ли н...   Dec 1 2016, 13:07
|- - Daniil   Цитата(Alechek @ Dec 1 2016, 20:07) Danii...   Dec 1 2016, 13:34
|- - Alechek   Цитата(Daniil @ Dec 1 2016, 18:34) 1. Пря...   Dec 1 2016, 13:42
|- - Daniil   Цитата(Alechek @ Dec 1 2016, 20:42) При I...   Dec 1 2016, 13:46
- - smalcom   ЦитатаЖурнал модема мне пока недоступен, т.к. моде...   Dec 1 2016, 14:04
- - smalcom   Цитатафразы по теме вы уже показали, что ваша тема...   Dec 1 2016, 16:52
|- - butthead2   Цитата(smalcom @ Dec 1 2016, 19:52) у мен...   Dec 2 2016, 18:57
- - CADiLO   Так - "мальчики-девочки" - срач прекраща...   Dec 2 2016, 19:29
|- - Alechek   Цитата(CADiLO @ Dec 3 2016, 00:29) СТЕК Л...   Dec 3 2016, 06:26
|- - ArtemKAD   Цитата(Alechek @ Dec 3 2016, 08:26) Вот э...   Dec 3 2016, 10:00
- - smalcom   ЦитатаФейспалм У вас проблема на нейронном уровне....   Dec 3 2016, 07:28
|- - Alechek   Цитата(smalcom @ Dec 3 2016, 12:28) что д...   Dec 3 2016, 08:21
|- - butthead2   Цитата(smalcom @ Dec 3 2016, 10:28) того ...   Dec 5 2016, 01:31
- - smalcom   Цитатаsmalcom, все уже давно поняли, что Вы самый ...   Dec 3 2016, 08:41
- - Alechek   Не буду спорить, что не знаю всех подробностей. Во...   Dec 3 2016, 12:27
- - Baser   Цитата(Alechek @ Dec 3 2016, 08:26) В наз...   Dec 3 2016, 17:51
|- - Alechek   Цитата(Baser @ Dec 3 2016, 22:51) А вот н...   Dec 3 2016, 19:50
|- - Baser   Цитата(Alechek @ Dec 3 2016, 21:50) Расши...   Dec 3 2016, 22:39
|- - Alechek   Цитата(Baser @ Dec 4 2016, 03:39) Для TCP...   Dec 4 2016, 06:02
- - aiwa   Цитата(CADiLO @ Dec 2 2016, 21:29) Дополн...   Dec 7 2016, 23:30
- - smalcom   С момента последнего сообщения ТСа https://electro...   Dec 28 2016, 06:39


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:59
Рейтинг@Mail.ru


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