Home

Page 17
Page 17
background image

 

 

пакета  вставить  поле  контрольной  суммы,  которое  бы  рассчитывалось  для 
всего пакета: и заголовка и данных, было бы хорошо или плохо? Разумеется, 
это было бы плохо, так как, по крайней мере, заголовок пакета меняется при 
прохождении  маршрутизаторов,  следовательно,  контрольную  сумму  каждому 

маршрутизатору  пришлось  бы  пересчитывать,  что  является  дополнительной 
вычислительной  нагрузкой  на  маршрутизатор,  а  если  бы  маршрутизатору 
пришлось  бы  при  этом  еще  и  пересчитывать  контрольную  сумму  по  ВСЕМУ 

пакету,  было  бы  очень  печально  .  Поэтому  в  стеке  TCP/IP  поступают  так: 
всякий  протокол,  желающий  положить  свои  данные  в  IP  пакет  САМ  должен 
позаботится  о  защите  передаваемых  им  данных  и  собственного  заголовка 
контрольной  суммой,  т.е.  IP  получает  уже  защищенные  данные.  Т.е.,  если 
повредится  содержимое  IP  пакета,  ничего  страшного  не  произойдет,  ошибка 
будет обнаружена, но что будет, если повредится сам заголовок IP пакета? Для 
защиты  заголовка  IP  пакета  в  этом  самом  заголовке  присутствует  поле 
«Контрольная  сумма  заголовка»,  таким  образом,  достигается  разумный 
компромисс:  маршрутизаторы  все  равно  должны  пересчитывать  контрольную 
сумму для каждого обрабатываемого пакета, но она рассчитывается только для 

нескольких  десятков  байт  заголовка,  т.е.  вычислительная  нагрузка  на 
маршрутизатор снижена.  

О  механизме  расчета  контрольной  суммы:  в  IP  не  используется  метод 

CRC,  а  применяется  гораздо  более  примитивная  защита  –  контрольная  сумма 
заголовка рассчитывается как дополнение до единицы всех двухбайтовых слов 
заголовка. Следовательно, изменением пары подходящих бит заголовка можно 
добиться  того,  что  заголовок  поврежден,  а  контрольная  сумма  об  этом  не 
сигнализирует. Почему применен именно этот алгоритм? Вследствие его малой 
вычислительной  сложности,  в  противовес  высокой  сложности  алгоритма  CRC. 
Авторы  RFC791  декларировали,  что  впоследствии  алгоритм  вычисления 
контрольной суммы может быть изменен,  

 

 

 

This  is  a  simple  to  compute  checksum  and  experimental  evidence 

indicates it is adequate, but it is provisional and may be replaced by 
a CRC procedure, depending on further experience. 

 

но  как  это  сделать  сейчас,  когда  огромное  количество  маршрутизаторов  и 
узлов в Интернете используют именно старый алгоритм? Собственно никак. 
 

Так как поле контрольной суммы заголовка само принадлежит заголовку, 

то  для  расчета  контрольной  суммы  необходимо  для  начала  положить  поле 
контрольной суммы равным 00 00, а уже затем рассчитать контрольную сумму.  
 

 

The  checksum  field  is  the  16  bit  one's  complement  of  the  one's 

complement  sum  of  all  16  bit  words  in  the  header.    For  purposes  of 
computing the checksum, the value of the checksum field is zero. 

 

Переходим к рассмотрению двух последних слов заголовка: 

 


Copyright © 2022 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.