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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Свой стек TCP/IP
Beginning
сообщение Oct 24 2008, 07:29
Сообщение #1


Знающий
****

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



В заголовке IP кадра второй байт - тип обслуживания пакета (оптимизация, минимизировать задержку, максимальная производительность, максимальная надёжность передачи, минимизировать стоимость доставкипакета). Что означают эти опции и реально они на что-то влияют?
9 байт IP - TTL время жизни пакета, максимальное количество пройденныхмаршрутизаторов. Обычно 32 или 64. Как эта величена связана с реальной действительностью.
Важна любая информация. Идёт стадия накопления информации.


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


Тутэйшы
****

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



Типичный заголовок
Код
void Create_IP_Header(unsigned char *ip_header, unsigned char protocol, unsigned int total_len,
                      unsigned int id, unsigned long src_addr, unsigned long dst_addr)
{
  *((unsigned char*)ip_header + IP_HDR_VER_LEN) = 0x45;                                         //Version + IHL
  *((unsigned char*)ip_header + IP_HDR_TOS) = 0x00;                                             //ToS
  *(unsigned int*)(unsigned char*)((unsigned char*)ip_header + IP_HDR_TOTAL_LEN) = __reverse(total_len);        //Total Lenghth
  *(unsigned int*)(unsigned char*)((unsigned char*)ip_header + IP_HDR_ID) = __reverse(id);      //Identification
  *((unsigned char*)ip_header + (IP_HDR_FLAG_FRGT_OFFSET + 0)) = 0x40;                          //Flags + Fragment Offset. MF = 0, DF = 1
  *((unsigned char*)ip_header + (IP_HDR_FLAG_FRGT_OFFSET + 1)) = 0x00;                          //Fragment Offset
  *((unsigned char*)ip_header + IP_HDR_TTL) = 0x80;                                             //TTL
  *((unsigned char*)ip_header + IP_HDR_PROTOCOL) = protocol;                                    //Protocol
  *(unsigned int*)(unsigned char*)((unsigned char*)ip_header + IP_HDR_CHECKSUM) = 0;                            //IP Checksum
  *(unsigned long*)(unsigned char*)((unsigned char*)ip_header + IP_HDR_SRC_ADDR) = __reverse(src_addr);         //SRC IP ADDR
  *(unsigned long*)(unsigned char*)((unsigned char*)ip_header + IP_HDR_DST_ADDR) = __reverse(dst_addr);         //DST IP ADDR
}
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 24 2008, 08:12
Сообщение #3


Знающий
****

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



Спасибо.

