Beginning 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба В заголовке IP кадра второй байт - тип обслуживания пакета (оптимизация, минимизировать задержку, максимальная производительность, максимальная надёжность передачи, минимизировать стоимость доставкипакета). Что означают эти опции и реально они на что-то влияют? 9 байт IP - TTL время жизни пакета, максимальное количество пройденныхмаршрутизаторов. Обычно 32 или 64. Как эта величена связана с реальной действительностью. Важна любая информация. Идёт стадия накопления информации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба Типичный заголовок 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 } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 24 октября, 2008 Опубликовано 24 октября, 2008 · Жалоба Спасибо. To vesago: А это из исходников linux или чего другого? Вы можите выложить исходников побольше, например (__reverse(total_len);), конечно если это не комерческая инфа. Я например думаю сделать 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; Ну и т.д. Как вам такой подход? Какие есть замечания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lolful 0 27 октября, 2008 Опубликовано 27 октября, 2008 · Жалоба Вы конечно рановато замахнулись на TCP. Начните хотябы с UDP - во много раз проще будет начать. uint16 PORT_distenation;Destination :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 27 октября, 2008 Опубликовано 27 октября, 2008 · Жалоба Ну пока я только IP формирую. Впринципе, вроде всё OK, вкладываю ICMP-ping и на google. И нифига не приходит :laughing: Грешить могу только на CRC ip шапки. Буду разбиратся. Ещё TCP не брал. Неужели он настолько сложнее UDP? Владея предварительной инфой, о мне не показался "страшным". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lolful 0 28 октября, 2008 Опубликовано 28 октября, 2008 · Жалоба TCP простой, немного сложнее UDP. Проблема в том, что его отлаживать надо намного дольше чем UDP (только сравните заголовки TCP и UDP!). Да, с CRC бывает больше всего проблем. :) Так что советую найти где-нибудь калькулятор, который бы считал CRC, а Вы бы сранивали его с тем, что выдает ваша функция. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 28 октября, 2008 Опубликовано 28 октября, 2008 · Жалоба Да блин с этими CRC одни проблемы. С CRC PPP долго мучался. Вот походу таже проблема с CRC IP. А самое главное что не понятно где грабли. То ли CRC, толи что другое. Но факт остаётся фактом, PING отправляется и ничего не приходит. Вы не знаете где взять калькулятор CRC для IP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 28 октября, 2008 Опубликовано 28 октября, 2008 · Жалоба Всё проблема решена. 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 - адрес который мне сеть выдала Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Начал изучать TCP. Дааа... Не думал, что он настолько сложен. Не удастся реализовать с "наскока".A время поджимает. Народ, может кто поделится готовыми реализациями TCP, или ссылочку кто подскажет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Изучать исходные тексты от linux, все дистрибутивы поддерживают TCP стек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Скачал LwIP. Думаю выдрать от туда TCP. Кто работал с этим, какие мнения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
west329 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Скачал LwIP. Думаю выдрать от туда TCP. Кто работал с этим, какие мнения? может єто поможет, сам по нему разбираюсь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Встречал я подобные схемы, и ещё сложнее. Там столько нюансов. Один расчёт окна чего стоит. Вообще можно написать. Но писать километр времени надо. Лично я нелюблю чужие исходники брать, т.к. на их изучение тратится примерно столько же времени, сколько и на написание своих. Но видимо не в этом случае. :crying: Ни у кого нету uCOS TCP/IP. Хочется глянуть что за весч. А то на их сайте надо километровую анкету заполнять, а у меня хроническая аллергия к подобным анкетам. To west329_: A вы уже написали PPP(Ethernet),IP? Вы сейчас TCP пишите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
west329 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба Встречал я подобные схемы, и ещё сложнее. Там столько нюансов. Один расчёт окна чего стоит. Вообще можно написать. Но писать километр времени надо. Лично я нелюблю чужие исходники брать, т.к. на их изучение тратится примерно столько же времени, сколько и на написание своих. Но видимо не в этом случае. :crying: Ни у кого нету uCOS TCP/IP. Хочется глянуть что за весч. А то на их сайте надо километровую анкету заполнять, а у меня хроническая аллергия к подобным анкетам. To west329_: A вы уже написали PPP(Ethernet),IP? Вы сейчас TCP пишите? дошол до TCP и в стопор, уж больно сложная реализация, но говорят можно простую сотворить, если используются небольшие пакеты данных, чтоб не разбивать и собирать их потом. пока ищу.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 октября, 2008 Опубликовано 29 октября, 2008 · Жалоба А на чём остановился? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться