IP-Spoofing в никсах

Как подделывать свой IP

Xakep, номер #036, стр. 036-058-2


Заголовок TCP

На каждую часть передаваемых данных назначается определенная комбинация чисел, ISS (Initial Sequence Number), которая стоит в поле SEQ, и требуется подтверждение этой комбинации чисел (ACK) c другого хоста, чтобы начался обмен данными. Все эти последовательности чисел находятся, как ты понимаешь, в заголовке TCP-пакета. ISS заключается в пределах от 0 до 4,294,967,295 и находится также в пределах 32 байт. Поле подтверждающего номера (ACK) заголовка должно соответствовать тому номеру, который требуется серваком для начала обмена данными. Кроме того, важно знать, что ACK и SEQ относятся к так называемым флажкам заголовка TCP-пакета. Эти флажки тесно взаимосвязаны: ACK=ISS+1Поговорим о других флажках в заголовке TCP-пакета. Это SYN (сам запрос на подключение), RST (прекращение подключения), PSH (постановка передаваемых данных в очередь) и FIN (конец получения данных).

Суть процесса

Ну а теперь о сути процесса создания TCP-соединения между двумя хостами. Предположим, что хосту А необходимо создать TCP-соединение с хостом В. Это происходит в 3 стадии. Тогда А посылает на В следующее сообщение:

1. A -> B:SYN,ISSa

Это означает, что в передаваемом A сообщении установлен бит SYN (synchronize sequence number), а в поле Sequence Number установлено начальное 32-битное значение ISSa (Initial Sequence Number).

В отвечает:

2. B -> A: SYN, ACK, ISSb, ACK(ISSa+1)

В ответ на полученный от А запрос В отвечает сообщением, в котором установлен бит SYN и установлен бит ACK; в поле Sequence Number хостом В устанавливается свое начальное значение счетчика - ISSb; поле Acknowledgment Number содержит значение ISSa, полученное в первом пакете от хоста А и увеличенное на единицу (помнишь, я говорил про то, что они взаимосвязаны? :)

Назад на стр. 036-058-1  Содержание  Вперед на стр. 036-058-3