To vesago:
А это из исходников linux или чего другого?
Вы можите выложить исходников побольше, например (__reverse(total_len)wink.gif, конечно если это не комерческая инфа.
Я например думаю сделать IP заголовок через union, навскидку например так:
Код
tupdef union{
uint8 raw_data[2000];
//---------------------------------
struct{
    uint8 ip_header;
    uint8 tos;
    ……    
}IP;
//--------------------------------
struct{
    uint8 shift[32];  //пропускаем IP заголовок
    uint16  PORT_surce;
uint16  PORT_distenation;
    ……    
}TCP;
//----------------------------------
struct{
    uint8 shift[32];  //пропускаем IP заголовок
    ……    
}UDP;
}IP_FRAME;

Тогда обращения будут выглядеть так:
IP_FRAME ip_frame;
Ip_frame.IP. header=0x45;
Ip_frame.TCP. PORT_surce =0x0080;
Ну и т.д.

Как вам такой подход? Какие есть замечания?


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


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

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



Вы конечно рановато замахнулись на TCP. Начните хотябы с UDP - во много раз проще будет начать.

Цитата(Beginning @ Oct 24 2008, 13:12) *
uint16 PORT_distenation;
Destination smile.gif
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 27 2008, 11:21
Сообщение #5


Знающий
****

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



Ну пока я только IP формирую. Впринципе, вроде всё OK, вкладываю ICMP-ping и на google. И нифига не приходит laughing.gif Грешить могу только на CRC ip шапки. Буду разбиратся.
Ещё TCP не брал. Неужели он настолько сложнее UDP? Владея предварительной инфой, о мне не показался "страшным".


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


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

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



TCP простой, немного сложнее UDP. Проблема в том, что его отлаживать надо намного дольше чем UDP (только сравните заголовки TCP и UDP!).

Да, с CRC бывает больше всего проблем. smile.gif Так что советую найти где-нибудь калькулятор, который бы считал CRC, а Вы бы сранивали его с тем, что выдает ваша функция.
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 28 2008, 07:00
Сообщение #7


Знающий
****

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



Да блин с этими CRC одни проблемы. С CRC PPP долго мучался. Вот походу таже проблема с CRC IP. А самое главное что не понятно где грабли. То ли CRC, толи что другое. Но факт остаётся фактом, PING отправляется и ничего не приходит. Вы не знаете где взять калькулятор CRC для IP?


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


Знающий
****

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



Всё проблема решена. PING отправляется и приходит. Вот пример:

Вот что я посылаю :
--> GSM:FF,3,0,21,45,0,0,1C,0,0,40,0,FF,1,BD,F0,A,14,B7,8F,40,E9,BB,63,8,0,F7,FE,0,1
,0,0,22,E6,

И вот что приходит :
<-- GSM:FF,3,0,21,45,0,0,1C,0,0,40,0,EC,1,D0,F0,40,E9,BB,63,A,14,B7,8F,0,0,FF,FE,0,1
,0,0,B1,32,

IP - 40.E9.BB.63 - это google
IP - A,14,B7,8F - адрес который мне сеть выдала


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


Знающий
****

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



Начал изучать TCP. Дааа... Не думал, что он настолько сложен. Не удастся реализовать с "наскока".A время поджимает. Народ, может кто поделится готовыми реализациями TCP, или ссылочку кто подскажет.


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


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Изучать исходные тексты от linux, все дистрибутивы поддерживают TCP стек.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 29 2008, 10:18
Сообщение #11


Знающий
****

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



Скачал LwIP. Думаю выдрать от туда TCP. Кто работал с этим, какие мнения?


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


Местный
***

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



Цитата(Beginning @ Oct 29 2008, 14:18) *
Скачал LwIP. Думаю выдрать от туда TCP. Кто работал с этим, какие мнения?


может єто поможет, сам по нему разбираюсь
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 29 2008, 11:25
Сообщение #13


Знающий
****

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



Встречал я подобные схемы, и ещё сложнее. Там столько нюансов. Один расчёт окна чего стоит. Вообще можно написать. Но писать километр времени надо. Лично я нелюблю чужие исходники брать, т.к. на их изучение тратится примерно столько же времени, сколько и на написание своих. Но видимо не в этом случае. crying.gif

Ни у кого нету uCOS TCP/IP. Хочется глянуть что за весч. А то на их сайте надо километровую анкету заполнять, а у меня хроническая аллергия к подобным анкетам.

To west329_:
A вы уже написали PPP(Ethernet),IP?
Вы сейчас TCP пишите?


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


Местный
***

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



Цитата(Beginning @ Oct 29 2008, 15:25) *
Встречал я подобные схемы, и ещё сложнее. Там столько нюансов. Один расчёт окна чего стоит. Вообще можно написать. Но писать километр времени надо. Лично я нелюблю чужие исходники брать, т.к. на их изучение тратится примерно столько же времени, сколько и на написание своих. Но видимо не в этом случае. crying.gif

Ни у кого нету uCOS TCP/IP. Хочется глянуть что за весч. А то на их сайте надо километровую анкету заполнять, а у меня хроническая аллергия к подобным анкетам.

To west329_:
A вы уже написали PPP(Ethernet),IP?
Вы сейчас TCP пишите?


дошол до TCP и в стопор, уж больно сложная реализация, но говорят можно простую сотворить, если используются небольшие пакеты данных, чтоб не разбивать и собирать их потом. пока ищу..
Go to the top of the page
 
+Quote Post
Beginning
сообщение Oct 29 2008, 12:33
Сообщение #15


Знающий
****

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



А на чём остановился?


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

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

 


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


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