TCP: Как seq / ack сгенерированные числа?

Использование существует и проверьте имя пользователя

   select id,name 
    from table t1 
   where exists ( select 1 from table t2 where t1.name=t2.name

    having count(*)=1
)
16
задан Wooble 4 May 2012 в 18:47
поделиться

8 ответов

Когда соединение TCP устанавливается, каждая сторона генерирует случайное число как свой начальный порядковый номер. Это - решительно случайное число: существуют проблемы безопасности, если кто-либо в Интернете может предположить порядковый номер, поскольку они могут легко подделать пакеты для введения в поток TCP.

После этого, для каждого байта передал порядковый номер, увеличит 1. Поле ACK является порядковым номером с другой стороны, переданной обратно для подтверждения приема.

RFC 793, исходная спецификация протокола TCP, может очень помочь.

24
ответ дан 30 November 2019 в 16:36
поделиться

Если я понимаю Вас правильно - Вы пытаетесь предпринять атаку прогноза SEQ TCP. Если это так, Вы захотите изучить специфические особенности Начального генератора Порядкового номера своей целевой ОС.

Были широко разглашенные уязвимости в в значительной степени wrt всей главной ОС свои генераторы ISN, являющиеся предсказуемым. Я не следовал за осадками тесно, но мое понимание - то, что большинство поставщиков выпустило патчи для рандомизации их инкрементов ISN.

4
ответ дан 30 November 2019 в 16:36
поделиться

Кажется, что остальная часть ответов, объясненных в значительной степени все о том, где найти подробную и официальную информацию о ACK, а именно, TCP RFC

Вот более практическая и "легкая понятая" страница, которую я нашел, когда я делал подобные реализации, которые могут также помочь Анализу TCP - Раздел 2: Последовательность и Числа Подтверждения

2
ответ дан 30 November 2019 в 16:36
поделиться

Раздел RFC 793 3,3 порядковых номера покрытий. В прошлый раз, когда я написал код на том уровне, я думаю, что мы просто сохранили переиграть счетчик для порядковых номеров, которые сохранились.

1
ответ дан 30 November 2019 в 16:36
поделиться

Эти значения ссылаются на ожидаемые смещения запуска полезной нагрузки для пакета относительно начального порядкового номера для соединения.

Ссылка

Порядковый номер (32 бита) – имеет двойную роль, Если флаг SYN установлен, то это - начальный порядковый номер. Порядковый номер фактического первого байта данных затем будет этим порядковым номером плюс 1. Если флаг SYN не установлен, то это - порядковый номер первого байта данных

Число подтверждения (32 бита) – если флаг ACK установлен затем, значение этого поля является следующим ожидаемым байтом, который ожидает получатель.

1
ответ дан 30 November 2019 в 16:36
поделиться

Числа случайным образом сгенерированы с обеих сторон, затем увеличенный количеством октетов (байты) отправляют.

1
ответ дан 30 November 2019 в 16:36
поделиться

Инкремент порядковых номеров после соединения устанавливается. Начальный порядковый номер на новом соединении идеально выбран наугад, но много ОС имеет некоторый полуслучайный алгоритм. RFC является лучшим местом для обнаружения большего количества TCP RFC.

0
ответ дан 30 November 2019 в 16:36
поделиться

У меня такая же задача. Сначала генерируется случайным образом начальный номер последовательности (0-4294967297). Затем получатель подсчитает длину полученных данных и отправит отправителю ACK seq# + length = x. После этого последовательность будет равна x, и отправитель пошлет данные. Аналогично получатель посчитает длину x + length = y и отправит ACK в виде y и так далее... Так генерируется seq/ack...

Если вы хотите показать это на практике, попробуйте просмотреть пакет в Wireshark и проследить за TCP-потоком и увидеть сценарий...

5
ответ дан 30 November 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: