По номеру птс узнать владельца


Проверка автомобиля

Поиск по всем разделам

Госавтоинспекция

Участникам движения

Организациям

Сервисы

Новости

Контакты

Госфункции

Социальные кампании

Понимание последовательностей TCP и номеров подтверждения

Если вы читаете это, то, скорее всего, вы уже знакомы с печально известным «трехсторонним рукопожатием» TCP или «SYN, SYN / ACK, ACK». К сожалению, на этом обучение TCP заканчивается для многих сетей. Несмотря на свой возраст, протокол TCP является относительно сложным протоколом, и его стоит хорошо знать. Цель этой статьи - помочь вам лучше изучить последовательность TCP и номера подтверждения в анализаторе пакетов Wireshark.

Прежде чем мы начнем, обязательно откройте пример захвата в Wireshark и подыграйте.

Пример захвата содержит один HTTP-запрос к веб-серверу, на котором клиентский веб-браузер запрашивает один файл изображения, а сервер возвращает ответ HTTP / 1.1 200 (OK), который включает запрошенный файл. Вы можете щелкнуть правой кнопкой мыши на любом из пакетов TCP в этом перехвате и выбрать . Следуйте TCP-потоку , чтобы открыть необработанное содержимое потока TCP в отдельном окне для проверки. Трафик с клиента отображается красным, а трафик с сервера - синим.

Трехстороннее рукопожатие

TCP использует несколько флагов или 1-битных логических полей в своем заголовке для управления состоянием соединения.Вот три, которые нас больше всего интересуют:

  • SYN - (Синхронизировать) Инициирует соединение
  • FIN - (Окончательный вариант) Чисто завершает соединение
  • ACK - подтверждает полученные данные

Как мы увидим, пакет может иметь несколько установленных флагов.

Выберите пакет № 1 в Wireshark и разверните анализ уровня TCP в средней панели, а затем разверните поле «Флаги» в заголовке TCP. Здесь мы можем видеть все флаги TCP, сломанные.Обратите внимание, что флаг SYN включен (установлен в 1).

Теперь сделайте то же самое для пакета № 2. Обратите внимание, что для него установлены два флага: ACK для подтверждения получения пакета SYN клиента и SYN для указания того, что сервер также хочет установить TCP-соединение.

Пакет № 3 от клиента имеет только установленный флаг ACK. Эти три пакета завершают начальное трехстороннее рукопожатие TCP.

порядковых номеров и номеров подтверждения

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

Когда хост инициирует сеанс TCP, его начальный порядковый номер фактически является случайным; это может быть любое значение от 0 до 4 294 967 295 включительно. Однако анализаторы протоколов, такие как Wireshark, обычно отображают относительно последовательности и номера подтверждения вместо фактических значений.Эти числа относятся к начальному порядковому номеру этого потока. Это удобно, так как гораздо легче отслеживать относительно небольшие, предсказуемые числа, а не фактические числа, отправленные по проводам.

Например, начальный относительный порядковый номер, показанный в пакете # 1, равен 0 (естественно), в то время как ASCII-декодирование на третьей панели показывает, что фактический порядковый номер равен 0xf61c6cbe или 4129057982 десятичному.

Отображение относительных порядковых номеров можно при желании отключить, перейдя к Редактировать> Предпочтения... и отмена проверки Относительные порядковые номера и масштабирование окна в соответствии с настройками протокола TCP. Однако имейте в виду, что в оставшейся части этой статьи будут указаны только относительные последовательности и номера подтверждения.

Чтобы лучше понять, как порядковые номера и номера подтверждения используются во время сеанса TCP, мы можем использовать встроенную в Wireshark возможность построения потоковых графиков. Перейдите к Статистика> График потока ... , выберите Поток TCP и нажмите ОК .Wireshark автоматически создает графическое резюме потока TCP.

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

Мы можем использовать эту потоковую диаграмму, чтобы лучше понять, как работают последовательности и номера подтверждения.

Пакет № 1

Каждая сторона сеанса TCP начинается с (относительного) порядкового номера ноль. Аналогично, номер подтверждения также равен нулю, поскольку еще не существует дополнительной стороны разговора, которую следует подтверждать.

