DCN - протокол управления передачей

Протокол управления передачей (TCP) является одним из наиболее важных протоколов пакета интернет-протоколов. Это наиболее широко используемый протокол для передачи данных в сети связи, такой как Интернет.

Характеристики

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

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

  • TCP ориентирован на соединение. TCP требует, чтобы соединение между двумя удаленными точками было установлено перед отправкой фактических данных.

  • TCP обеспечивает проверку ошибок и механизм восстановления.

  • TCP обеспечивает сквозную связь.

  • TCP обеспечивает управление потоком и качество обслуживания.

  • TCP работает в режиме точка-точка Клиент / Сервер.

  • TCP обеспечивает полный дуплексный сервер, то есть он может выполнять роли как получателя, так и отправителя.

заголовок

Длина заголовка TCP составляет минимум 20 байтов и максимум 60 байтов.

Заголовок TCP
  • Порт источника (16 бит) - определяет порт источника процесса приложения на отправляющем устройстве.

  • Порт назначения (16 бит) - определяет порт назначения процесса приложения на приемном устройстве.

  • Sequence Number (32-bit) - порядковый номер байтов данных сегмента в сеансе.

  • Номер подтверждения (32 бита) - когда установлен флаг ACK, этот номер содержит следующий порядковый номер ожидаемого байта данных и работает как подтверждение предыдущих полученных данных.

  • Смещение данных (4 бита) - в этом поле указывается как размер заголовка TCP (32-разрядные слова), так и смещение данных в текущем пакете во всем сегменте TCP.

  • Зарезервировано (3 бита) - зарезервировано для будущего использования, и все по умолчанию установлены на ноль.

  • Флаги (1-битный каждый)

    • NS - бит Nonce Sum используется в процессе явного оповещения о перегрузке.

    • CWR - Когда хост получает пакет с установленным битом ECE, он устанавливает Windows переполнения, уменьшенный, чтобы подтвердить, что ECE получено.

    • ECE - имеет два значения:

      • Если бит SYN равен 0, то ECE означает, что для IP-пакета установлен бит CE (опыт перегрузки).

      • Если бит SYN установлен в 1, ECE означает, что устройство поддерживает ECT.

    • URG - указывает, что поле Urgent Pointer содержит важные данные и должно быть обработано.

    • ACK - указывает, что поле подтверждения имеет значение. Если ACK очищен до 0, это указывает, что пакет не содержит никакого подтверждения.

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

    • RST - флаг сброса имеет следующие особенности:

      • Используется для отказа от входящего соединения.

      • Используется для отклонения сегмента.

      • Он используется для перезапуска соединения.

    • SYN - этот флаг используется для установки соединения между хостами.

    • FIN - этот флаг используется для освобождения соединения, и после этого больше не происходит обмена данными. Поскольку пакеты с флагами SYN и FIN имеют порядковые номера, они обрабатываются в правильном порядке.

  • Размер Windows - это поле используется для управления потоком между двумя станциями и указывает объем буфера (в байтах), который получатель выделил для сегмента, т.е. сколько данных ожидает получатель.

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

  • Срочный указатель - указывает на байт срочных данных, если флаг URG установлен в 1.

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

адресация

TCP-связь между двумя удаленными узлами осуществляется с помощью номеров портов (TSAP). Номера портов могут варьироваться от 0 до 65535, которые делятся на:

  • Системные порты (0 - 1023)
  • Пользовательские порты (1024 - 49151)
  • Частные / Динамические Порты (49152 - 65535)

Управление подключением

TCP связь работает в модели Сервер / Клиент. Клиент инициирует соединение, а сервер либо принимает, либо отклоняет его. Трехстороннее рукопожатие используется для управления соединением.

TCP Handshake

создание

Клиент инициирует соединение и отправляет сегмент с порядковым номером. Сервер подтверждает это своим собственным порядковым номером и ACK сегмента клиента, который на единицу больше порядкового номера клиента. Клиент после получения ACK своего сегмента отправляет подтверждение ответа Сервера.

Выпуск

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

Управление пропускной способностью

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

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

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

Контроль ошибок и контроль потока

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

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

мультиплексирование

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

Используя мультиплексирование TCP, клиент может взаимодействовать с несколькими различными процессами приложения в одном сеансе. Например, клиент запрашивает веб-страницу, которая, в свою очередь, содержит различные типы данных (HTTP, SMTP, FTP и т. Д.), Тайм-аут сеанса TCP увеличивается, и сеанс остается открытым в течение более длительного времени, так что накладные расходы трехстороннего рукопожатия могут избегать.

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

Контроль заторов

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

  • Аддитивное увеличение, мультипликативное снижение

  • Медленный старт

  • Тайм-аут Реакция

Таймер управления

TCP использует разные типы таймеров для контроля и управления различными задачами:

Таймер поддержки:

  • Этот таймер используется для проверки целостности и достоверности соединения.

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

Таймер ретрансляции:

  • Этот таймер поддерживает состояние сеанса отправленных данных.

  • Если подтверждение отправленных данных не получено в течение времени повторной передачи, сегмент данных отправляется снова.

Постоянный таймер:

  • Сеанс TCP может быть приостановлен любым хостом путем отправки размера окна 0.

  • Чтобы возобновить сеанс, хост должен отправить Размер окна с некоторым большим значением.

  • Если этот сегмент никогда не достигает другого конца, оба конца могут ждать друг друга в течение бесконечного времени.

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

  • Persist Timer помогает избежать тупиков в общении.

Timed-Wait:

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

  • Это делается для того, чтобы убедиться, что другой конец получил подтверждение своего запроса на завершение соединения.

  • Тайм-аут может быть максимум 240 секунд (4 минуты).

Восстановление после сбоя

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

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