Что такое TCP?
TCP (протокол управления передачей) - это протокол транспортного уровня, ориентированный на соединение.
Назначение этой статьи:
Понять весь TCP - непростая задача. В этой статье мы попытаемся разобраться в основных пакетах обмена TCP через Wireshark. Теорию можно прочитать в интернете. Мы сосредоточимся больше на анализе захвата пакетов.
Чем знаменит TCP?
TCP так знаменит по нескольким причинам:
- TCP - это протокол, ориентированный на соединение, поэтому надежность очень высока.
- TCP может контролировать перегрузку самостоятельно.
- TCP может обнаружить ошибку.
- TCP использует протокол управления потоком.
- TCP имеет функции ACK с задержкой.
- TCP имеет функцию выборочного ACK.
- TCP имеет функцию вызова Windows для улучшения пропускной способности.
Есть так много других функций, которые сделали TCP настолько известным.
Анализ TCP:
Мы выполним несколько шагов, чтобы сгенерировать фреймы TCP.
Шаг 1: Самый простой способ сгенерировать TCP-пакеты - получить доступ к любому веб-сайту HTTP. Причина в том, что HTTP - это протокол прикладного уровня, и он использует TCP как базовый протокол транспортного уровня.
Чтобы узнать о HTTP, перейдите по ссылке ниже
https: // linuxhint.ru / http_wireshark /
Шаг 2: Запустите Wireshark.
Шаг 3: Открыть ссылку ниже в любом браузере.
http: // gaia.CS.умасс.edu / wirehark-labs / Алиса.текст
Шаг 4: Остановите Wireshark и установите TCP как фильтр.
Шаг 5: АНАЛИЗ
Теперь мы должны увидеть пакеты TCP 3-way handshake. Вот простая диаграмма.
Кадр 1: SYN [синхронизация]
SYN - это первый пакет, который приходит от клиента к серверу. В нашем случае 192.168.1.6 - это клиент [система, в которой мы открыли браузер] и gaia.CS.умасс.edu это сервер.
Вот некоторые важные поля в кадре SYN
Кадр SYN необходим для отправки возможностей клиента на сервер.
Кадр 2: SYN + ACK [синхронизация + подтверждение]
SYN, ACK - второй пакет приходит от сервера к клиенту.
Вот некоторые важные поля в кадре SYN, ACK
SYN, кадр ACK необходим для отправки возможностей сервера клиенту.
Теперь клиент и сервер поделились своими возможностями.
Кадр 3: ACK [подтверждение]
ACK - это третий пакет, который приходит от клиента к серверу. Это в основном подтверждение от клиента к серверу, а также принятие возможностей, отправленных сервером.
Вот важные поля для ACK.
Давайте проверим важную информацию, передаваемую между клиентом и сервером:
КлиентСервер
Размер окна приема: 64240 байт Размер окна приема: 29200 байт
Максимальный размер сегмента: 1460 байт Максимальный размер сегмента: 1412 байт
SACK Разрешено: да SACK Разрешено: да
Масштаб окна: 8 (умножить на 256) Масштаб окна: 7 (умножить на 128)
Мы заметили разницу в ценностях. Если клиент или сервер принимает другие возможности, трехстороннее рукопожатие считается успешным.
Заголовок TCP:
Вот важные поля заголовка TCP:
- Исходный порт (16 бит): Это порт отправки.
- Порт назначения (16 бит): Это принимающий порт.
- Порядковый номер (32 бита):
- Если бит SYN установлен [1], то это начальный порядковый номер.
- Если бит SYN не установлен [0], то это накопленный порядковый номер первого байта данных этого сегмента.
- Номер подтверждения (32 бита): Если установлен флаг ACK, то значение этого поля является следующим порядковым номером, который ожидает отправитель ACK.
- Длина заголовка: Размер заголовка может варьироваться от 20 до 60 байтов.
- Флаги (9 бит):
… = Зарезервировано: не установлено
… 0… = Nonce: не задано
… 0… = Уменьшенное окно перегрузки (CWR): не установлено
… 0… = ECN-Echo: не задано
… 0… = Срочно: не задано
… 0… = Подтверждение: не установлено
… 0… = Нажать: не задано
… 0… = Сброс: не задано
… 1. = Syn: Установить
… 0 = Fin: не задано
- Размер окна (16 бит): Это размер окна приема в байтах.
- Контрольная сумма (16 бит):
Используется проверка ошибок заголовка.
Пример: Контрольная сумма: 0x436f- Срочный указатель (16 бит):
Это смещение от порядкового номера, указывающего на последний байт срочных данных.
Пример: срочный указатель: 0- Параметры:
Параметр TCP - Максимальный размер сегмента: 1460 байт
Параметр TCP - Нет операции (NOP)
Параметр TCP - Масштаб окна: 8 (умножить на 256)
Параметр TCP - разрешен SACK
Наблюдение:
Размер заголовка TCP SYN составляет 32 байта.
Размер заголовка TCP SYN, ACK составляет 32 байта.
Размер заголовка TCP ACK составляет 20 байт, так как он не имеет полей параметров.
Данные TCP:
Вот снимок экрана с объяснением данных TCP и TCP ACK. Здесь мы можем увидеть функцию ACK задержки TCP. Сервер отправил клиенту три пакета данных TCP, а клиент отправил один ACK задержки, чтобы сообщить серверу, что он получил все три пакета данных TCP. Поэтому в TCP ACK [пакет номер 96 на скриншоте] мы видим ACK = 14121, что означает, что клиент получил до 14121 байт.
Справка:
Для базовой теории TCP см
https: // ru.википедия.org / wiki / Протокол_контроля_передачи