(Примечание. Версия Wireshark, используемая для этой демонстрации, 1.2.7, показывает номер подтверждения в виде, по-видимому, случайного числа. Это считается программной ошибкой; начальный номер подтверждения сеанса всегда должен быть равен нулю, как вы можете посмотрите из проверки шестнадцатеричного дампа пакета.)

Пакет № 2

Сервер отвечает клиенту с порядковым номером ноль, так как это его первый пакет в этом сеансе TCP и относительный номер подтверждения 1. Номер подтверждения устанавливается в 1, чтобы указать получение клиентского флага SYN в Пакет № 1.

Обратите внимание, что номер подтверждения был увеличен на 1, хотя клиент еще не отправил данные полезной нагрузки. Это связано с тем, что наличие флага SYN или FIN в полученном пакете вызывает увеличение на 1 в последовательности.(Это не мешает учету данных полезной нагрузки, поскольку пакеты с установленным флагом SYN или FIN не несут полезной нагрузки.)

Пакет № 3

Как и в пакете № 2, клиент отвечает на нулевой порядковый номер сервера с номером подтверждения 1. Клиент включает свой собственный порядковый номер 1 (увеличивается с нуля из-за SYN).

На этом этапе порядковый номер для обоих хостов равен 1. Это начальное приращение 1 для порядковых номеров обоих хостов происходит во время установления всех сеансов TCP.

Пакет № 4

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

Обратите внимание, что полезная нагрузка этого пакета составляет 725 байт.

Пакет № 5

Этот пакет отправляется сервером исключительно для подтверждения данных, отправленных клиентом в пакете № 4, в то время как верхние уровни обрабатывают HTTP-запрос.Обратите внимание, что номер подтверждения увеличился на 725 (длина полезной нагрузки в пакете № 4) до 726; например, «я получил 726 байтов». Порядковый номер сервера остается на 1.

Пакет № 6

Этот пакет отмечает начало HTTP-ответа сервера. Его порядковый номер по-прежнему равен 1, поскольку ни один из его пакетов до этого не содержал полезную нагрузку. Этот пакет несет полезную нагрузку в 1448 байтов.

Пакет № 7

Порядковый номер клиента был увеличен до 726 из-за последнего отправленного им пакета.Получив от сервера 1448 байт данных, клиент увеличивает свой номер подтверждения с 1 до 1449.

Для большей части захвата мы увидим, что этот цикл повторяется. Порядковый номер клиента останется неизменным на уровне 726, потому что у него нет данных для передачи, кроме первоначального 725-байтового запроса. Порядковый номер сервера, напротив, продолжает расти, поскольку он отправляет больше сегментов HTTP-ответа.

Снос

Пакет № 38

