Вероятность нахождения TCP-пакетов с одинаковой полезной нагрузкой?
-
09-06-2019 - |
Вопрос
Ранее сегодня у меня была дискуссия с разработчиком о повторной идентификации TCP-пакетов, отправляющихся по определенному интерфейсу с той же полезной нагрузкой.Он сказал мне, что вероятность нахождения TCP-пакета с одинаковой полезной нагрузкой (даже если одни и те же данные отправляются несколько раз) очень мала из-за способа построения TCP-пакетов на системном уровне.Я знал, что это может быть так из-за настроек MTU системы (обычно 1500 байт) и т.д., но на какую статистику вероятности я действительно смотрю?Существуют ли какие-либо конкретные протоколы, которые облегчили бы идентификацию соответствующих полезных нагрузок?
Решение
Редактировать:Извините, моя первоначальная идея была нелепой.
Вы меня заинтересовали, поэтому я немного погуглил и нашел это.Если бы вы хотели написать свой собственный инструмент, вам, вероятно, пришлось бы проверять каждую полезную нагрузку, самым простым способом, вероятно, было бы использовать какой-нибудь хэш / контрольную сумму для проверки идентичных полезных нагрузок.Просто убедитесь, что вы проверяете полезную нагрузку, а не весь пакет.
Что касается статистики, то мне придется довериться кому-то с большими знаниями о работе TCP.
Другие советы
Уникальность полезной нагрузки определяет протокол, работающий поверх tcp, а не сам протокол tcp.
Например, вы можете наивно полагать, что все HTTP-запросы будут идентичны при запросе домашней страницы сервера, но строки referrer и user agent делают полезную нагрузку разной.
Аналогично, если ответ генерируется динамически, он может содержать заголовок даты:
Дата:Пт, 12 сентября 2008 г. 10:44:27 GMT
Таким образом, это сделает полезную нагрузку ответа другой.Однако последующие полезные загрузки могут быть идентичными, если содержимое статично.
Имейте в виду, что фактические пакеты будут отличаться из-за разных порядковых номеров, которые должны быть увеличивающимися и псевдослучайными.
Крис прав.Более конкретно, две или три части информации в заголовке пакета должны отличаться:
- порядковый номер (который предполагается непредсказуемым), который is увеличивается с увеличением количества переданных и принятых байт.
- временная метка - поле, содержащее две временные метки (хотя это поле является необязательным).
- контрольная сумма, поскольку как полезная нагрузка и заголовок заполняются контрольные суммы, включая изменяющийся порядковый номер.
Отправка одной и той же полезной нагрузки, вероятно, довольно распространена (особенно если вы используете какую-то сетевую службу).Если вы имеете в виду отправку одного и того же сегмента tcp (заголовок и все) или всего сетевого пакета (ip и выше), то вероятность существенно снижается.