Протокол управления передачей — очень важный протокол на транспортном уровне для модели OSI или TCP/IP. В TCP есть много преимуществ, таких как:
- TCP выполняет повторную передачу, если какие-либо отправленные данные не подтверждаются получателем в течение некоторого времени.
- TCP устанавливает некоторое соединение перед отправкой данных. Мы называем это соединение трехсторонним рукопожатием.
- TCP имеет механизм контроля перегрузки.
- TCP может обнаружить ошибку, используя некоторые методы.
Давайте изучим в основном трехстороннее рукопожатие TCP. Давайте также узнаем о важных полях в Wireshark для трехстороннего рукопожатия.
3-стороннее рукопожатие
При трехстороннем рукопожатии происходит обмен тремя кадрами:
Первый кадр всегда отправляется клиентом на сервер. Давайте поймем это из простой диаграммы:
«КЛИЕНТ» «СЕРВЕР»
Frame1: клиент отправляет SYN-фрейм на сервер-----------------------------------><----------------------------------------------------------Сервер отправляет кадр SYN+ACK клиенту: Frame2
Frame3: клиент отправляет кадр ACK на сервер----------------------------------->
Мы можем увидеть эти три кадра в Wireshark. Фильтр «tcp» можно использовать в Wireshark для просмотра всех кадров TCP. Вот скриншот для трех кадров:
Давайте теперь подробно разберем все три кадра:
СИН
Этот фрейм содержит много информации о возможностях клиента информировать сервер. На следующем снимке экрана показаны все важные поля кадра SYN:
Вот важные поля для кадра SYN:
Исходный порт: 50602Порт назначения: 80
Порядковый номер: 0
Номер подтверждения: 0
Длина заголовка: 32 байта
Флаги: 0x002 (SYN):
Подтверждение: не установлено
Пуш: не установлено
Сброс: не установлено
Syn: Set -----> Этот бит установлен, потому что это кадр SYN.
Плавник: не установлен
Окно: 65535
Срочный указатель: 0
Опция TCP — максимальный размер сегмента: 1460 байт.
Опция TCP — масштаб окна: 3 (умножить на 8)
Опция TCP — SACK разрешен
ПРОСМОТР + ПОДТВЕРЖДЕНИЕ
Этот фрейм содержит много информации о возможностях сервера информировать клиента. На следующем снимке экрана показаны все важные поля кадра SYN+ACK:
Этот кадр также подтверждает кадр SYN, отправленный клиентом.
Вот важные поля для кадра SYN+ACK:
Исходный порт: 80Порт назначения: 50602
Порядковый номер: 0
Номер подтверждения: 1
Длина заголовка: 32 байта (8)
Флаги: 0x012 (SYN, ACK)
Подтверждение: Установить
Пуш: не установлено
Сброс: не установлено
Его: Сет
Плавник: не установлен
Окно: 29200
Срочный указатель: 0
Опция TCP — максимальный размер сегмента: 1412 байт.
Опция TCP — SACK разрешен
Опция TCP — масштаб окна: 7 (умножить на 128)
Мы видим, что в этом кадре установлены биты «Подтверждение» и «SYN». Это потому, что этот кадр является SYN+ACK.
ПОДТВЕРЖДЕНИЕ
Этот кадр является последним кадром трехэтапного рукопожатия, а также подтверждением SYN+ACK клиентом. На следующем снимке экрана показаны все важные поля кадра ACK:
Вот важные поля для кадра ACK:
Исходный порт: 50602Порт назначения: 80
Порядковый номер: 1
Номер подтверждения: 1
Длина заголовка: 20 байт (5)
Флаги: 0x010 (ACK)
Срочно: не установлено
Подтверждение: Установить
Пуш: не установлено
Сброс: не установлено
Син: не установлено
Плавник: не установлен
Окно: 32768
Здесь установлен только бит «Подтверждение», потому что это кадр ACK.
Объяснение некоторых важных общих полей
Порт 80 : В этом уроке мы наблюдали один фиксированный порт 80. Это потому, что это захват HTTP, а порт 80 фиксирован (на стороне сервера) для связи HTTP.
Порядковый номер : Порядковый номер этого кадра. Синхронизация — это первый кадр, поэтому у нас есть 0 в качестве порядкового номера.
Флаги TCP:
Подтверждение – Этот бит устанавливается, если кадр является ACK. Пример: SYN+ACK, кадр ACK.
СИН – Этот бит устанавливается, если кадр является SYN. Пример: СИН.
Окно : Это поле разделяет максимальный размер окна отправителя в режиме приема. Пример: у нас есть размер окна 65535 байт в кадре SYN. Это означает, что получатель может получить максимальное количество данных TCP 65535 байт в любой момент времени.
SACK Разрешено : Этот бит устанавливается, если отправка поддерживает SACK [выборочное подтверждение].
Максимальный размер сегмента : Мы также можем назвать это MSS. Это определяет максимальный кадр данных, который может получить отправитель. Пример: мы получаем MSS как 1460 байт в кадре SYN.
Заключение
Мы узнали о трехстороннем рукопожатии TCP и обо всех полезных полях для кадров SYN, SYN+ACK и ACK. Если вы хотите узнать больше о TCP, вы можете перейти по этой ссылке RFC https://tools.ietf.org/html/rfc793 .