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

 
 
> Свой стек PPP
Beginning
сообщение Oct 1 2008, 12:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Долго искал, где создать тему, так и не нашёл. Разместил здесь, т.к. в конечном счёте, PPP необходим для GPRS. Если есть более подходящая ветка, прошу перенести.
Собственно сам вопрос. Рассчитываю CRC PPP фрейма. И CRC не совпадает. Делаю Следующее:
Сначало приходит стандартный LCP пакет:
~ }#А!}!}#} }9}"}&} }*} } }'}"}(}"}%}&ЂA}!в}#}%В#}%чи~
После преоброзования 7D, выделяем тело:
C0,21,1,3,0,19,2,6,0,A,0,0,7,2,8,2,5,6,80,41,1,E2,3,5,C2,23,5,F7,E8,

Функуия для расчёта CRC:
uint16 crc16_ppp(uint8 *buf,uint32 len)
{
uint32 i;
uint8 j;
uint16 crc=0x2E93; //В CRC побывало уже 0xFF и 0x03
for (i=0;i<len;i++)
{
crc^=(uint16)buf[i]<<8;
for(j=0;j<8;j++) crc=crc&0x8000 ? (crc << 1)^0x1021 : crc<<1;
}
return crc;
}
Получаю CRC: EB1C
Инвертирую CRC: 14E3 и оно не совпадает с F7E8.
Что я делаю не так? Через CRC надо пропускать байты уже преобразованные через 7D, или абсолютно каждый байт между ~~?
Если у кого есть исxодники PPP, можете помочь страждущему?
P.S. Т.к. есть большое желание узнать, как вся эта кухня работает, не предлагать взять готовый стек PPP и TCP/IP


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
4 страниц V  < 1 2 3 4 >  
Start new topic
Ответов (15 - 29)
Beginning
сообщение Oct 13 2008, 07:08
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Пишу под платформу ARM9. Компилятор RVDS. Впрочем на С нет большой разницы, под какую платформу эти исходники потом компилировать. Разве что, общение с портом надо будет подправлять в зависимости от платформы и среды. У кого драйвер, у кого прерывание.
Цель проекта: детально разобратся с PPP, TCP/IP стеком, сделать полноценную рабочую версию, что называется, не хуже чем у других. Но сколько бы я не писал, постоянно получается, какая-то ГРОМОЗДКАЯ “писанина”, хоть и рабочая, но ОЧЕНЬ НЕ ОПТИМАЛЬНАЯ.
Я сейчас реализовал приём PPP фрэймов, и протокол LCP.
Выкладываю исходник. Предлагаю общественным путём доработать их. Голая критика, без своих ВАРИАНТОВ, не ПРИВЕТСТВУЕТСЯ, ибо не несёт ни какой ценности.
To west329_:
Что вы имели в виду под фразой:”потом подправляеш входящий пакет и отсылаеш его ему обратно”. В виде чего отсылать и что подправлять? Мне например нужен протокол PAP. Отсылать пакет ASK или что другое?
Прикрепленные файлы
Прикрепленный файл  App.rar ( 5.81 килобайт ) Кол-во скачиваний: 59
 


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
west329_
сообщение Oct 13 2008, 08:40
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(Beginning @ Oct 13 2008, 10:08) *
Пишу под платформу ARM9. Компилятор RVDS. Впрочем на С нет большой разницы, под какую платформу эти исходники потом компилировать. Разве что, общение с портом надо будет подправлять в зависимости от платформы и среды. У кого драйвер, у кого прерывание.
Цель проекта: детально разобратся с PPP, TCP/IP стеком, сделать полноценную рабочую версию, что называется, не хуже чем у других. Но сколько бы я не писал, постоянно получается, какая-то ГРОМОЗДКАЯ ”писанина”, хоть и рабочая, но ОЧЕНЬ НЕ ОПТИМАЛЬНАЯ.
Я сейчас реализовал приём PPP фрэймов, и протокол LCP.
Выкладываю исходник. Предлагаю общественным путём доработать их. Голая критика, без своих ВАРИАНТОВ, не ПРИВЕТСТВУЕТСЯ, ибо не несёт ни какой ценности.
To west329_:
Что вы имели в виду под фразой:”потом подправляеш входящий пакет и отсылаеш его ему обратно”. В виде чего отсылать и что подправлять? Мне например нужен протокол PAP. Отсылать пакет ASK или что другое?


