Если вы не читали Часть 1 этой серии, настоятельно рекомендуется прочитать ЧАСТЬ-1 этой серии.

Суета о контроле за перегрузкой:

Что такое перегрузка? .

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

Это аналогично большим очередям в каком-то неправильно спроектированном и эксплуатируемом супермаркете. Если владелец не ожидал, сколько часов будет ходить в магазин и насколько он сможет обработать кассу для покупателей. Такой сценарий, при котором существует несоответствие входящего трафика и способности справиться с ним, является перегрузкой.

Как это исправить?

Перегрузка физически возникает на сетевом уровне (то есть в маршрутизаторах), однако в основном это вызвано тем, что транспортный уровень отправляет слишком много данных за один раз. Это означает, что с этим также придется иметь дело или «контролировать» на транспортном уровне.

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

Вот как транспортный уровень контролирует перегрузку:

  1. Он отправляет пакеты с меньшей скоростью в ответ на перегрузку,
  2. «Более низкая скорость» по-прежнему достаточно высока, чтобы эффективно использовать доступную емкость,
  3. Также отслеживаются изменения в трафике.

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

Алгоритмы управления перегрузкой: (Охватываются только популярные алгоритмы, используемые в компьютерных сетях, есть и многие другие.)

  1. Алгоритм дырявого ведра
  2. Алгоритм Token Bucket

Подробнее об этих двух можно вкратце прочитать в нашем любимом GeeksForGeeks.

Установление TCP-соединения: трехстороннее рукопожатие:

TCP-соединение устанавливается с помощью трехстороннего рукопожатия. На этапе установления соединения используются порядковый номер, номер подтверждения и флаг SYN.

Инициирование соединения

Когда клиентский хост хочет открыть TCP-соединение с сервером, он создает и отправляет TCP-сегмент с:

  • Установлен флаг SYN
  • Порядковый номер установлен на случайное начальное значение. Поэтому порядковые номера не начинаются с 0! Вы можете догадаться, почему? Это объясняется ниже:

Атака с прогнозированием последовательности TCP:

Рассмотрим следующий сценарий: удаленный сервер предоставляет клиенту root-доступ без пароля на основе IP-адреса клиента. Таким образом, клиенту просто нужно будет подключиться к серверу, и ему будет предоставлен привилегированный доступ. Назовем этого клиента A.

  1. Злоумышленник может маскироваться под A, подделав IP-адрес A (да, IP-адреса могут быть подделаны) и инициировать TCP-соединение с помощью SYN пакет.
  2. Сервер будет думать, что A установил соединение, и ответит отправкой SYN / ACK на A.
  3. Поскольку злоумышленник не может получать ответы сервера, он должен будет предсказать порядковый номер. Если исходный порядковый номер всегда был фиксированным значением, злонамеренный объект сможет отправить ACK с правильным номером подтверждения в последнем пакете на основе начального порядкового номера, который будет использовать сервер, и поэтому отправит его в ACK.
  4. Злоумышленник успешно получил неавторизованный привилегированный доступ к серверу, установив TCP-соединение на основе предсказанного порядкового номера. Этот тип атаки называется атакой с прогнозированием последовательности TCP. Если исходный порядковый номер был фиксированным, злоумышленник мог установить соединение, спрогнозировать порядковый номер будущего пакета и успешно отправить поддельный пакет, обманывая принимающую сторону, заставляя поверить, что пакет был отправлен фактическим отправителем!

Подробнее об этом в Википедии.

Ответ на сообщение о начальном подключении:

При получении этого сегмента (который часто называют сегментом SYN) хост сервера отвечает сегментом, содержащим:

  • установлен флаг SYN
  • порядковый номер установлен на случайное число.
  • Флаг ACK установлен
  • Номер подтверждения установлен равным порядковому номеру полученного сегмента SYN, увеличенному на 1 по модулю 2 ^ {32}, поскольку сегмент SYN потребляет один байт. Это новое число может превышать 2 ^ {32}, что является пределом поля заголовка ACK, поэтому для этого числа берется модуль 2 ^ {32}. Это позволяет циклически возвращаться к цифре и начинать ее с 00.

Когда объект TCP отправляет сегмент с номером подтверждения x + 1 x +1, это означает, что он получил все сегменты вплоть до сегментов с порядковым номером x x включительно. и ожидают данных с порядковым номером x + 1 x +1.

Этот сегмент часто называют сегментом SYN + ACK. Подтверждение подтверждает клиенту, что сервер правильно получил сегмент SYN. Случайный порядковый номер сегмента SYN + ACK используется хостом сервера для проверки того, что клиент получил сегмент.

Подтверждение ответа:

При получении сегмента SYN + ACK клиентский хост отвечает сегментом, содержащим:

  • Флаг ACK установлен
  • Номер подтверждения установлен равным порядковому номеру полученного сегмента SYN + ACK, увеличенному на 1. Модуль числа на 2 ^ {32}, очевидно, взят. На этом этапе TCP-соединение открыто, и клиенту и серверу разрешено отправлять TCP-сегменты, содержащие данные. Это показано на рисунке ниже:

На рисунке выше соединение считается установленным клиентом после того, как он получил сегмент SYN + ACK, в то время как сервер считает, что соединение установлено после приема сегмента ACK .

_________________________________________________________________

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

___________________________________________________________________

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

Мы очень ценим ваши критические отзывы.

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

Спасибо!!!

_________________________________________________________________

Мой выбор статьи дня:

https://levelup.gitconnected.com/everything-you-need-to-know-about-caching-system-design-932a6bdf3334

Цитата дня:

«Лучше всего знать четыре вещи:
праздность, печаль, друг и враг.
Четыре вещи, без которых мне было бы лучше:
Любовь, любопытство, веснушки , и сомнение.
Три вещи, которых я никогда не достигну:
Зависть, удовлетворение и достаточное количество шампанского.
Три вещи, которые у меня будут, пока я не умру:
Смех и надежда и носок в глазу ».
- Дороти Паркер.

___________________________________________________________________

Использованная литература:

  1. GeekForGeeks
  2. Википедия
  3. I БМ Редбуки.
  4. Середина