Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Help. CRC Tcp пакета   Найти похожие ветки 

 
JorSand   (2003-08-27 00:33) [0]

Нужен алгоритм расчета CRC TCP пакета, если кто писал бросьте исходник-с плиз. Очень надо. Да, и RFC я уже читал, может конечно плохо, итог - у меня не вышел каменный цветок.


 
JorSand   (2003-08-27 10:30) [1]

всем участвовавшим в обсуждении этого вопроса - большое человеческое спасибо.


 
Verg ©   (2003-08-27 10:39) [2]

Писал, только на С:

ushort net_checksum( void *data, size_t len )
{
ulong sum = 0;
ushort *dp = (ushort*)data;
ushort sum_s;
int words = len >> 1;

while( words -- )
sum += *dp ++;

if( len & 1 )
sum += *(uchar*) dp;

sum = (ushort) sum + (sum >> 16) & 0xffff;
sum_s = (ushort) sum + (ushort)(sum >> 16);
return sum_s != 0xffff ? ~sum_s : sum_s;
}

ushort net_chksum_add( ushort s1, ushort s2 )
{
ulong sum = (ulong) s1 + (ulong) s2;
ushort usum = (ushort) sum;

sum = sum > 0xffff ? usum + 1 : usum;
if( !sum && (s1 || s2) )
return 0xffff;
else
return sum;
}


Кс TCP пакета:
Сумма котрольных кодов TCP пакета вместе с данными и псевдозаголовка TCP:

ushort get_udp_checksum(ip_header *iph, tcp_hdr* tcph, size_t size) {
tcp_pseudohdr ph;
ph.tph_saddr = iph -> ip_src;
ph.tph_daddr = iph -> ip_dst;
ph.tph_zero = 0;
ph.tph_proto = IP_PROTO_TCP;
ph.tph_len = tcph -> uh_ulen;
return net_chksum_add(
net_checksum( &ph, sizeof( ph ) ),
net_checksum( tcph, size ));
};


 
Verg ©   (2003-08-27 10:45) [3]

Ошибочка:


> ushort get_tcp_checksum(ip_header *iph, tcp_hdr* tcph,
> size_t size) { // длина TCP пакета - заголовок+данные
> tcp_pseudohdr ph;
> ph.tph_saddr = iph -> ip_src;
> ph.tph_daddr = iph -> ip_dst;
> ph.tph_zero = 0;
> ph.tph_proto = IP_PROTO_TCP;
> ph.tph_len = size;
> return net_chksum_add(
> net_checksum( &ph, sizeof( ph ) ),
> net_checksum( tcph, size ));
> };


 
JorSand   (2003-08-28 10:25) [4]

IP_PROTO_TCP равен 6 ????
Длина в псевдозаголовке (size) это есть = длина заголовока TCP пакета + кол-во байт данных?


 
Jeer ©   (2003-08-28 12:39) [5]

http://www.programme.ru/archive/2001/1/012001_3_2.phtml


 
JorSand   (2003-08-28 13:46) [6]

спасибо



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
1-74150
saska
2003-10-10 14:40
2003.10.23
GUID


14-74452
Zhouck
2003-10-03 16:49
2003.10.23
Опять про DVD


1-74137
Буланов Дмитрий
2003-10-11 04:15
2003.10.23
проблема


14-74393
Nik8.
2003-10-03 11:49
2003.10.23
Где взять примеры драйверов ?


1-74314
race1
2003-10-11 18:45
2003.10.23
Length ( Line ) := ?