Так как я работаю с 8 битным контроллером то у меня нету разделения на RX TX буффера, и для экономии я корректирую входящий пакет и отправляю ему обратно.

Получается такой алгоритм:
1)
Присылает сервер строку
Код
FF03 C021 01 03 0019 0206000A0000 0702 0802 0506AEA88890 0305C22305 887A


0305C22305 тут CHAP, требуем РAP, я делаю так

-коректируем Тип пакета, Configure-Request
-корекируем Длина поля «Информация пакета»;
-данные пишу FF03 C021 01 00 0008 0304C023 98DC
-отпавляем серверу

2) он присылает с огласие
Код
FF03 C021 02 03 0008 0304C023 26FE


3) опять присылает
Код
FF03 C021 01 03 0018 0206000A0000 0702 0802 0506D85BBC5C 0304C023 A797

отвергем всё кроме РАР

-коректируем Тип пакета, Configure-Request
-корекируем Длина поля «Информация пакета»;
-данные пишу
Код
FF03 C021 04 03 0014 050600000000 0206000A0000 0702 0802 701A

-отпавляем серверу

4) присылает
Код
FF03 C021 01 05 0008 0304C023 3B2C


если ещё интересно напишу ещё ?

P.S.
Сам хочу реализовать TCP протокол, но пока ещё не выходит, с удовольствим поддержу автора.

Сообщение отредактировал west329_ - Oct 13 2008, 08:48
Go to the top of the page
 
+Quote Post
lolful
сообщение Oct 13 2008, 11:00
Сообщение #18


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Цитата(Beginning @ Oct 9 2008, 17:29) *
...
Мне не нужны все предложенные настройки. Вместо протокола CHAP нужен PAP.
Следуя алгоритму, я посылаю пакет NAK. Что написано про него в описании:
Пакет LCP типа Configure-Nak используется для сигнализации о том, что по крайней мере один из параметров, заявленных в пакете Configure-Request, не принят сервером РРР. При этом сервер должен указать, какой именно параметр не принят, и предложить альтернативное значение этого параметра в поле Опции этого пакета....

Ключевое слово сдесь сервер. Вы как-бы не имеете право посылать NAK, т.к. являетесь ведомым в этой сессии. Чтобы отвергнуть предложенные сервером настройки надо послать ему пакет Config-Reject.
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 13 2008, 11:40
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Спасибо за уточнение. Config-Reject - действительно прокатыает сразу. Мне сбили с толку неоднократные неточности в русских переводах документации на PPP.


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 13 2008, 12:04
Сообщение #20


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Кстати на фтп есть замечательная книжка TCP-IP Lean--Web Servers for Embedded Systems и к ней прилагается чудесный код PPP, который при небольшой подпилке хорошо ложится в проект. Там же есть TCP/IP, но уже похуже.
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 13 2008, 13:04
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Спасибо. Качаю.

Вообщем стадия согласования параметров прохожу удачно. Дале по протоколу PAP я должен передать серверу login и passward. Насколько я понял в GPRS нету login и passward PPP коннекта. Поэтому посылаю строку:
FF,3,C0,23,1,2,0,6,0,0,56,24
Ff,3 – константы
С023 – PAP
1 – reqwest
2 – это id моих посылаемых пакетов. Насколько я понял, начальное значение могу взять любое, а потом инкрементировать? Или как-то подругому.
6 –длина
0 – pasward 0
0 – login 0
56,24 – CRC
Вобщем посылаю это, и ничего. Сервер ничего не отвечает. Что не по протоколу?


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 13 2008, 13:13
Сообщение #22


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Мне кажется, что что-то там нужно вводить логин и пароль. Посомтрите у опсоса информацию о подключении к мобильному интеренету. Открою одну тайну. Все это дело вы можете отладить на компьютере, создавая соединение по последователному порту. Таким макаром также можно соединить пару виртуальных компортов и посмотреть в снифере как гоняются данные и согласуются параметры.
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 13 2008, 13:24
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Насколько я понял есть пароль к PPP соединению, а есть к TCP/IP или как его там, короче тот что к шлюзу на официальных сайтах указан. У меня например "wap","wap". Но это пока предположение, т.к. я не приступил к изученю TCP. В любом случае если пароль неправильный, так хоть о данном факте должен сообщить сервер. А тут вообще ничего.
Что касается отладки через комп. Тоже вариант. Но по ниму надо было идти изначально. Но стоя в начали пути на распути, я выбрал вариант с изучением документации, реализации на контроллере и анализом трафика. Поэтому переключение на первый вариант, сейчас будет накладно.


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 13 2008, 13:29
Сообщение #24


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Если не читали ранее, ознакомьтесь. Там на пальцах расписано. Про комп я имел ввиду, что можно к железке подсоединить вместо модема и сервера опсоса и отладить все основные моменты. Как на уровне ппп так и тсп/ип.
Прикрепленные файлы
Прикрепленный файл  _____1.rar ( 20.56 килобайт ) Кол-во скачиваний: 99
 
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 13 2008, 13:37
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Да этот документ у меня есть. Что сказать. В этом документе описан лишь необходимый минимум и он не описывает множество мелочей (а в них как известно скрывается дьявол), и нестандартных ситуаций. К тому же он изабилует множество элементарных ошибок или опечаток, от чего впрочем не легче.
Запрос PAP у меня точно такой же, как и автора этого документа, разве что подазрение на id падает. У автора не сказанно какой id брать надо. (эта мелочь он посчитал не нужной)
Моя логика была следующей: раз этот пакет - мой запрос, то и id я должен выдовать свой. Хорошу попробую присвоить id последнего пакета сервера и посмотрю, что получится.


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 13 2008, 13:44
Сообщение #26


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Документ этот действительно не на все случаи расчитан. Создайте на компе последовательное соединение двух виртуальных компортов и посмотрите снифером как у них идет соединение ппп. Можно с паролем, можно без. Много станет ясно на каком этапе затык.
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 13 2008, 13:54
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Послал:
FF,3,C0,23,1,5,0,6,0,0,91,4,

Получилась точная копия как в документе 1.doc Т.к. id=5 и CRC совпало.
Так вот, "теже яйца вид слева". smile3046.gif


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
lolful
сообщение Oct 14 2008, 06:41
Сообщение #28


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Копайте в сторону настройки параметров GPRS (+cgatt, +cgdcont и т.п.) и телефона дозвона (я пишу так atd *99***1#). Мне кажется, что проблема в этом.

PS Какой оператор?

Сообщение отредактировал lolful - Oct 14 2008, 06:42
Go to the top of the page
 
+Quote Post
vesago
сообщение Oct 14 2008, 06:44
Сообщение #29


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Возможно вы перед этим не согласовали соответсвующий протокол авторизации или еще какой параметр. Вот сервер и ждет. Чтобы разобраться - возьмите вставьте сим карту в телефон, телефон подсоедините к компу, натравите сниффер на ком порт и создав успешное модемное соединение, выйдите в интернет. Разберите данные в сниффере и если ваше железо повторит ту же последовательность действий, то проблем не будет. А так можно долго гадать почему да как.
Go to the top of the page
 
+Quote Post
lolful
сообщение Oct 14 2008, 06:44
Сообщение #30


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

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Цитата(Beginning @ Oct 13 2008, 19:37) *
Моя логика была следующей: раз этот пакет - мой запрос, то и id я должен выдовать свой.
Логика абсолютно правильная smile.gif. Проблема точно не в этом.

Сообщение отредактировал lolful - Oct 14 2008, 06:46
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 21:29
Рейтинг@Mail.ru


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