После подтверждения последнего сегмента данных с сервера клиент обрабатывает HTTP-ответ в целом и решает, что дальнейшая связь не требуется.Пакет № 38 отправляется клиентом с установленным флагом FIN. Его номер подтверждения остается таким же, как в предыдущем пакете (# 37).

Пакет № 39

Сервер подтверждает желание клиента разорвать соединение, увеличив номер подтверждения на единицу (аналогично тому, что было сделано в пакете № 2 для подтверждения флага SYN) и также установив флаг FIN.

Пакет № 40

Клиент отправляет свой последний порядковый номер 727 и подтверждает пакет FIN сервера, увеличивая номер подтверждения на 1 до 22952.

В этот момент оба хоста прекратили сеанс и могут высвободить программные ресурсы, выделенные для его обслуживания.

Устранение неполадок подключения TCP / IP - Windows Client Management
  • 5 минут, чтобы прочитать

В этой статье

Вы можете столкнуться с ошибками подключения в конце приложения или ошибками тайм-аута. Наиболее распространенные сценарии включают подключение приложения к серверу базы данных, ошибки тайм-аута SQL, ошибки тайм-аута приложения BizTalk, сбои протокола удаленного рабочего стола (RDP), сбои доступа к общим файлам или общее подключение.

Когда вы подозреваете, что проблема в сети, вы собираете сетевую трассировку. Трассировка сети затем будет отфильтрована. Во время устранения неполадок ошибок подключения вы можете встретить сброс TCP при захвате сети, который может указывать на проблему с сетью.

  • TCP определен как ориентированный на соединение и надежный протокол. Одним из способов, которым TCP обеспечивает это, является процесс рукопожатия. Установление сеанса TCP началось бы с трехстороннего рукопожатия, за которым следовала передача данных, а затем с четырехсторонним закрытием.Закрытие с 4 путями, когда отправитель и получатель договариваются о закрытии сеанса, называется изящным закрытием . После 4-стороннего закрытия сервер будет предоставлять 4 минуты времени (по умолчанию), в течение которых должны обрабатываться любые ожидающие пакеты в сети, это состояние TIME_WAIT. Как только состояние TIME_WAIT выполнено, все ресурсы, выделенные для этого соединения, освобождаются.

  • Сброс TCP - это внезапное закрытие сеанса, которое приводит к немедленному освобождению ресурсов, выделенных для соединения, и стирается вся другая информация о соединении.

  • Сброс TCP определяется флагом RESET в заголовке TCP, установленном на 1 .

Сетевая трассировка на источнике и месте назначения, которая поможет вам определить поток трафика и посмотреть, в какой точке наблюдается сбой.

В следующих разделах описаны некоторые из сценариев, когда вы увидите RESET.

Пакет капель

Когда один одноранговый узел TCP отправляет пакеты TCP, для которых нет ответа от другого конца, одноранговый узел TCP заканчивает тем, что повторно передает данные, и когда нет полученного ответа, он завершает сеанс, отправляя ACK RESET (имеется в виду, что приложение подтверждает любые данные, которыми обменивались до сих пор, но из-за сброса пакета, закрывающего соединение).

Одновременные сетевые трассировки на источнике и месте назначения помогут вам проверить это поведение, когда на стороне источника вы увидите повторную передачу пакетов, а в месте назначения ни один из этих пакетов не будет виден. Это будет означать, что сетевое устройство между источником и назначением отбрасывает пакеты.

Если первоначальное TCP-квитирование не удается из-за отбрасывания пакетов, вы увидите, что пакет TCP SYN ретранслируется только 3 раза.

Сторона источника, подключающаяся к порту 445:

Сторона назначения: применяя тот же фильтр, вы не видите пакетов.

Для остальных данных TCP будет повторно передавать пакеты 5 раз.

Источник 192.168.1.62 боковой след:

Пункт назначения 192.168.1.2 боковой след:

Вы не увидите ни одного из вышеперечисленных пакетов. Привлеките свою сетевую команду для расследования различных скачков и выясните, не является ли какой-либо из них потенциально причиной падений в сети.

Если вы видите, что пакеты SYN достигают пункта назначения, но пункт назначения по-прежнему не отвечает, проверьте, находится ли порт, к которому вы пытаетесь подключиться, в состоянии прослушивания.(Вывод Netstat поможет). Если порт прослушивает, но ответа по-прежнему нет, может произойти сброс wfp.

Неверный параметр в заголовке TCP

Такое поведение наблюдается, когда пакеты модифицируются в сети промежуточными устройствами, а TCP на принимающей стороне не может принять пакет, например, изменяемый порядковый номер или пакеты, которые повторно воспроизводятся промежуточным устройством путем изменения последовательности. число. Опять же, одновременная сетевая трассировка на источнике и получателе сможет сообщить вам, если какой-либо из заголовков TCP был изменен.Начните со сравнения трассировки источника и трассы назначения, вы сможете заметить, если есть изменения в самих пакетах или если какие-либо новые пакеты достигают пункта назначения от имени источника.

В этом случае вам снова понадобится помощь сетевой команды для определения любого такого устройства, которое модифицирует пакеты или повторно воспроизводит пакеты по назначению. Наиболее распространенными являются устройства RiverBed или WAN-ускорители.

Сброс на стороне приложения

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

Сброс приложения - это тот, где вы видите флаг подтверждения, установленный на 1 вместе с флагом сброса. Это будет означать, что сервер подтверждает получение пакета, но по какой-то причине он не будет принимать соединение. Это когда приложение, которое получило пакет, не понравилось то, что оно получило.

На приведенных ниже снимках экрана вы видите, что пакеты, видимые в источнике и месте назначения, являются одинаковыми без каких-либо изменений или каких-либо отбрасываний, но вы видите явный сброс, отправленный пунктом назначения источнику.

Исходная сторона

На трассе стороны назначения

Вы также видите пакет флага ACK + RST в случае, когда отправляется пакет SYN установления TCP. Пакет TCP SYN отправляется, когда клиент хочет подключиться к определенному порту, но если пункт назначения / сервер по какой-либо причине не хочет принять пакет, он отправит пакет ACK + RST.

Приложение, которое вызывает сброс (определяется номерами портов), должно быть исследовано, чтобы понять, что вызывает сброс соединения.

Примечание

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

  10.10.10.1 10.10.10.2 UDP UDP: SrcPort = 49875, DstPort = 3343 10.10.10.2 10.10.10.1 ICMP ICMP: сообщение о недоступности пункта назначения, порт недоступен, 10.10.10.2: 3343  

Во время устранения неполадок с подключением вы также можете увидеть в трассировке сети, что машина получает пакеты, но не отвечает на них. В таких случаях может быть падение на уровне сервера. Вы должны включить аудит брандмауэра на машине, чтобы понять, отбрасывает ли пакет локальный брандмауэр.

  auditpol / set / подкатегория: «Отбрасывание пакета фильтрации платформы» / success: enable / fail: enable  

Затем можно просмотреть журналы событий безопасности, чтобы увидеть, нет ли отбрасывания пакетов на конкретном IP-адресе порта и ассоциированном с ним идентификаторе фильтра.

Теперь запустите команду netsh wfp show state , это сгенерирует файл wfpstate.xml. Как только вы откроете этот файл и отфильтруете его по идентификатору, который вы найдете в приведенном выше событии (2944008), вы сможете увидеть имя правила брандмауэра, связанное с этим идентификатором, которое блокирует соединение.

,

номеров последовательностей и подтверждений TCP

На этой странице будут подробно рассмотрены номера последовательности и подтверждения. Сама цель их существования напрямую связана с тем фактом, что Интернет и, как правило, большинство сетей с коммутацией пакетов (мы вскоре объясним), а также потому, что мы почти всегда отправляем и принимаем данные, которые превышают максимальную единицу передачи (иначе MTU). - проанализировано в разделах 5 и 6), что составляет 1500 в большинстве сетей.

Давайте посмотрим на поля, которые мы собираемся проанализировать:

Как видите, порядковый номер переходит к номеру подтверждения.

Мы собираемся объяснить, как эти числа увеличиваются и что они означают, как различные операционные системы обрабатывают их по-разному и, наконец, каким образом эти числа могут стать угрозой безопасности для тех, кому требуется надежная защищенная сеть.

TCP - протокол, ориентированный на соединение

Поля «Последовательность» и «Подтверждение» являются двумя из многих функций, которые помогают нам классифицировать TCP как протокол, ориентированный на соединение. Таким образом, когда данные отправляются через соединение TCP, они помогают удаленным узлам отслеживать соединение и гарантировать, что ни один пакет не был потерян на пути к месту назначения.

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

Еще одним моментом, который стоит упомянуть, является тот факт, что порядковые номера генерируются по-разному в каждой операционной системе. Используя специальные алгоритмы (а иногда и слабые), операционная система будет генерировать эти числа, которые используются для отслеживания отправленных или полученных пакетов, и, поскольку поля «Последовательность» и «Подтверждение» являются 32-битными, существует 2 ^ 32 = 4 294 967 296 возможностей генерировать другое число!

Начальный порядковый номер (ISN)

Когда двум хостам необходимо передать данные с использованием транспортного протокола TCP, создается новое соединение.Это касается первого хоста, который желает инициировать соединение, чтобы сгенерировать так называемый начальный порядковый номер (ISN), который по сути является первым порядковым номером, который содержится в поле «Последовательность», которое мы смотрим. ISN всегда был предметом проблем безопасности, поскольку он, похоже, является излюбленным способом хакеров для «перехвата» TCP-соединений.

Хотите верьте, хотите нет, но перехват нового TCP-соединения - это то, чего опытный хакер может с тревогой достичь, сделав всего несколько попыток.Корень этой проблемы безопасности начинается с того, как генерируется ISN.

Каждая операционная система использует свой собственный алгоритм для создания ISN для каждого нового соединения, поэтому все, что нужно сделать хакеру, - это выяснить или, скорее, предсказать, какой алгоритм используется конкретной операционной системой, сгенерировать следующий предсказанный порядковый номер и место это внутри пакета, который отправляется на другой конец. Если злоумышленник успешен, принимающая сторона одурачена и считает, что пакет является действительным, исходящим от хоста, который инициировал соединение.

В то же время злоумышленник запустит флуд-атаку на хост, инициировавший TCP-соединение, оставив его занятым, чтобы не отправлять пакеты на удаленный хост, с которого он пытался инициировать соединение.

Вот краткая иллюстрация вышеупомянутой атаки:

Как описано, хакер должен найти алгоритм ISN, выбрав начальные порядковые номера, используемые во всех новых соединениях хостом A. Как только это выполнено, и хакер знает алгоритм, и он готов начать свою атаку:

Синхронизация имеет решающее значение для хакера, поэтому он отправляет свой первый поддельный пакет на сервер интернет-банкинга и одновременно начинает заполнять узел А мусорными данными, чтобы использовать пропускную способность и ресурсы узла.Таким образом, узел А не может справиться с данными, которые он получает, и не будет отправлять пакеты на сервер интернет-банкинга.

Поддельный пакет, отправленный на сервер интернет-банкинга, будет содержать действительные заголовки, то есть он будет выглядеть так, как будто он исходит от IP-адреса хоста А, и будет отправлен на правильный порт, который прослушивает сервер интернет-банкинга.

В Интернете было опубликовано множество отчетов, в которых рассказывается о методе, который каждая операционная система использует для создания своего ISN, и о том, насколько легко или сложно его прогнозировать.Не пугайтесь, обнаружив, что алгоритм ISN операционной системы Windows намного проще предсказать!

Программы, такие как 'nmap', на самом деле тестируют, чтобы увидеть, насколько сложно обнаружить алгоритм ISN, используемый в любой операционной системе. В большинстве случаев хакеры сначала выбирают номера ISN TCP от жертвы хоста, ища шаблоны в начальных порядковых номерах, выбранных реализациями TCP при ответе на запрос соединения. Как только шаблон найден, захват соединения, инициированного хостом, занимает считанные минуты.

Пример последовательности и номеров подтверждения

Чтобы помочь нам понять, как эти недавно введенные поля используются для отслеживания пакетов соединения, пример приведен ниже.

Прежде чем мы продолжим, мы должны отметить, что вам встретятся термины «флаг ACK» или «флаг SYN»; эти термины не следует путать с номерами последовательности и подтверждения, поскольку они являются разными полями в заголовке TCP. Снимок экрана ниже, чтобы помочь вам понять:

Вы можете видеть поля «Порядковый номер» и «Номер подтверждения», за которыми следуют флаги TCP, на которые мы ссылаемся.

Флаги TCP (светло-фиолетовая секция) будут рассмотрены на страницах, чтобы они стали более глубокими, но поскольку нам нужно работать с ними сейчас, чтобы помочь нам изучить, как работают номера последовательности и подтверждения, мы вынуждены проанализировать небольшой часть из них.

Для простоты, помните, что когда мы говорим о номерах последовательности и подтверждений, мы имеем в виду синий раздел, в то время как флаги SYN и ACK относятся к светло-фиолетовому разделу.

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

Чтобы убедиться, что мы понимаем, что здесь происходит, мы проанализируем пример шаг за шагом.

Шаг 1

Хост A хочет загрузить веб-страницу с Gateway Server . Для этого необходимо установить новое соединение между ними, чтобы Host A отправлял пакет на Gateway Server .Этот пакет имеет установленный флаг SYN и также содержит ISN, сгенерированный операционной системой хоста А , то есть 1293906975 . Поскольку Хост A инициирует соединение и не получил ответ от Gateway Server , номер Подтверждения устанавливается в ноль (0).

Короче говоря, Host A сообщает Gateway Server следующее: «Я хотел бы установить новое соединение с вами.Мой номер Sequence : 1293906975 ".

Шаг 2

Gateway Server получает запрос хоста A и генерирует ответ, содержащий его собственный сгенерированный ISN, то есть 3455719727 , и следующий номер последовательности , который он ожидает от хоста , который равен 1293906976 . Сервер также имеет набор флагов SYN и ACK , подтверждая предыдущий пакет, который он получил, и информируя Host A о своем собственном номере Sequence .

Вкратце, Gateway Server сообщает хосту A следующее: «Я подтверждаю ваш порядковый номер и ожидаю вашего следующего пакета с порядковым номером 1293906976 . Мой порядковый номер 3455719727 ».

Шаг 3

Хост A получает ответ и теперь знает порядковый номер шлюза. Он генерирует другой пакет для завершения соединения. Этот пакет имеет установленный флаг ACK и также содержит порядковый номер, который, как он ожидает, будет использоваться сервером шлюза следующим, то есть 3455719728 .

Короче говоря, Host A сообщает Gateway Server следующее: «Я подтверждаю ваш последний пакет. Порядковый номер этого пакета - 1293906976 , и это то, что вы ожидаете. Я также буду ожидать следующего пакет, который вы отправляете мне, имеет порядковый номер 3455719728 ".

Теперь кто-то может ожидать отправки следующего пакета от Gateway Server , но это не так. Возможно, вы помните, что Host A инициировал соединение, потому что он хотел загрузить веб-страницу с Gateway Server .После завершения трехстороннего рукопожатия TCP виртуальное соединение между ними уже существует, и Gateway Server готов прослушать запрос хоста A .

Учитывая это, настало время для Host A запросить нужную веб-страницу, что приводит нас к шагу № 4.

Шаг 4

На этом этапе хост A генерирует пакет с некоторыми данными и отправляет его на сервер шлюза. Данные сообщают серверу шлюза, какую веб-страницу он хотел бы отправить.

Обратите внимание, что порядковый номер сегмента в строке 4 такой же, как в строке 3, потому что ACK не занимает пространство порядкового номера.

Имейте в виду, что любые сгенерированные пакеты, которые являются просто подтверждениями (другими словами, установлен только флаг ACK и не содержат данных) для ранее принятых пакетов, никогда не увеличивают порядковый номер.

Последние заметки

Существуют и другие важные роли, которые имеют номера Sequence и Acknowledgement во время связи двух хостов.Поскольку сегменты (или пакеты) перемещаются в дейтаграммах IP, они могут быть потеряны или доставлены не по порядку, поэтому получатель использует порядковые номера для изменения порядка сегментов. Получатель собирает данные с прибывающих сегментов и восстанавливает точную копию отправляемого потока.

Если мы более подробно рассмотрим диаграмму выше, мы заметим, что номер Подтверждения TCP указывает порядковый номер следующего сегмента, ожидаемого получателем. Просто вернитесь к шагу 2, и вы поймете, что я имею в виду.

Резюме

На этой странице введены поля «Последовательность» и «Подтверждение» в заголовке TCP. Мы увидели, как хакеры перехватывают соединения, обнаруживая алгоритмы, используемые для создания ISN, и шаг за шагом изучали способ увеличения числа последовательностей и подтверждений.

На следующей странице рассматривается поле длины заголовка TCP, поэтому сделайте небольшой перерыв, если это необходимо, и давайте продолжим!


Следующая: Длина заголовка - Раздел 3

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

Чтобы убедиться, что мы понимаем, что здесь происходит, мы проанализируем пример шаг за шагом.

Шаг 1

Хост А хочет загрузить веб-страницу с сервера шлюза. Для этого необходимо установить новое соединение между ними, чтобы узел A отправлял пакет на сервер шлюза.Этот пакет имеет установленный флаг SYN и также содержит ISN, сгенерированный операционной системой хоста A, то есть 1293906975. Поскольку хост A инициирует соединение и не получил ответ от сервера шлюза, номер подтверждения устанавливается равным нулю ( 0).

Короче говоря, хост A сообщает серверу шлюза следующее: «Я хотел бы установить новое соединение с вами. Мой порядковый номер 1293906975».

Шаг 2

Сервер шлюза принимает запрос хоста A и генерирует ответ, содержащий его собственный сгенерированный ISN, то есть 3455719727, и следующий порядковый номер, который он ожидает от хоста A, который равен 1293906976.На сервере также установлены флаги SYN & ACK, подтверждающие предыдущий пакет, который он получил, и информирующий узел A о своем собственном порядковом номере.

Короче говоря, сервер шлюза сообщает хосту A следующее: «Я подтверждаю ваш порядковый номер и ожидаю вашего следующего пакета с порядковым номером 1293906976. Мой порядковый номер 3455719727».

Шаг 3

Хост A получает ответ и теперь знает порядковый номер шлюза.Он генерирует другой пакет для завершения соединения. Этот пакет имеет установленный флаг ACK и также содержит порядковый номер, который, как он ожидает, будет использоваться сервером шлюза следующим, то есть 3455719728.

Короче говоря, узел A сообщает серверу шлюза следующее: «Я подтверждаю ваш последний пакет. Порядковый номер этого пакета - 1293906976, и это то, что вы ожидаете. Я также буду ожидать следующего пакета, который вы отправите мне» порядковый номер 3455719728 ".

Теперь кто-то может ожидать, что следующий пакет будет отправлен с сервера шлюза, но это не так.Возможно, вы помните, что хост A инициировал соединение, потому что он хотел загрузить веб-страницу с сервера шлюза. Поскольку трехстороннее TCP-квитирование было завершено, виртуальное соединение между ними теперь существует, и сервер шлюза готов прослушать запрос хоста A.

Имея это в виду, теперь пришло время для хоста A запросить нужную веб-страницу, что приводит нас к шагу № 4.

Шаг 4

На этом этапе хост A генерирует пакет с некоторыми данными и отправляет его на сервер шлюза.Данные сообщают серверу шлюза, какую веб-страницу он хотел бы отправить.

Обратите внимание, что порядковый номер сегмента в строке 4 такой же, как в строке 3, поскольку ACK не занимает пространство порядкового номера.

Имейте в виду, что любые сгенерированные пакеты, которые являются просто подтверждениями (другими словами, только установленный флаг ACK и не содержат данных) для ранее принятых пакетов, никогда не увеличивают порядковый номер.

Последние заметки

Существуют и другие важные роли, которые имеют номера последовательности и подтверждения во время связи двух хостов.Поскольку сегменты (или пакеты) перемещаются в дейтаграммах IP, они могут быть потеряны или доставлены не по порядку, поэтому получатель использует порядковые номера для изменения порядка сегментов. Получатель собирает данные с прибывающих сегментов и восстанавливает точную копию отправляемого потока.

Если мы более подробно рассмотрим диаграмму выше, мы заметим, что номер подтверждения TCP указывает порядковый номер следующего сегмента, ожидаемого получателем. Просто вернитесь к шагу 2, и вы поймете, что я имею в виду.

Резюме

На этой странице введены поля «Последовательность» и «Подтверждение» в заголовке TCP. Мы увидели, как хакеры перехватывают соединения, обнаруживая алгоритмы, используемые для создания ISN, и шаг за шагом изучали способ увеличения числа последовательностей и подтверждений.

На следующей странице рассматривается поле длины заголовка TCP, поэтому сделайте небольшой перерыв, если это необходимо, и давайте продолжим!

Далее - Анализ TCP - Раздел 3: Длина заголовка

,

Смотрите также