Использование существует и проверьте имя пользователя
select id,name
from table t1
where exists ( select 1 from table t2 where t1.name=t2.name
having count(*)=1
)
Когда соединение TCP устанавливается, каждая сторона генерирует случайное число как свой начальный порядковый номер. Это - решительно случайное число: существуют проблемы безопасности, если кто-либо в Интернете может предположить порядковый номер, поскольку они могут легко подделать пакеты для введения в поток TCP.
После этого, для каждого байта передал порядковый номер, увеличит 1. Поле ACK является порядковым номером с другой стороны, переданной обратно для подтверждения приема.
RFC 793, исходная спецификация протокола TCP, может очень помочь.
Если я понимаю Вас правильно - Вы пытаетесь предпринять атаку прогноза SEQ TCP. Если это так, Вы захотите изучить специфические особенности Начального генератора Порядкового номера своей целевой ОС.
Были широко разглашенные уязвимости в в значительной степени wrt всей главной ОС свои генераторы ISN, являющиеся предсказуемым. Я не следовал за осадками тесно, но мое понимание - то, что большинство поставщиков выпустило патчи для рандомизации их инкрементов ISN.
Кажется, что остальная часть ответов, объясненных в значительной степени все о том, где найти подробную и официальную информацию о ACK, а именно, TCP RFC
Вот более практическая и "легкая понятая" страница, которую я нашел, когда я делал подобные реализации, которые могут также помочь Анализу TCP - Раздел 2: Последовательность и Числа Подтверждения
Раздел RFC 793 3,3 порядковых номера покрытий. В прошлый раз, когда я написал код на том уровне, я думаю, что мы просто сохранили переиграть счетчик для порядковых номеров, которые сохранились.
Эти значения ссылаются на ожидаемые смещения запуска полезной нагрузки для пакета относительно начального порядкового номера для соединения.
Порядковый номер (32 бита) – имеет двойную роль, Если флаг SYN установлен, то это - начальный порядковый номер. Порядковый номер фактического первого байта данных затем будет этим порядковым номером плюс 1. Если флаг SYN не установлен, то это - порядковый номер первого байта данных
Число подтверждения (32 бита) – если флаг ACK установлен затем, значение этого поля является следующим ожидаемым байтом, который ожидает получатель.
Числа случайным образом сгенерированы с обеих сторон, затем увеличенный количеством октетов (байты) отправляют.
Инкремент порядковых номеров после соединения устанавливается. Начальный порядковый номер на новом соединении идеально выбран наугад, но много ОС имеет некоторый полуслучайный алгоритм. RFC является лучшим местом для обнаружения большего количества TCP RFC.
У меня такая же задача.
Сначала генерируется случайным образом начальный номер последовательности (0-4294967297).
Затем получатель подсчитает длину полученных данных и отправит отправителю ACK seq# + length = x
. После этого последовательность будет равна x, и отправитель пошлет данные. Аналогично получатель посчитает длину x + length = y
и отправит ACK в виде y
и так далее... Так генерируется seq/ack...
Если вы хотите показать это на практике, попробуйте просмотреть пакет в Wireshark и проследить за TCP-потоком и увидеть сценарий...