
488
Часть VL Перспективы исследований
рехвату и фильтрации пакетов. Другим
задачам,
таким как демультиплексирование
пакетов на потоки, может быть присвоен более низкий приоритет. Например, мо-
нитор может копировать пакеты в память или па диск после их захвата и фильтра-
ции, а второй, менее приоритетный процесс, может выполнять остальные задачи.
Для дальнейшего повышения эффективности программное обеспечение, выпол-
няющая эти задачи, но мере возможности должно избегать чтения или копирова-
ния содержимого IP-пакетов. Пакеты демультиплексируются только на основе
данных из заголовков IP и TCP, но не на основе содержимого пакетов. Доступ
к остальной части пакета может быть отложен до следующего этапа либо вообще
не осуществляться, о чем пойдет речь ниже.
14.1.4.
Восстановление упорядоченного потока
При обработке пакетов в составе потока монитор должен выполнять многие
функции получателя ТСР-накетов. В частности монитор должен обрабатывать полу-
ченные вне естествегнюго порядка, поврежденные и повторяющиеся пакеты. IP не
гарантирует надежной, упорядоченной доставки пакетов, следовательно, пакеты мо-
гут быть повреждены или повторяться. Кроме того, монитор может получать повтор-
ные пакеты, появившиеся в результате повторной передачи па стороне отправителя
ТСР-накетов. Отправитель может ошибочно предположить, что пакет был утерян, и
передать данные еще раз. Кроме того, первоначальный пакет может быть утерян
где-то между отслеживаемым каналом и ТСР-получателем. Таким образом монитор
может перехватить пакет, который никогда не достигнет предполагаемого получателя.
В любом случае монитор может получить повторные пакеты. Еще более осложняет
ситуацию то, что TCP не гарантирует, что повторно передаваемые данные будут сфор-
мированы в пакеты таким же образом, как первоначальные данные. Следовательно,
монитор не сможет легко обнаружить и удалить пакеты-дубликаты. Вместо этого мо-
нитор должен выявлять повторяющиеся области байтов в ТСР-потоке.
Как и ТСР-нолучатель, монитор пакетов может использовать информацию
ТСР-заголовков, чтобы сформировать упорядоченный поток байтов из последова-
тельности пакетов. Поврежденные пакеты могут выявляться и удаляться на основе
анализа ноля контрольной суммы в ТСР-заголовке. Поступившие вне естественного
порядка пакеты могут быть переупорядочены на основе значения поля порядкового
1юмера в ТСР-заголовке. Повторяющиеся данные могут быть выявлены на основе
порядковых гюмеров и длин сегментов. Например, рассмотрим два пакета с одинако-
выми адресами источника, получателя и номерами портов. При этом один пакет
имеет гюрядковый номер 50 и длину 10, а другой пакет имеет порядковый помер 55
и длину 20. Последние пять байтов в первом пакете перекрываются с первыми пя-
тью байтами второго пакета. При обработке данных в этом потоке монитор должен
учесть эти пять байтов один раз, отвергнув последние пять байтов первого пакета
или первые пять байтов второго пакета. В других случаях, когда один пакет полно-
стью гюглощен другим, монитор может отвергнуть избыточный пакет.
В определенный момент монитору потребуется определить, что поток завершен.
Возможность поступления пакетов не в том порядке и повторная передача пакетов
затрудняют этот процесс. Поток считается завершенным, если он имеет начало, ко-
нец и все, что находится между ними. Таким образом, поток должен представлять
собой законченное ТСР-соединение с пакетом SYN, пакетом FIN или RST и пол-
ным объемом данных. Количество байтов, ожидаемое между SYN и FIN/RST, мо-
жет быть определено на основе порядковых номеров в пакетах SYN и FIN/RST.
Однако поток может не удовлетворять этим трем критериям. Монитор мог пропус-