Главная страница
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.016 c
1-74139
Ruslan Girichev
2003-10-10 23:36
2003.10.23
TreeView


6-74357
Веньтель
2003-08-25 22:54
2003.10.23
Программно запретить доступ к сетке некоторых машин


1-74174
хорек
2003-10-10 12:26
2003.10.23
анимационный курсор


14-74398
Zhouck
2003-10-06 12:39
2003.10.23
Фигня с телетекстом


1-74191
P0tia
2003-10-10 11:53
2003.10.23
Можноли сдеть фаил с фунциями отдельно