Сводный обзор
- Отвечая таким образом на наследование, интервьюер может быть более удовлетворен
- 10 различий между стрелочными функциями и обычными функциями
- html пустой заполнитель китайского символа
- Я хотел бы узнать больше о том, как судить о массиве
- Написание электронной почты в формате HTML
- Знания указывают на то, что Vue Router игнорируется нами
Что вы узнаете из этой статьи
- Модель семиуровневого протокола OSI и четырехуровневого протокола TCP/IP
- Что такое UDP-протокол
- Что такое TCP-протокол
- Процесс TCP-соединения
- TCP может выполнить рукопожатие дважды, а для Саши требуется три раза?
- Процесс отключения TCP
- Почему A переходит в состояние TIME-WAIT и ждет 2MSL перед переходом в состояние CLOSED?
- Протокол ARQ (механизм повторной передачи тайм-аута): прекратить ожидание протокола ARQ, непрерывный протокол ARQ
- Протокол скользящего окна
- Процесс обработки перегрузок
- алгоритм перегрузки
1. Протокол уровня 7 (OSI)
1. Прикладной уровень
Функция: это приложение, которое взаимодействует с другими компьютерами, и это служба связи, соответствующая приложению. Различное прикладное программное обеспечение, включая веб-приложения.
Протоколы: DNS, FTP, HTTP, SMTP, TELNET, IRC, WHOIS
2. Уровень представления
Роль: Основная роль этого уровня — определить формат данных и шифрование.
3. Сеансовый уровень
Роль: управление возможностями сеанса приложения, которое определяет начало, контроль и завершение сеанса, включая контроль и управление несколькими двунаправленными сообщениями, чтобы приложение могло быть уведомлено, когда завершена только часть сообщения.
PS: На самом деле, на уровне приложений, уровне представления и сеансовом уровне протоколы могут использоваться совместно.
4. Транспортный уровень
Функция: выбор протокола восстановления после ошибок и протокола безошибочного восстановления, мультиплексирование ввода различных потоков данных на одном хосте и переупорядочивание пакетов данных. Это самый важный уровень, и он единственный, кто отвечает за общую передачу данных и контроль данных. Обеспечьте надежные услуги передачи на три верхних уровня и предоставьте надежную информацию о пункте назначения на сетевом уровне. Единица данных на этом уровне называется сегментом данных.
Протокол: TCP, UDP и т. д.
5. Сетевой уровень
Функция: он в основном отвечает за поиск адресов и маршрутизацию, а сетевой уровень также может осуществлять контроль перегрузки, подключение к Интернету и т. Д.
Протокол: IP, IPX, RIP, OSPF и т. д.
6. Канальный уровень
Функция: отвечает за взаимодействие и передачу данных между узлами на физическом уровне; функции этого уровня включают в себя: адресацию физических адресов, кадрирование данных, управление потоком, обнаружение ошибок данных, повторную передачу и т. д. На этом уровне единица данных называется кадром.
Протокол: ARP, RARP, SDLC, HDLC, PPP, STP, Frame Relay и т. Д.
7. Физический уровень
Функция: Ответственный за преобразование между 0, 1 битовой поток (последовательность 0/1) и уровень напряжения, мигания и выключения Определяет механические, электрические, функциональные и технологические характеристики между активацией, поддержанием и закрытыми конечными точками связи; этот слой обеспечивает физическую среду для протоколов верхнего слоя для передачи данных. На этом слое устройство данных называется немного.
Типовая спецификация: EIA/TIA RS-232, EIA/TIA RS-449, V.35, RJ-45, fddi и сеть Token Ring
Двух-, четырехуровневый протокол (сетевая модель TCP/IP)
OSI:
- Физический уровень: EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
- Канальный уровень: Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
- Сетевой уровень: IP, IPX, AppleTalk DDP
- Транспортный уровень: TCP, UDP, SPX
- Сеансовый уровень: RPC, SQL, NFS, NetBIOS, имена, AppleTalk, ASP, DECnet, SCP
- Уровень представления: TIFF, GIF, JPEG, PICT, ASCII, EBCDIC, шифрование, MPEG, MIDI, HTML
- Прикладной уровень: FTP, WWW, Telnet, NFS, SMTP, шлюз, SNMP
TCP/IP:
- Канальный уровень: ARP, RARP
- Сетевой уровень: IP, ICMP, IGMP
- Транспортный уровень: TCP, UDP, UGP
- Прикладной уровень: Telnet, FTP, SMTP, SNMP.
Чтобы компьютеры и сетевые устройства могли взаимодействовать друг с другом, обе стороны должны использовать один и тот же метод. Например, как установить цель связи, как установить коммуникационное соединение, какая сторона инициирует коммуникацию первой, какой язык использовать для связи и когда отключиться, все это необходимо подтвердить заранее. Разные устройства и разные операционные системы также должны подтверждать правила, мы называем эти правила протоколами.
TCP/IP — это общий термин для протоколов, связанных с Интернетом, включая: TCP, DUP, IP, FTP, HTTP, SMTP и другие протоколы.
Модель TCP/IP является основой Интернета и общим термином для ряда сетевых протоколов. Эти протоколы можно разделить на четыре уровня, а именно канальный уровень, сетевой уровень, транспортный уровень и прикладной уровень.
- Канальный уровень: отвечает за инкапсуляцию и декапсуляцию IP-пакетов, отправку и получение пакетов ARP/RARP и т. д.
- Сетевой уровень: отвечает за маршрутизацию и отправку пакетов в целевую сеть или хост.
- Транспортный уровень: отвечает за группировку и повторную сборку сообщений, а также за инкапсуляцию сообщений в формате протокола TCP или UDP.
- Уровень приложений: отвечает за предоставление пользователям приложений, таких как HTTP, FTP, Telnet, DNS, SMTP и т. д.
В сетевой архитектуре установление сетевой связи должно выполняться на равноправном уровне обеих сторон связи и не может чередоваться. В течение всего процесса передачи данных, когда данные проходят через каждый уровень у отправителя, заголовок протокола и хвост протокола соответствующего уровня должны быть присоединены (только канальный уровень должен инкапсулировать хвост протокола), т. е. данные должны быть инкапсулированы в протокол, чтобы идентифицировать протокол связи, используемый соответствующим уровнем. Далее, есть два репрезентативных протокола транспортного уровня в TCP/IP, TCP и UDP.
3. УДП
UDP означает протокол данных пользователя, а UDP — это протокол на транспортном уровне. Как и TCP, он обрабатывает пакеты. UDP ориентирован на без установления соединения. UDP не обеспечивает группировку и сборку данных, не переупорядочивает данные и не гарантирует безопасного поступления данных.
1. Для без подключения
UDP - это протокол без установления соединения. Перед отправкой данных ему не требуется трехстороннее рукопожатие для установления соединения, такого как TCP. Вы можете отправлять данные, если хотите их отправить. Это просто перенос данных и не будет разделять данные ..и собрал.
- При отправке данных прикладной уровень передает данные в протокол UDP транспортного уровня, а UDP просто добавляет к данным идентификатор UDP.
- При получении данных сеть успешно передает данные на транспортный уровень, а UDP просто удаляет заголовок IP и передает его на прикладной уровень.
2. Ненадежность
На основе UDP интервью проходит без установления соединения, и нет необходимости устанавливать соединение. Вы можете отправлять данные в любое время, поэтому UDP ненадежен. И полученные данные будут переданы, а резервное копирование данных выполняться не будет. Отправитель данных не заботится о том, достаточно ли потеряны данные, а получатель не заботится о том, чтобы правильно получить данные. Потом сеть идет вверх-вниз, но протокол UDP не имеет функции блокировки сети.Если данные начнут отправляться, то он начнет отправлять данные с постоянной скоростью. Даже если сеть не в порядке, скорость не будет регулироваться, что приведет к потере пакетов, когда сеть находится в нормальном состоянии.
3. Эффективность
UDP отправляет данные с постоянной скоростью.В случае плохих условий сети это ненадежно.Однако из-за такой ненадежности UDP не так сложен, как TCP, и нет необходимости обеспечивать точное поступление данных, ни необходимо повторно передать, не говоря уже о ситуации с потерей пакета данных.
Заголовок UDP содержит:
- Два шестнадцатизначных номера порта, исходный порт и порт назначения соответственно.
- Длина всей дейтаграммы
- Проверка дейтаграммы и IPV4, это поле используется для поиска ошибок в информации заголовка и данных.
Поэтому накладные расходы заголовка DUP невелики, всего восемь байтов, что очень эффективно при передаче данных по сравнению с двадцатью байтами TCP.
4, различные методы передачи
UDP поддерживает не только методы передачи «один к одному», но также поддерживает методы передачи «один ко многим», «многие ко многим» и «многие к одному». Другими словами, UDP обеспечивает методы одноадресной, многоадресной и широковещательной передачи.
5. Ориентированность на сообщения
Когда данные отправляются, UDP только выражает заголовок UDP данных прикладного уровня и передает его на сетевой уровень IP, а не группирует, разделяет и инкапсулирует данные и сохраняет границы сообщения, поэтому прикладная программа должна выберите соответствующий размер текста сообщения.
Сценарии использования: Прямая трансляция, игры и т. д., скорее всего, используют UDP.Если используется TCP, может возникнуть очень плохое взаимодействие с пользователем. TCP гарантирует точность и правильность данных.Если сеть колеблется и передача данных медленная, к моменту прихода данных может произойти много чего, и фотография пользователя не самая свежая, и она не может соответствовать требования пользователя.
4. ПТС
Когда компьютеры обмениваются данными, два компьютера часто должны гарантировать, что данные надежны, безопасны и правильны. Например, когда вы просматриваете сообщение или посещаете веб-страницу, если вы не хотите, чтобы веб-страница или сообщение, которые вы видите, были завершены без пропущенного контента, вам нужно использовать TCP здесь.
Полное название TCP — протокол управления передачей, ориентированный на установление соединения, безопасный и надежный протокол управления передачей, основанный на потоках байтов.
1. Ориентированность на подключение
Перед отправкой данных обеим сторонам необходимо установить соединение для нормальной отправки данных.
2. Поддерживает только одноадресную передачу
Каждая передача TCP может быть только в двух конечных точках, только передача точка-точка и не поддерживает многоадресную и широковещательную рассылку.
3. Ориентирован на байтовый поток
В отличие от UDP, TCP не передает сообщение за сообщением самостоятельно, а передает его в виде потока байтов без сохранения границ сообщения.
4. Надежность
Чтобы обеспечить надежность передачи, TCP присваивает каждому пакету порядковый номер, а также следит за тем, чтобы пакеты, передаваемые получателю, располагались по порядку. Получатель отправит обратно соответствующее подтверждение (ACK) для полученного пакета.Если отправитель не получит подтверждение в течение задержки приема-передачи (RTT) подтверждения, он отправит его повторно.
5. Обеспечьте контроль блокировки
Когда сеть заблокирована, TCP уменьшит количество и скорость отправки.
6. Полнодуплексная связь
TCP позволяет приложениям на обеих сторонах связи отправлять данные в любое время, поскольку TCP имеет буферы на обоих концах для хранения временных данных связи. TCP может отправлять сегменты данных немедленно или может буферизовать и ждать в течение определенного периода времени для отправки сегментов данных, чтобы отправить больше данных за раз (самый большой сегмент данных зависит от MSS).
Пять, TCP-соединение (трехстороннее рукопожатие)
Сначала и клиент, и сервер находятся в закрытом состоянии. Перед началом связи обе стороны установят TCB. После установления клиент готовится к отправке, а сервер находится в состоянии LISTEN.
1. Первое рукопожатие
Клиентский терминал отправляет сегмент сообщения запроса на соединение, который включает в себя собственный код инициализации передачи данных. После отправки запроса клиент переходит в состояние SYN-SENT.
2. Второе рукопожатие
Сервер получает сообщение с запросом на соединение.Если он соглашается на соединение, сервер отвечает сегментом сообщения, который также содержит свой собственный код данных для передачи данных. После отправки он переходит в состояние SYN-RECEIVED.
3. Третье рукопожатие
Клиент получает сегмент от сервера. На сервер также отправляется подтверждающее сообщение. Клиент переходит в состояние ESTABLISHED после завершения передачи, и сервер также входит в состояние ESTABLISHED после получения запроса. На этом этапе устанавливается клиент-серверное соединение.
PS: Это можно сделать двумя рукопожатиями, а Саше нужно три раза? Потому что это сделано для предотвращения получения сервером недопустимого сегмента запроса на подключение, что может привести к ошибке. Можно представить следующий сценарий. Клиент отправляет запрос на соединение A, но тайм-аут вызван сетевыми причинами.В это время TCP запустит механизм повторной передачи тайм-аута, чтобы снова отправить запрос на соединение B. В этот момент запрос успешно поступает на сервер, сервер устанавливает запрос после ответа, а затем разрывает соединение после получения данных. Предполагая, что запрос на соединение A, наконец, поступает на сервер после того, как в это время два конца закрыты, тогда сервер будет думать, что клиенту необходимо снова установить TCP-соединение, таким образом отвечая на запрос и переходя в состояние ESTABLISHED. Но на самом деле клиент находится в состоянии CLOSED, из-за чего сервер будет все время ждать, что приведет к пустой трате ресурсов.
PS: при установлении соединения, если какой-либо конец отключен, TCP повторно передаст пакет SYN, как правило, повторяет попытку пять раз и может столкнуться с атакой SYN Flood во время установления соединения. В этом случае вы можете уменьшить количество повторных попыток или просто отклонить запрос, если он не может быть обработан.
P.S. Что такое ИСН? Смысл существования? ISN является источником номера байтовых данных отправителя, что позволяет другой стороне создать допустимое окно приема. Это динамически случайно. Целью динамического рандома является повышение безопасности, чтобы избежать угадывания третьей стороной и, следовательно, сброса поддельным RST-сообщением третьей стороны. Если RST хочет добиться успеха, порядковый номер должен находиться в пределах допустимого окна другой стороны, а поскольку ISN является динамически случайным, вероятность очень мала, но если ISN = 0, вероятность того, что он будет угадан, станет больше. . ISN является динамически случайным, поэтому порядковые номера байтов каждого сеанса TCP не повторяются.Если существует очень небольшая вероятность конфликта пятерки TCP, данные одного сеанса не будут ошибочно приняты за другой сеанс.
PS: Может ли трехстороннее рукопожатие передавать данные в первый раз? Почему? В первый раз трехстороннего рукопожатия данные не могут передаваться, так как рукопожатие не было завершено.Если данные кэшируются сервером другой стороны и рукопожатие успешно отправлено, это увеличивает вероятность атаки SYN_FLOOD. Если злоумышленник подделал тысячи Десятки тысяч сообщений рукопожатия содержат 1 КБ данных, и получателю необходимо открыть большое количество кэшей для хранения этих данных, что приводит к потреблению памяти.
PS: Может ли третье рукопожатие передавать данные? Третье рукопожатие может содержать данные, может Это достигается за счет технологии Quick Open (TFO). На самом деле, пока задействован протокол рукопожатия, можно использовать метод, аналогичный TFO: клиент и сервер хранят один и тот же файл cookie, и этот файл cookie выдается во время следующего рукопожатия для уменьшения RTT.
6. Отключение TCP (четырехстороннее рукопожатие)
1. Первое рукопожатие
Если клиент считает, что передача данных завершена, ему необходимо отправить запрос на разрыв соединения с сервером. Клиент входит в состояние FIN_WAIT_1.
2. Второе рукопожатие
Когда сервер получает запрос на освобождение соединения от клиента, он сообщает прикладному уровню о необходимости освободить TCP-соединение. Затем отправьте ACK клиенту, а затем войдите в состояние CLOSE_WAIT. В этот момент это указывает на то, что соединение от клиента к серверу было разорвано и не будет принимать данные от клиента, но так как TCP является полнодуплексным. Следовательно, в это время сервер также может отправлять данные клиенту.
3. Третье рукопожатие
Если сервер не завершил отправку данных в это время, он продолжит их отправку после отправки данных. Сервер отправит клиенту запрос на освобождение соединения. Затем сервер переходит в состояние LAST_ACK.
4. Четвертое рукопожатие
Клиент получает запрос на выпуск от сервера. На сервер будет отправлен запрос подтверждения. В этот момент клиент входит в состояние TIME_WAIT. Это состояние будет длиться 2MSL (максимальное время жизни сегмента, которое относится к времени, в течение которого сегмент сообщения сохраняется в сети, и тайм-аут будет отброшен). войти в состояние ЗАКРЫТО. Когда клиент получает ответ подтверждения, он также переходит в состояние ЗАКРЫТО.
PS: Почему A входит в состояние TIME-WAIT и ждет 2MSL, прежде чем войти в состояние CLOSED? Чтобы гарантировать, что B может получить подтверждающий ответ от A. Если A напрямую переходит в состояние CLOSED после отправки ответа с подтверждением, если ответ с подтверждением не пришел из-за проблем с сетью, это приведет к тому, что B не будет нормально отключен. По разуму, после отправки всех четырех пакетов, он должен иметь возможность напрямую перейти в закрытое состояние, но это должно быть на всякий случай, сеть ненадежна, и последний ACK может быть потерян. Таким образом, TIME_WAIT предназначен для предотвращения потери последнего сообщения для повторной передачи сообщения ACK. Конкретный процесс заключается в том, что после того, как клиент отправит последний ACK, ACK может быть потерян.Если сервер не получит ACK, он продолжит отправлять FIN.Если он не получит FIN от сервера в течение 2MSL, клиент станет отключенным. Здесь у клиента есть активный таймер, который запускается при отправке ACK и входит в TIME_WAIT.Если FIN получен в диапазоне 2MSL, таймер перезапускается.MSL относится к максимальному времени выживания фрагмента в сети.
PS: Почему при подключении нужно трехстороннее рукопожатие, а при закрытии четырехстороннее? Потому что, когда сервер получает запрос на соединение SYN от клиента, он может напрямую отправить сообщение SYN+ACK, где ACK используется для ответа, а сообщение SYN используется для синхронизации. но При закрытии соединения, когда сервер получает сообщение FIN от сервера, он, скорее всего, не закроет соединение немедленно, поэтому он может только ответить сообщением ACK, чтобы сообщить клиенту , отправленный FIN принят сервером. Сообщение FIN не может быть отправлено до тех пор, пока все сообщения на сервере не будут отправлены, поэтому FIN и ACK не могут быть отправлены вместе, поэтому требуется четырехэтапное рукопожатие.
PS: Что делать, если связь установилась, но терминал обслуживания клиентов внезапно вышел из строя? У TCP есть хранитель.Очевидно, что если есть проблема с клиентом, сервер не может все время ждать, и он будет тратить ресурсы.Сервер сбрасывает хранитель каждый раз, когда получает запрос клиента.Обычно Время установки составляет 2 часа. Если вы не можете получить какие-либо данные от клиента в течение двух часов, сервер отправит сообщение об исследовании. Это сообщение не будет отправлено 10 раз подряд. В ответ сервер считает, что проблема с клиент, а сервер автоматически переходит в состояние управления.
Семь, протокол ARQ (механизм повторной передачи тайм-аута)
Протокол ARQ представляет собой механизм повторной передачи по тайм-ауту. Это один из протоколов исправления ошибок транспортного уровня и уровня канала передачи данных в модели OSI, обеспечивающий правильное поступление данных через механизм подтверждения и тайм-аута, реализующий надежную передачу информации на основе ненадежных сервисов. Протокол ARQ включает в себя протокол ARQ с остановкой и ожиданием и протокол непрерывного ARQ с такими механизмами, как обнаружение ошибок, положительное подтверждение, повторная передача по тайм-ауту и отрицательное подтверждение и повторная передача.
1. Хватит ждать протокола ARQ
TCP является полнодуплексным протоколом, то есть после установления соединения обе стороны являются отправителем и получателем. В случае, когда учитываются только один отправитель и один получатель. Предположим, что отправитель — А, а получатель — Б.
1.1 Безошибочная ситуация
A Отправьте пакет сообщений M1 и приостановите отправку, дождитесь подтверждения B. B получает M1, отправляет подтверждение a. A После получения подтверждения отправляется следующий пакет M2.
1.2 случая ошибок
Если есть ошибка в процессе отправки A или B обнаруживает ошибку при получении M1 (здесь A сохранит копию пакета перед отправкой и очистит копию только после получения подтверждения), B обнаружит при получении M1 В случае ошибки M1 отбрасывается, и больше ничего не делается. В случае ошибки, пока А не получит подтверждение в течение определенного периода времени, в задаче произойдет ошибка, и пакет только что будет отправлен повторно, то есть повторная передача по тайм-ауту.
Тайм-аут повторной передачи означает, что после того, как А отправит пакет, будет установлен таймер тайм-аута.Если период тайм-аута больше этого времени, пакет будет отправлен повторно. Конечно, если сообщение с подтверждением будет получено в течение времени, оно не будет отправлено повторно. Как правило, время таймера тайм-аута должно быть больше одного времени RTT.
1.3 Задержка и потеря ACK
Если A отправляет пакет M1 к B, после получения M1 B отправляет подтверждающее сообщение, но из-за проблем с сетью подтверждающее сообщение теряется, то в это время A не получает подтверждающее сообщение от B в течение периода ожидания повторной передачи. A будет повторно передавать пакет M1. Затем B выполнит два действия: ①B отбросит пакет M1 и не доставит его на верхний уровень, поскольку пакет M1 уже был получен ранее. ②Отправить информацию для подтверждения А.
Подажнее преимущество протокола ARQ перестанут короткий ответ, но существует очень серьезная решимость, использование канала низкая. Утилизация канала U = TD / (TD + RTT + TA). При этом задержка передачи TD, RTT - это время кругов, TA получает задержку
2. Непрерывно отправлять протокол ARQ
Поскольку использование канала протокола ARQ с остановкой и ожиданием слишком низкое, для улучшения необходимо использовать протокол непрерывного ARQ. Этот протокол отправляет набор пакетов подряд. Затем дождитесь ACK для этих пакетов.
Протокол непрерывного ARQ предусматривает, что каждый раз, когда отправитель получает подтверждение, он сдвигает окно отправки вперед на одну позицию пакета. Когда отправитель получает подтверждение первого пакета, он перемещает окно отправки вперед на один пакет. Если первые 5 пакетов были отправлены, теперь можно отправить 6-й пакет в пределах окна.
2.1 Совокупное подтверждение
Получатель обычно использует метод кумулятивного подтверждения. То есть получатель не должен отправлять подтверждения для полученных пакетов один за другим. Вместо этого после получения нескольких пакетов подтверждение отправляется для последнего пакета, прибывшего по порядку. Если эта информация подтверждения приема пакета получена, это означает, что все пакеты до этого пакета были получены правильно.
Преимущество накопления подтверждений заключается в том, что их легко реализовать и не нужно повторно передавать, даже если подтверждение потеряно. Но недостатком является то, что информация обо всех пакетах, которые получатель получил правильно, не может быть правильно отражена отправителю. Например, отправитель отправляет первые 5 пакетов, а третий пакет в середине теряется, в это время получатель может отправить подтверждение только на первые 2 пакета. Я не знаю местонахождение следующих 3 пакетов, поэтому последние 3 пакета я могу ретранслировать только один раз.Этот механизм называется Go-back-N (назад N), что означает, что для повторной передачи отправленного нужно вернуться назад. пакетов N групп.
8. Протокол скользящего окна
Протокол скользящего окна поддерживает скользящее окно между отправителем и получателем, отправитель является окном отправки, получатель является окном приема, и это окно может сдвигаться вперед со временем. Это позволяет отправителю отправлять несколько пакетов, не дожидаясь подтверждения. Скользящее окно TCP находится в байтах.
В окне отправки есть четыре концепции:
- Данные отправлены и подтверждены (вне окна отправки и буфера отправки)
- Данные отправлены, но не подтверждены (в пределах окна отправки)
- Данные разрешены к отправке, но еще не отправлены (в окне отправки)
- Данные, которые временно запрещены к отправке в буфер вне окна отправки В окне приема также есть четыре концепции:
- Подтверждение отправлено и данные доставлены на хост (вне окна приема и буфера приема)
- Данные получены не по порядку (в пределах окна приема)
- Данные, разрешенные к приему (в пределах окна приема)
- Данные не разрешены к получению (в пределах окна отправки)
Скользящее окно — очень важная концепция, которая помогает TCP реализовать функцию управления потоком. Получатель сообщает отправителю, сколько данных может быть отправлено через сообщение, чтобы гарантировать, что получатель может получить данные вовремя, и предотвратить отправку данных получателем, когда полоса пропускания получателя заполнена.
9. Контроль перегрузки
Явление перегрузки сети относится к явлению, когда количество пакетов, поступающих в определенную часть сети связи, слишком велико, что делает часть сети слишком поздней для обработки, что приводит к снижению производительности этой части и даже всей сети. Сеть деградирует явление блокировки. Управление перегрузкой — это механизм борьбы с перегрузкой сети.
Управление перегрузкой – это алгоритм, используемый для корректировки количества пакетов, отправляемых за одну передачу по протоколу управления передачей (TCP). Он постепенно корректируется путем увеличения или уменьшения количества одной передачи, чтобы приблизить ее к текущей пропускной способности сети. . Если разовая сумма отправки равна 1, протокол вырождается в протокол с остановкой и ожиданием. Объем одной передачи указан в байтах, но если предположить, что каждая передача TCP должна отправлять данные в соответствии с максимальным сегментом (MSS), то количество пакетов также можно рассматривать как количество одной передачи. единица, поэтому иногда мы говорим, что увеличение на 1 в одной передаче — это увеличение количества байтов, эквивалентное 1 максимальному сегменту.
1. Алгоритм управления перегрузкой
Управление перегрузкой предполагает, что потеря пакетов вызвана загруженностью сети. Управление перегрузкой имеет три действия, соответствующие ситуации, воспринимаемой хостом-источником:
-
Получил новое подтверждение. Указывает, что текущая разовая сумма отправки меньше пропускной способности сети. В это время вы можете увеличить разовую сумму отправки. Если текущая сумма разовой отправки меньше порога медленного старта (ssthreash), сумма разовой отправки удваивается (умножается на 2), то есть экспоненциально увеличивается; в противном случае сумма разовой отправки увеличивается на 1, то есть линейно рост.
-
Получено три подтверждения для одной и той же группы, то есть три дублирующих подтверждения. Это означает, что сеть немного занята. В это время разовая сумма отправки уменьшается вдвое, а порог медленного запуска (ssthreash) примерно равен разовой сумме отправки, входя в стадию линейного роста.
-
Подтверждение для определенного пакета задерживается, то есть истекает время ожидания. Указывает, что сеть загружена больше, чем в предыдущем случае. В это время порог медленного запуска = одиночный объем передачи ÷ 2, одиночный объем передачи = 1, и переход на стадию медленного запуска (этап экспоненциального роста).
2. Четыре этапа контроля перегрузки
2.1 Медленный старт
Медленный запуск — это блокирующий механизм управления, используемый протоколом управления передачей (TCP). Медленный старт также называют периодом экспоненциального роста. Алгоритм медленного старта работает, наблюдая, что новые пакеты должны поступать в сеть с той же скоростью, с которой другой конец возвращает подтверждения.
Медленный старт добавляет еще одно окно в TCP отправителя: окно перегрузки, обозначаемое как cwnd. Окно перегрузки — это управление потоком, используемое отправителем, а окно рекламы — это управление потоком, используемое получателем. Алгоритм описывается следующим образом:
-
При установлении TCP-соединения с хостом в другой сети окно перегрузки инициализируется равным 1 сегменту (то есть размеру сегмента, объявленному на другом конце).
-
Каждый раз при получении ACK окно перегрузки удваивается (cwnd измеряется в байтах, но медленное начало увеличивается на размер сегмента). Это экспоненциально растущие отношения.
-
Отправитель принимает минимальное значение между окном перегрузки и окном рекламы в качестве верхнего предела для отправки.
2.2 Предотвращение перегрузки
Алгоритм медленного старта — это метод инициирования потока данных в соединении, экспоненциальный рост которого может быстро привести к перегрузке сети, поскольку в какой-то момент пропускная способность Интернета может быть достигнута, и промежуточные маршрутизаторы начинают отбрасывать пакеты. Алгоритм предотвращения перегрузки — это метод борьбы с потерянными пакетами. Есть два признака потери пакета: тайм-аут и получено двойное подтверждение. Происходит тайм-аут, что означает, что хост-источник не получает ACK для определенного пакета от хоста-получателя, когда таймер тайм-аута переполняется; получено повторное подтверждение, что означает, что три или более последовательных ACK получены до истечения таймера тайм-аута хост-источник переполняется ACK для пакета.
Когда тайм-аут обнаружен или получены три повторных подтверждения, это означает, что произошло событие потери пакета.В это время сеть была перегружена, и необходимо выполнить соответствующий контроль перегрузки. Алгоритм описывается следующим образом:
-
Установите порог медленного запуска (ssthreash) равным половине текущего окна (минимум cwnd и заявленного размера окна, но не менее 2 пакетов).
-
Если перегрузка вызвана тайм-аутом, окно перегрузки (cwmd) устанавливается равным 1 и вводится процесс медленного запуска. Если перегрузка вызвана повторными подтверждениями, вводится процесс быстрой повторной передачи и быстрого восстановления.
-
После входа в фазу медленного запуска окно перегрузки будет экспоненциально увеличиваться.Если окно перегрузки больше, чем порог медленного запуска (ssthreash), выполняется алгоритм предотвращения перегрузки. При выполнении алгоритма предотвращения перегрузки, поскольку порог медленного старта (ssthreash) уже существует, размер окна перегрузки больше не удваивается, а увеличивается линейно.
Алгоритм предотвращения перегрузки и алгоритм медленного запуска — это два отдельных алгоритма с разными целями. Но когда возникает перегрузка, мы хотим снизить скорость передачи пакетов в сеть, поэтому для этого можно вызвать медленный старт. На практике эти два алгоритма обычно реализуются вместе. В версии TCPReno, появившейся в 1990 году, были добавлены алгоритм «быстрой повторной передачи» и алгоритм «быстрого восстановления», которые позволяли избежать явления чрезмерного уменьшения размера окна отправки за счет использования алгоритма «медленного старта», когда перегрузка сети не достаточно серьезен.
2.3 Быстрая ретрансляция
Когда хост-получатель получает сегмент вне очереди, он немедленно генерирует ACK (повторный ACK). Этот дублирующий ACK не должен задерживаться. Цель состоит в том, чтобы сообщить хосту-источнику, что хост-адресат получил исходящий сегмент. сегмента последовательности и сообщите хосту-источнику серийный номер, который он хочет получить.
Поскольку мы не знаем, вызвано ли дублирование ACK отсутствующим сегментом или тем, что было переупорядочено только несколько сегментов, мы ждем поступления небольшого количества дубликатов ACK. Если это просто переупорядочивание некоторых сегментов, могут быть сгенерированы только 1 или 2 дубликата ACK, прежде чем переупорядоченные сегменты будут обработаны и сгенерирован новый ACK. Если получена серия из 3 или более повторяющихся ACK, весьма вероятно, что сегмент потерян, и начинается процесс быстрой повторной передачи, описанный ниже:
1. Установите порог медленного запуска (ssthreash) равным половине текущего окна перегрузки (cwnd) и установите окно перегрузки (cwnd) равным порогу медленного запуска (ssthreash) плюс 3-кратный размер сегмента. Повторно передает потерянные сегменты данных, не дожидаясь переполнения таймера тайм-аута.
2. Каждый раз, когда получен очередной дубликат ACK, cwnd увеличивает размер сегмента на единицу и отправляет 1 пакет (если новый cwnd разрешает отправку). Если получен еще один повторный ACK, это означает, что пакет, переданный в сети, достиг узла назначения, и сеть может принять еще один пакет, поэтому cwnd увеличивает размер сегмента на единицу и отправляет пакет.
2.4 Быстрое восстановление
После того, как потерянный пакет отправлен через процесс быстрой повторной передачи и принят узлом назначения, узел назначения больше не отправляет дубликат ACK, чтобы уведомить исходный узел об отправке потерянного пакета, а вместо этого отправляет ACK, чтобы подтвердить новые данные для уведомления. хост-источник для отправки нового пакета. Этот ACK должен быть подтверждением повторно переданного пакета в течение времени приема-передачи после повторной передачи, а также должен быть подтверждением всех промежуточных сегментов между потерянным пакетом и первым полученным дубликатом ACK. В это время, чтобы быстро восстановить более высокую скорость передачи, будет введена фаза быстрого восстановления.Алгоритм описан следующим образом:
- Когда ACK подтверждает поступление новых данных, установите окно перегрузки (cwnd) на порог медленного запуска (ssthreash) (значение, установленное на шаге 1 во время быстрой повторной передачи) и войдите в процесс предотвращения перегрузки.
Ссылаться на