DCN - протокол управления передачей
Протокол управления передачей (TCP) - один из наиболее важных протоколов набора Интернет-протоколов. Это наиболее широко используемый протокол для передачи данных в сети связи, такой как Интернет.
Характеристики
TCP - надежный протокол. Таким образом, получатель всегда отправляет отправителю либо положительное, либо отрицательное подтверждение о пакете данных, так что отправитель всегда имеет четкое представление о том, достигнут ли пакет данных адресату или ему необходимо повторно отправить его.
TCP гарантирует, что данные достигнут назначенного места назначения в том же порядке, в котором они были отправлены.
TCP ориентирован на соединение. TCP требует, чтобы соединение между двумя удаленными точками было установлено перед отправкой фактических данных.
TCP обеспечивает механизм проверки ошибок и восстановления.
TCP обеспечивает сквозную связь.
TCP обеспечивает управление потоком и качество обслуживания.
TCP работает в режиме «точка-точка» клиент / сервер.
TCP обеспечивает полнодуплексный сервер, т.е. он может выполнять роли как получателя, так и отправителя.
Заголовок
Длина заголовка TCP составляет минимум 20 байтов и максимум 60 байтов.
Source Port (16-bits) - Он идентифицирует исходный порт процесса приложения на отправляющем устройстве.
Destination Port (16-bits) - Он определяет порт назначения процесса приложения на принимающем устройстве.
Sequence Number (32-bits) - Порядковый номер байтов данных сегмента в сеансе.
Acknowledgement Number (32-bits) - Когда установлен флаг ACK, этот номер содержит следующий порядковый номер ожидаемого байта данных и работает как подтверждение получения предыдущих данных.
Data Offset (4-bits) - Это поле подразумевает как размер заголовка TCP (32-битные слова), так и смещение данных в текущем пакете во всем сегменте TCP.
Reserved (3-bits) - Зарезервировано для будущего использования, по умолчанию все обнулены.
Flags (1-bit each)
NS - Бит суммы nonce используется процессом сигнализации явного уведомления о перегрузке.
CWR - Когда хост получает пакет с установленным битом ECE, он устанавливает «Окна перегрузки» «Уменьшена», чтобы подтвердить получение ECE.
ECE -Он имеет два значения:
Если бит SYN установлен в 0, то ECE означает, что в IP-пакете установлен бит CE (перегрузка).
Если бит SYN установлен в 1, ECE означает, что устройство поддерживает ECT.
URG - Это указывает на то, что поле Urgent Pointer содержит важные данные и должно быть обработано.
ACK- Указывает, что поле подтверждения имеет значение. Если ACK сброшен в 0, это означает, что пакет не содержит подтверждения.
PSH - Если установлено, это запрос к принимающей станции на PUSH-данные (как только они поступают) в принимающее приложение без их буферизации.
RST - Флаг сброса имеет следующие особенности:
Используется для отказа от входящего соединения.
Используется для отклонения сегмента.
Он используется для перезапуска соединения.
SYN - Этот флаг используется для установки соединения между хостами.
FIN- Этот флаг используется для освобождения соединения, и после этого обмен данными больше не производится. Поскольку пакеты с флагами SYN и FIN имеют порядковые номера, они обрабатываются в правильном порядке.
Windows Size - Это поле используется для управления потоком между двумя станциями и указывает объем буфера (в байтах), выделенный приемником для сегмента, т. Е. Сколько данных ожидает приемник.
Checksum - Это поле содержит контрольную сумму заголовка, данных и псевдозаголовков.
Urgent Pointer - Указывает на байт срочных данных, если флаг URG установлен в 1.
Options - Это облегчает дополнительные возможности, которые не охватываются обычным заголовком. Поле опции всегда описывается 32-битными словами. Если это поле содержит данные менее 32-битных, используется заполнение, чтобы покрыть оставшиеся биты, чтобы достичь 32-битной границы.
Обращение
Связь TCP между двумя удаленными хостами осуществляется с помощью номеров портов (TSAP). Номера портов могут варьироваться от 0 до 65535, которые делятся на:
- Системные порты (0-1023)
- Пользовательские порты (1024 - 49151)
- Частные / динамические порты (49152–65535)
Управление подключением
Связь TCP работает в модели сервер / клиент. Клиент инициирует соединение, а сервер либо принимает, либо отклоняет его. Для управления подключением используется трехстороннее подтверждение связи.
Учреждение
Клиент инициирует соединение и отправляет сегмент с порядковым номером. Сервер подтверждает это обратно своим собственным порядковым номером и ACK клиентского сегмента, который на единицу больше, чем порядковый номер клиента. Клиент после получения ACK своего сегмента отправляет подтверждение ответа Сервера.
Выпуск
И сервер, и клиент могут отправить сегмент TCP с флагом FIN, установленным в 1. Когда принимающая сторона отвечает ему подтверждением FIN, это направление TCP-связи закрывается и соединение разрывается.
Управление пропускной способностью
TCP использует концепцию размера окна, чтобы удовлетворить потребности в управлении полосой пропускания. Размер окна сообщает отправителю на удаленном конце количество байтовых сегментов данных, которое получатель на этом конце может получить. TCP использует фазу медленного запуска, используя размер окна 1, и экспоненциально увеличивает размер окна после каждой успешной связи.
Например, клиент использует размер окна 2 и отправляет 2 байта данных. Когда подтверждение получения этого сегмента получено, размер окна удваивается до 4, и при следующей отправке отправленный сегмент будет иметь длину 4 байта данных. Когда получено подтверждение 4-байтового сегмента данных, клиент устанавливает размер окна равным 8 и так далее.
Если подтверждение пропущено, т. Е. Данные потеряны в транзитной сети или получен NACK, размер окна уменьшается наполовину, и снова начинается фаза медленного старта.
Контроль ошибок и контроль потока
TCP использует номера портов, чтобы знать, какой процесс приложения ему нужен для передачи сегмента данных. Наряду с этим он использует порядковые номера для синхронизации с удаленным хостом. Все сегменты данных отправляются и принимаются с порядковыми номерами. Отправитель знает, какой последний сегмент данных был получен Получателем, когда он получает ACK. Получатель знает о последнем сегменте, отправленном Отправителем, ссылаясь на порядковый номер недавно полученного пакета.
Если порядковый номер недавно полученного сегмента не совпадает с порядковым номером, который ожидал получатель, то он отбрасывается и отправляется NACK. Если два сегмента прибывают с одним и тем же порядковым номером, значение временной метки TCP сравнивается для принятия решения.
Мультиплексирование
Метод объединения двух или более потоков данных в один сеанс называется мультиплексированием. Когда TCP-клиент инициализирует соединение с сервером, он всегда ссылается на четко определенный номер порта, который указывает процесс приложения. Сам клиент использует случайно сгенерированный номер порта из частных пулов номеров портов.
Используя мультиплексирование TCP, клиент может взаимодействовать с несколькими различными прикладными процессами за один сеанс. Например, клиент запрашивает веб-страницу, которая, в свою очередь, содержит различные типы данных (HTTP, SMTP, FTP и т. Д.), Время ожидания сеанса TCP увеличивается, и сеанс остается открытым в течение более длительного времени, так что накладные расходы на трехстороннее рукопожатие могут избегать.
Это позволяет клиентской системе получать множественные соединения через одно виртуальное соединение. Эти виртуальные соединения не подходят для серверов, если время ожидания слишком велико.
Контроль перегрузки
Когда в систему поступает большой объем данных, которая не способна их обрабатывать, возникает перегрузка. TCP контролирует перегрузку с помощью механизма окна. TCP устанавливает размер окна, сообщая другой стороне, сколько сегмента данных нужно отправить. TCP может использовать три алгоритма контроля перегрузки:
Аддитивное увеличение, мультипликативное уменьшение
Медленный старт
Тайм-аут React
Управление таймером
TCP использует разные типы таймеров для контроля и управления различными задачами:
Таймер сохранения активности:
Этот таймер используется для проверки целостности и действительности соединения.
Когда время поддержания активности истекает, хост отправляет зонд, чтобы проверить, существует ли соединение.
Таймер ретрансляции:
Этот таймер поддерживает сеанс отправки данных с сохранением состояния.
Если подтверждение отправленных данных не получено в течение времени повторной передачи, сегмент данных отправляется снова.
Таймер сохранения:
Сеанс TCP может быть приостановлен любым хостом, отправив размер окна 0.
Чтобы возобновить сеанс, хост должен отправить размер окна с большим значением.
Если этот сегмент никогда не достигает другого конца, оба конца могут ждать друг друга бесконечное время.
Когда таймер Persist истекает, хост повторно отправляет размер своего окна, чтобы сообщить об этом другому концу.
Persist Timer помогает избежать взаимоблокировок при обмене данными.
Время ожидания:
После освобождения соединения любой из хостов ожидает времени Timed-Wait, чтобы полностью разорвать соединение.
Это необходимо для того, чтобы убедиться, что другой конец получил подтверждение своего запроса на разрыв соединения.
Тайм-аут может составлять максимум 240 секунд (4 минуты).
Восстановление после сбоя
TCP - очень надежный протокол. Он предоставляет порядковый номер каждому байту, отправляемому в сегменте. Он обеспечивает механизм обратной связи, т.е. когда хост получает пакет, он привязывается к ACK для этого пакета, имеющего ожидаемый следующий порядковый номер (если это не последний сегмент).
Когда TCP-сервер прерывает промежуточную связь и повторно запускает свой процесс, он отправляет широковещательную рассылку TPDU всем своим хостам. Затем хосты могут отправить последний сегмент данных, который никогда не был неподтвержденным, и продолжить.