Если вы не читали Часть 1 этой серии, настоятельно рекомендуется прочитать ЧАСТЬ-1 этой серии.
Суета о контроле за перегрузкой:
Что такое перегрузка? .
Когда передается больше пакетов, чем пропускная способность сети, некоторые из них начинают отбрасываться, а другие задерживаются. Это явление приводит к общему снижению производительности и называется перегрузкой.
Это аналогично большим очередям в каком-то неправильно спроектированном и эксплуатируемом супермаркете. Если владелец не ожидал, сколько часов будет ходить в магазин и насколько он сможет обработать кассу для покупателей. Такой сценарий, при котором существует несоответствие входящего трафика и способности справиться с ним, является перегрузкой.
Как это исправить?
Перегрузка физически возникает на сетевом уровне (то есть в маршрутизаторах), однако в основном это вызвано тем, что транспортный уровень отправляет слишком много данных за один раз. Это означает, что с этим также придется иметь дело или «контролировать» на транспортном уровне.
Контроль перегрузки также осуществляется на сетевом уровне, но мы пока не опускаем эту деталь, поскольку в этой статье основное внимание уделяется транспортному уровню.
Вот как транспортный уровень контролирует перегрузку:
- Он отправляет пакеты с меньшей скоростью в ответ на перегрузку,
- «Более низкая скорость» по-прежнему достаточно высока, чтобы эффективно использовать доступную емкость,
- Также отслеживаются изменения в трафике.
Алгоритмы управления перегрузкой основаны на этих общих идеях и встроены в протоколы транспортного уровня, такие как TCP. Прежде чем двигаться дальше, давайте также рассмотрим несколько принципов распределения полосы пропускания.
Алгоритмы управления перегрузкой: (Охватываются только популярные алгоритмы, используемые в компьютерных сетях, есть и многие другие.)
- Алгоритм дырявого ведра
- Алгоритм Token Bucket
Подробнее об этих двух можно вкратце прочитать в нашем любимом GeeksForGeeks.
Установление TCP-соединения: трехстороннее рукопожатие:
TCP-соединение устанавливается с помощью трехстороннего рукопожатия. На этапе установления соединения используются порядковый номер, номер подтверждения и флаг SYN.
Инициирование соединения
Когда клиентский хост хочет открыть TCP-соединение с сервером, он создает и отправляет TCP-сегмент с:
- Установлен флаг SYN
- Порядковый номер установлен на случайное начальное значение. Поэтому порядковые номера не начинаются с 0! Вы можете догадаться, почему? Это объясняется ниже:
Атака с прогнозированием последовательности TCP:
Рассмотрим следующий сценарий: удаленный сервер предоставляет клиенту root-доступ без пароля на основе IP-адреса клиента. Таким образом, клиенту просто нужно будет подключиться к серверу, и ему будет предоставлен привилегированный доступ. Назовем этого клиента A.
- Злоумышленник может маскироваться под A, подделав IP-адрес A (да, IP-адреса могут быть подделаны) и инициировать TCP-соединение с помощью SYN пакет.
- Сервер будет думать, что A установил соединение, и ответит отправкой SYN / ACK на A.
- Поскольку злоумышленник не может получать ответы сервера, он должен будет предсказать порядковый номер. Если исходный порядковый номер всегда был фиксированным значением, злонамеренный объект сможет отправить ACK с правильным номером подтверждения в последнем пакете на основе начального порядкового номера, который будет использовать сервер, и поэтому отправит его в ACK.
- Злоумышленник успешно получил неавторизованный привилегированный доступ к серверу, установив 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 и о том, как это влияет на сегодняшний цифровой мир.
Мы очень ценим ваши критические отзывы.
Пожалуйста, оставьте комментарии, если хотите что-то исправить или добавить.
Спасибо!!!
_________________________________________________________________
Мой выбор статьи дня:
Цитата дня:
«Лучше всего знать четыре вещи:
праздность, печаль, друг и враг.
Четыре вещи, без которых мне было бы лучше:
Любовь, любопытство, веснушки , и сомнение.
Три вещи, которых я никогда не достигну:
Зависть, удовлетворение и достаточное количество шампанского.
Три вещи, которые у меня будут, пока я не умру:
Смех и надежда и носок в глазу ».
- Дороти Паркер.
___________________________________________________________________
Использованная литература:
- GeekForGeeks
- Википедия
- I БМ Редбуки.
- Середина