Введение
Доброкачественное моделирование протокола
Протокольная эмуляция используется в передаче данных для повышения производительности в ситуациях, когда существующий протокол оказывается недостаточным, например, из-за больших задержек или высокой частоты ошибок.
Методы подделки
В большинстве случаев применения спуфинга протокола коммуникационное устройство, такое как модем или маршрутизатор, имитирует ("спуфит") удалённую конечную точку соединения с локально подключённым хостом, при этом используя более подходящий протокол для связи с совместимым удалённым устройством, которое выполняет аналогичный спуфинг на другом конце канала связи.
Подделка передачи файлов
Протоколы коррекции ошибок и передачи файлов обычно работают путем вычисления контрольной суммы или CRC для блока данных, известного как пакет, и передачи полученного числа в конце пакета. На другом конце соединения приемник пересчитывает это число на основе полученных данных и сравнивает результат с тем, что было отправлено с удаленной машины. Если оба значения совпадают, пакет был передан правильно, и приемник посылает ACK (подтверждение), чтобы сообщить о готовности принять следующий пакет. Время передачи ACK обратно отправителю зависит от характеристик телефонной линии, а не от скорости модема, и обычно составляет около 1/10 секунды для коротких соединений и может быть значительно больше для линий связи большой протяженности или сетей передачи данных, таких как X.25. Для протокола, использующего небольшие пакеты, эта задержка может превышать время, необходимое для отправки самого пакета. Например, протокол UUCP "g" и Kermit используют пакеты размером 64 байта, отправка которых на линии со скоростью 9600 бит/с занимает около 1/20 секунды. XMODEM использовал немного больший пакет размером 128 байт, отправка которого занимает около 1/10 секунды. Следующий пакет данных не может быть отправлен до получения ACK для предыдущего пакета. В случае XMODEM это означает, что для завершения полного цикла обработки одного пакета требуется минимум 2/10 секунды. Следовательно, общая скорость передачи данных составляет лишь половину теоретического максимума, что соответствует 50% эффективности канала. "Спофинг" протокола решает эту проблему, позволяя локальному модему распознавать факт передачи данных, часто путем поиска заголовков пакетов. Обнаружив их, модем определяет конец пакета, обычно зная количество байтов в пакете. Например, пакет XMODEM содержит 132 байта, включая 128 байтов фактических данных, а также заголовок и контрольную сумму. Как только модем обнаруживает конец пакета, он немедленно отправляет "поддельное" сообщение ACK обратно хосту. Это заставляет локальный компьютер немедленно отправить следующий пакет, избегая задержки, связанной с ожиданием ACK от удаленной машины. Данные для нескольких пакетов хранятся во внутреннем буфере, пока модем отправляет их на удаленную машину. Это позволяет отправлять пакеты непрерывно, значительно повышая эффективность канала. Однако это также требует, чтобы соединение между двумя системами было безошибочным, поскольку модем уже подтверждает пакеты до их фактической отправки. Обычно это решалось с помощью протокола коррекции ошибок на уровне модема, например, сетевых протоколов Microcom. "Спофинг" протокола также широко использовался в сочетании с другой особенностью ранних высокоскоростных модемов. До появления эхоподавления в протоколах V.32 и более поздних, высокоскоростные модемы обычно имели очень медленный "обратный канал" для отправки таких сообщений, как ACK, обратно отправителю. Например, модем TrailBlazer со скоростью ~18 500 бит/с мог отправлять до 35 пакетов UUCP в секунду приемнику, но обратный канал обеспечивал скорость всего 75 бит/с, чего было недостаточно для передачи 35 байтов (280 бит) сообщений ACK, генерируемых удаленным хостом. В этом случае "спофинг" позволял отправляющему модему продолжать отправлять пакеты с максимально возможной скоростью. Одновременно модем на удаленном принимающем конце отбрасывал пакеты ACK, генерируемые программным обеспечением локального компьютера, сохраняя пропускную способность обратного канала. Поскольку эффективность канала стала серьезной проблемой только при скоростях выше 2400 бит/с, а модемы, способные работать быстрее, обычно обладали достаточной вычислительной мощностью, "спофинг" протокола в основном использовался в этих более высокоскоростных системах.
TCP-подделывание
TCP-соединения могут испытывать ограничения производительности из-за недостаточного размера окна для каналов с высокой пропускной способностью и большой задержкой распространения сигнала, а на каналах с большой задержкой, таких как каналы связи через геостационарные спутники, алгоритм медленного старта TCP значительно замедляет установку соединения. Подменяющий маршрутизатор завершает TCP-соединение локально и преобразует TCP в протоколы, оптимизированные для работы с большими задержками в спутниковых каналах, такие как XTP.
Подделка данных в РПП/ППП
SAP и RIP периодически транслируют информацию о сети, даже если таблицы маршрутизации/услуг не изменились. Каналы WAN с выбором номера по требованию в сетях IPX, таким образом, никогда не переходят в неактивное состояние и не отключаются. Злоумышленнический маршрутизатор или модем будет перехватывать широковещательные сообщения SAP и RIP и повторно транслировать объявления из собственной таблицы маршрутизации/услуг, которая обновляется только при активации канала по другим причинам.