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

 
 
> Контрольная сумма UDP, Помогите понять
s.i.suprun
сообщение Jul 12 2010, 09:40
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 71
Регистрация: 24-06-08
Из: Харьков
Пользователь №: 38 521



Товарищи форумчане, возникла срочная необходимость написать свою реализацию IP стека, но по ходу возникла проблема подсчета контрольной суммы UDP датаграммы. Если можна поскажите толковое руководство по алгоритму или же если не тяжело пошаговое обьяснение (за илистрацию примером из пары тройки двухбайтных слов отдельное СПАСИБО!!!!!)

Сообщение отредактировал s.i.suprun - Jul 12 2010, 09:42
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Jul 12 2010, 09:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Код
#define    UDP_PACKET_SIZE    8
#define    IP_UDP            17

  // псевдозаголовок
  crc=UDP_PACKET_SIZE+sizeof(sAUDIO_PACKET)+IP_UDP
    +(((DWORD)dst_ip[0]<<8)|dst_ip[1])
    +(((DWORD)dst_ip[2]<<8)|dst_ip[3])
    +(((DWORD)src_ip[0]<<8)|src_ip[1])
    +(((DWORD)src_ip[2]<<8)|src_ip[3]);
    
  // заголовок
  for(j=0;j<((UDP_PACKET_SIZE+sizeof(sAUDIO_PACKET)+1)>>1);j++)
    crc+=(bl0_data[j*2+1+ETH_PACKET_SIZE+IP_PACKET_SIZE]
      +((DWORD)bl0_data[j*2+0+ETH_PACKET_SIZE+IP_PACKET_SIZE]<<8));
    
  crc=(crc+(crc>>16))^0xFFFF;

http://www.opennet.ru/docs/RUS/tcpip
    
  udp->crc=SWAPBYTES(crc);


В поле CRC UDP заносим 0.
Сначала считаем сумму псевдозаголвка (тип пакета 17 + размер данных пакета IP (размер заголовка UDP+размер данных UDP)) + IP адреса источника и получателя.
Потом к полученной сумме добавляем все данные IP пакета (т.е. заголовок UDP и данные UDP).
Затем добавляем переполнение и инвертируем содержимое CRC

bl0_data[ETH_PACKET_SIZE+IP_PACKET_SIZE] - начало пакета UDP

Можно почитать http://www.opennet.ru/docs/RUS/tcpip/
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- s.i.suprun   Контрольная сумма UDP   Jul 12 2010, 09:40
- - Костян   QUOTE (s.i.suprun @ Jul 12 2010, 07:40) Т...   Jul 12 2010, 11:10
|- - iosifk   Цитата(Костян @ Jul 12 2010, 15:10) А как...   Jul 12 2010, 12:15
- - adnega   Если в поле CRC будет 0, то windows-socket, вроде,...   Jul 12 2010, 11:50
|- - vadimuzzz   Цитата(adnega @ Jul 12 2010, 18:50) Если ...   Jul 12 2010, 12:17
- - des333   То s.i.suprun: Пример рассчета: http://ru.wikipedi...   Jul 12 2010, 12:25
|- - vadimuzzz   Цитата(des333 @ Jul 12 2010, 19:25) Может...   Jul 12 2010, 12:31
||- - Костян   QUOTE (vadimuzzz @ Jul 12 2010, 10:31) а ...   Jul 12 2010, 12:57
||- - vadimuzzz   Цитата(Костян @ Jul 12 2010, 19:57) поясн...   Jul 12 2010, 13:18
||- - Костян   QUOTE (vadimuzzz @ Jul 12 2010, 11:18) QU...   Jul 12 2010, 14:52
||- - vadimuzzz   Цитата(Костян @ Jul 12 2010, 21:52) я не ...   Jul 12 2010, 15:30
|- - x736C   Цитата(des333 @ Jul 12 2010, 16:25) И там...   Jul 13 2010, 02:25
||- - des333   Цитата(x736C @ Jul 13 2010, 06:25) Так эт...   Jul 13 2010, 06:13
||- - x736C   Цитата(des333 @ Jul 13 2010, 18:13) Я пис...   Jul 13 2010, 09:21
||- - des333    Цитата(x736C @ Jul 13 2010, 21:21) Призн...   Jul 13 2010, 09:49
|- - s.i.suprun   2 des333 Пример рассчета: http://ru.wikipedia.org...   Jul 13 2010, 07:35
|- - des333   Цитата(s.i.suprun @ Jul 13 2010, 19:35) 2...   Jul 13 2010, 07:52
- - s.i.suprun   Спасибо большое за ответ.!!!!   Jul 13 2010, 08:10
- - adnega   Эээ... походу это я всех смутил. Заветные три букв...   Jul 13 2010, 10:17
- - des333   Цитата(adnega @ Jul 13 2010, 22:17) Посмо...   Jul 13 2010, 10:39
- - vadimuzzz   Цитата(des333 @ Jul 14 2010, 01:39) Все п...   Jul 13 2010, 14:57


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

 


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


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