По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Протокол связующего дерева (STP) был первоначально разработан Radia Perlman и впервые описан в 1985 году в Алгоритме распределенного вычисления связующего дерева в расширенной локальной сети. 1 STP уникален в списке рассматриваемых здесь плоскостей управления, поскольку изначально был разработан для поддержки коммутации, а не маршрутизации. Другими словами, STP был разработан для поддержки переадресации пакетов без времени жизни (TTL) и без подкачки заголовка per hop коммутационным устройством. Пакеты, коммутируемые на основе STP, передаются по сети без изменений. Построение дерева без петель Процесс построения дерева без петель выглядит следующим образом: Каждое устройство переводит все порты в заблокированный режим, чтобы ни один порт не пересылал трафик, и начинает объявлять блоки данных протокола моста (Bridge Protocol Data Units -BPDU) для каждого порта. Этот BPDU содержит: Идентификатор объявленного устройства, который является приоритетным в сочетании с локальным интерфейсом Media Access Control (MAC) адресом. Идентификатор корневого моста-кандидата. Это мост с самым низким идентификатором, о котором знает локальное устройство. Если каждое устройство в сети запускается в один и тот же момент, то каждое устройство будет объявлять себя как корневой мост-кандидат, пока не узнает о других мостах с более низким идентификатором моста. При получении BPDU на интерфейсе идентификатор корневого моста, содержащийся в BPDU, сравнивается с локально сохраненным наименьшим идентификатором корневого моста. Если идентификатор корневого моста, содержащийся в BPDU, меньше, то локально сохраненный идентификатор корневого моста заменяется вновь обнаруженным мостом с более низким идентификатором. После нескольких раундов объявлений каждый мост должен был обнаружить мост с наименьшим идентификатором моста в сети и объявить этот мост корневым. Это должно происходить, пока все порты на всех устройствах все еще заблокированы (не пересылают трафик). Чтобы убедиться, что это действительно произойдет, пока все порты все еще заблокированы, таймер устанавливается на достаточно длительное время, позволяющий выбрать корневой мост. После выбора корневого моста определяется кратчайший путь к корневому мосту. Каждый BPDU также содержит метрику для достижения корневого моста. Этой метрикой может быть количество переходов, но стоимость каждого перехода также может варьироваться в зависимости от административных переменных, таких как пропускная способность канала. Каждое устройство определяет порт, через который оно имеет самый дешевый путь к корневому мосту. Он отмечен как корневой порт. Если существует более одного пути к корневому мосту с одинаковой стоимостью, используется прерыватель связи. Обычно это идентификатор порта. Для любого звена, по которому соединены два моста: Мост с наименьшей стоимостью пути к корневому мосту выбирается для пересылки трафика от канала к корневому мосту. Порт, соединяющий выбранный сервер пересылки с каналом, помечается как назначенный порт. Порты, отмеченные как корневые или как назначенные порты, могут пересылать трафик. Результатом этого процесса является единое дерево, по которому доступны все пункты назначения в сети. На рисунке 1 показано, как STP работает в реальной топологии. Предположим, что все устройства на рисунке 1 были включены в один и тот же момент. Существует ряд возможных вариаций времени, но процесс построения набора безцикловых путей через сеть будет выглядеть, с точки зрения F, примерно так: Выберите корневой мост: F объявляет BPDU E и D с идентификатором и корневым мостом кандидата 32768.0200.0000.6666. D (при условии, что D не получил никаких BPDU) объявляет BDPU с идентификатором и корневым мостом кандидата 28672.0200.0000.4444. E (при условии, что E не получил никаких BPDU) объявляет BPDU с идентификатором и корневым мостом-кандидатом 32768.0200.0000.5555. На этом этапе F выберет D в качестве корневого моста и начнет объявлять BPDU со своим локальным идентификатором и корневым мостом-кандидатом, установленным на идентификатор D. В какой-то момент D и E получат BPDU от C, имеющего идентификатор нижнего моста (24576.0200.0000.3333). Получив этот BPDU, они оба установят свой ID корневого моста кандидата на ID C и отправят новые BPDU в F. Получив эти новые BPDU, F отметит, что новый идентификатор корневого моста кандидата ниже, чем его предыдущий идентификатор корневого моста кандидата, и затем выберет C в качестве корневого моста. После нескольких циклов BDPU все мосты в сети выберут C в качестве корневого моста. Отметьте корневые порты, найдя кратчайший путь к корню: Предположим, что каждая линия связи стоит 1. D получит BDPU от C с локальным идентификатором и идентификатором корневого моста 24576.0200.0000.3333 и стоимостью 0. D добавит стоимость достижения C, одного перехода, объявляя, что он может достичь корневого моста со стоимостью от 1 до F. E получит BDPU от C с локальным идентификатором и идентификатором корневого моста 24576.0200.0000.3333 и стоимостью 0. E добавит стоимость достижения C, одного перехода, объявляя, что он может достичь корневого моста со стоимостью от 1 до F. F теперь имеет два объявления о корневом мосте с равной стоимостью. Он должен разорвать связь между этими двумя доступными путями. Для этого F проверяет идентификаторы объявленных мостов. Идентификатор моста D меньше, чем E, поэтому F будет отмечать свой порт, направленный к D, как корневой порт. Маркировка назначенных портов на каждом канале: Единственный другой порт F направлен в сторону E. Должен ли быть заблокирован этот порт? Чтобы определить это, F сравнивает свой локальный идентификатор моста с идентификатором моста E. Приоритеты одинаковы, поэтому для принятия решения необходимо сравнить адреса локальных портов. Локальный идентификатор F заканчивается на 6666, а у E - на 5555, поэтому E меньше. F не отмечает интерфейс к E как назначенный порт; вместо этого он отмечает этот порт как заблокированный. E выполняет то же сравнение и отмечает свой порт в направлении F как назначенный порт. D сравнивает свою стоимость по отношению к корню со стоимостью F по отношению к корню. Стоимость D ниже, поэтому он пометит свой порт в направлении D как назначенный порт. На рисунке 2 показаны заблокированные, назначенные и корневые порты после завершения этих вычислений. Порты на рисунке 2 помечены как bp для заблокированного порта, rp для корневого порта и dp для назначенного порта. Результатом процесса является дерево, которое может достигать любого сегмента сети, и, следовательно, хостов, подключенных к любому сегменту в сети. Один интересный момент, связанный с STP, заключается в том, что в результате получается единое дерево по всей топологии, закрепленное на корневом мосту. Если какой-либо хост, подключенный к E, отправляет пакет на хост, подключенный к B или F, пакет должен проходить через C, корневой мост, потому что один из двух портов на каналах [F, E] и [E, B] является заблокирован. Это не самое эффективное использование полосы пропускания, но оно предотвращает зацикливание пакетов во время нормальной пересылки. Как обрабатывается обнаружение соседей в STP? Обнаружение соседей вообще не рассматривается с точки зрения надежной передачи информации по сети. Каждое устройство в сети строит свои собственные BPDU. Эти BPDU не проходят через какое-либо устройство, поэтому нет необходимости в сквозной надежной транспортировке в плоскости управления. Однако обнаружение соседей используется для выбора корневого моста и построения дерева без циклов по всей топологии с использованием BPDU. А как насчет отброшенных и потерянных пакетов? Любое устройство, на котором запущен протокол STP, периодически повторно передает свои BPDU по каждому каналу (в соответствии с таймером повторной передачи). Устройству, на котором запущен протокол STP, требуется несколько отброшенных пакетов (согласно таймеру отключения), чтобы предположить, что его соседи вышли из строя, и, следовательно, перезапустить вычисление состояний корневого моста и порта. В STP нет двусторонней проверки подключения ни для каждого соседа, ни на всем пути. Также не существует какой-либо проверки maximum Transmission Unit (MTU). STP изучает топологию, комбинируя BPDU с информацией о локальных каналах для каждого узла. Однако в сети нет ни одного узла с таблицей, описывающей всю топологию. Изучение доступных пунктов назначения Как STP разрешает пересылку? В частности, как устройства, на которых запущен протокол STP, узнают о доступных местах назначения? Рассмотрим рисунок 3. На рис. 3 показано состояние сети с вычисленным связующим деревом и каждым портом, отмеченным как назначенный или корневой порт. В этой топологии нет заблокированных портов, потому что нет петель. Предположим, B, C и D не имеют информации о подключенных устройствах; A отправляет пакет в сторону E. Что происходит в этот момент? A передает пакет по каналу [A, B]. Поскольку B имеет назначенный порт на этом канале, он примет пакет (коммутаторы принимают все пакеты на назначенных портах) и проверит адреса источника и назначения. B может определить, что A доступен через этот назначенный порт, потому что он получил пакет от A на этом порту. Исходя из этого, B вставит MAC-адрес A как достижимый в свою таблицу пересылки через свой интерфейс на канале [A, B]. B не имеет информации о E, поэтому он будет рассылать этот пакет через каждый из своих незаблокированных портов. В этом случае единственный другой порт B - это его корневой порт, поэтому B пересылает этот пакет в C. Это лавинная рассылка называется Broadcast, Unknown, и Multicast (BUM) трафиком. BUM-трафик - это то, чем должна каким-то образом управлять каждая плоскость управления, которая изучает пункты назначения в процессе пересылки. Когда C получает этот пакет, он проверяет адрес источника и обнаруживает, что A доступен через назначенный порт, подключенный к [B, C]. Он вставит эту информацию в свою локальную таблицу пересылки. У C также нет информации о том, где E находится в сети, поэтому он просто лавинно рассылает пакет по всем незаблокированным портам. В этом случае единственный другой порт C - это канал [C, D]. D повторяет тот же процесс, которому следовали B и C, узнавая, что A доступен через его корневой порт по каналу [C, D], и лавинно направляет пакет по каналу [D, E]. Когда E получает пакет, он обрабатывает информацию и отправляет ответ обратно A. Когда D получает этот ответный пакет от E, он проверяет адрес источника и обнаруживает, что E доступен через назначенный ему порт по каналу [D, E]. D действительно знает обратный путь к A, поскольку он обнаружил эту информацию при обработке первого пакета в потоке, идущем от A к E. Он будет искать A в своей таблице пересылки и передавать пакет по каналу [C, D]. C и B будут повторять процесс, который D и C использовали для определения местоположения E и перенаправления обратного трафика обратно в A. Таким образом, узнавая адрес источника по входящим пакетам, а также путем лавинной рассылки или пересылки пакетов по исходящим каналам, каждое устройство в сети может узнать о каждом достижимом месте назначения. Поскольку протокол STP основан на изучении доступных адресатов в ответ на пакеты, передаваемые по сети, его классифицируют как реактивную плоскость управления. Обратите внимание, что этот процесс обучения происходит на уровне хоста; подсети и IP-адреса не изучаются, а скорее изучается физический адрес интерфейса хоста. Если один хост имеет два физических интерфейса на одном и том же канале, он будет отображаться как два разных хоста для плоскости управления STP. Как удаляется информация из таблиц пересылки на каждом устройстве? Через процесс тайм-аута. Если запись пересылки не была использована в определенное время (таймер удержания), она удаляется из таблицы. Следовательно, STP полагается на кэшированную информацию пересылки. Подведение итогов о протоколе связующего дерева STP явно не является ни протоколом состояния канала, ни протоколом вектора пути. Это протокол вектора расстояния? Любая путаница в том, как классифицировать протокол, проистекает из первоначального выбора корневого моста перед вычислением кратчайших путей. Удалив этот первый шаг, проще классифицировать STP как протокол вектора расстояния, используя распределенную форму алгоритма Беллмана-Форда для расчета путей без петель по топологии. Что нужно сделать с первоначальным расчетом корневого моста? Эта часть процесса гарантирует, что во всей сети будет только одно дерево кратчайшего пути. Таким образом, STP можно классифицировать как протокол вектора расстояния, который использует алгоритм Беллмана-Форда для вычисления единого набора кратчайших путей для всех пунктов назначения во всей сети. Другими словами, STP вычисляет дерево кратчайшего пути по топологии, а не по адресатам. Почему так важно, чтобы одно дерево вычислялось по всей сети? Это связано со способом, которым STP изучает информацию о доступности: STP - это реактивная плоскость управления, изучающая достижимость в ответ на фактические пакеты, проходящие через сеть. Если бы каждое устройство построило отдельное дерево с корнями в самом себе, этот реактивный процесс привел бы к несогласованному представлению топологии сети и, следовательно, к петлям пересылки. STP и широковещательные штормы Широковещательные рассылки - важная часть обнаружения служб в большинстве приложений. Например, как показано на рисунке 4, как A может обнаружить присутствие определенной службы на F? Самое простое, что может сделать A в этой ситуации, - это отправить какой-то пакет, который будет доставлен на каждый хост, подключенный к сети, и дождаться ответа от хоста, на котором запущена данная служба. Таким образом, A отправляет широковещательную рассылку с вопросом о конкретной услуге или устройстве. Как B, C, D и E должны относиться к этой трансляции? Поскольку широковещательная рассылка не является «обучаемым» адресом (широковещательную рассылку должно принимать каждое устройство в каждом сегменте), лучше всего для коммутаторов пересылать пакет на каждый неблокированный порт. Что произойдет, если А выполнит много рассылок? Что произойдет, если хост отправит достаточно широковещательных рассылок, чтобы отбросить BPDU? В этом случае сам STP запутается и, скорее всего, создаст цикл пересылки в топологии. Такой цикл пересылки будет, конечно, пересылать широковещательные пакеты постоянно, так как нет TTL для отбрасывания пакетов после того, как они пересекли сеть определенное количество раз. Каждая рассылка, передаваемая A, в этой ситуации останется в сети навсегда, петляя, возможно, между коммутаторами B, C, D и E. И каждая рассылка, добавленная к нагрузке сети, конечно же, предотвратит успешную передачу или прием BPDU, предотвращая схождение STP. Следовательно, трафик в сети препятствует сходимости STP, а отсутствие сходимости увеличивает нагрузку трафика на саму сеть – возникает положительный цикл обратной связи, который вызывает хаос во всей сети. Эти события называются широковещательными штормами и достаточно распространены в сетях на основе STP, чтобы заставить мудрых проектировщиков и операторов сети ограничивать область действия любого домена STP. Существование широковещательных штормов также привело к ряду модификаций работы STP, таких как простая замена базового протокола плоскостью управления истинным состоянием канала.
img
Почитайте предыдущую статью про безопасность передачи данных. Некоторые из самых ранних криптографических систем включали обертывание бумагой цилиндра определенного размера. Цилиндр должен был каким-то образом переноситься между двумя участниками зашифрованной связи, чтобы противник не захватил его. В более поздние годы блоки ключей физически переносились между двумя конечными точками зашифрованной системы. Некоторые из них были организованы таким образом, чтобы определенная страница использовалась в течение определенного периода времени, а затем вырывалась и уничтожалась, заменена новой страницей на следующий день. Другие были разработаны таким образом, чтобы каждая страница в блокноте использовалась для шифрования одного сообщения, после чего страница вырывалась и заменялась одноразовым блокнотом. Концепция одноразового блокнота была перенесена в современный мир с системами аутентификации, которые позволяют пользователю создавать код, который используется один раз, а затем отбрасывается, чтобы быть замененным новым кодом в следующий раз, когда пользователь попытается аутентифицироваться. Любая система, использующая код, который используется один раз, по-прежнему называется одноразовым блокнотом (one-time pad). В современном мире есть другие способы обмена криптографическим материалом, будь то использование общего секретного ключа или получение закрытого ключа. Во многих случаях в криптографии легче объяснить, как что-то работает, на тривиальных примерах. В следующих пояснениях Фаина и Дима будут двумя пользователями, которые пытаются обмениваться защищенной информацией, причем Фаина является инициатором и отправителем, а Дима - получателем. Обмен публичными ключами Фаина хотела бы отправить сообщение Диме таким образом, чтобы его мог прочитать только Дима. Для этого ей нужен открытый ключ Димы (помните, что у нее не должно быть доступа к закрытому ключу Димы). Где она может получить эту информацию? Она могла: Спросить об этом у Димы напрямую. Это может показаться простым, но в реальной жизни это может быть очень сложно. Как, например, она может быть уверена, что действительно общается с Димой? Найти открытый ключ Димы в открытой базе данных ключей (на сервере ключей). Опять же, это кажется простым, но как она узнает, что нашла нужный ключ или кто-то не разместил ложный ключ для Димы на этом конкретном сервере? Эти две проблемы можно решить с помощью какой-то системы репутации. Например, в случае открытого ключа Дима может попросить нескольких своих друзей, которые хорошо его знают, подписать его открытый ключ, используя свои закрытые ключи. Их подпись на его открытом ключе, по сути, гласит: "Я знаю Дмитрия, и я знаю, что это его открытый ключ". Фаина может изучить этот список друзей, чтобы определить, кому из них она может доверять. Основываясь на этом исследовании, Фаина может определить, что она либо верит, что этот конкретный ключ является ключом Димы, либо нет. В этой ситуации Фаина сама решает, сколько и какого рода доказательств она примет. Должна ли она, например, признать, что ключ, который у нее есть, на самом деле принадлежит Диме, потому что: Она напрямую знает одного из друзей Димы и верит, что этот третий человек скажет ей правду. Она знает кого-то, кто знает одного из друзей Димы, и доверяет своему другу, чтобы он рассказал ей правду о друге Димы, и, следовательно, доверяет другу Димы рассказать правду о Диме и его ключе. Она знает нескольких человек, которые знают нескольких друзей Димы, и принимает решение доверять этому ключу Димы, основываясь на свидетельствах нескольких человек. Такая система называется паутиной доверия. Общая идея заключается в том, что доверие имеет разные уровни транзитивности. Концепция транзитивного доверия несколько противоречива, но идея, лежащая в основе сети доверия, заключается в том, что, если вы получаете достаточно доказательств, вы можете создать доверие в паре человек/ключ. Примером такого рода паутины доверия является система Pretty Good Privacy, где люди встречаются на конференциях, чтобы перекрестно подписывать ключи друг друга, создавая паутину транзитивных доверительных отношений, на которые можно положиться, когда их общение переходит в сферу только электронных. Другой вариант - владелец сервера ключей может каким-то образом провести расследование в отношении Дмитрия и определить, действительно ли он тот, кем он себя выдает, и действительно ли это его ключ. Самый яркий пример такого решения в "реальном мире" - это нотариус. Если вы подписываете документ перед нотариусом, он проверяет наличие какой-либо формы удостоверения личности (подтверждающей, кто вы), а затем наблюдает, как вы физически подписываете документ (проверяя ваш ключ). Этот вид проверки называется центральным источником доверия (или аналогичным - хотя в нем почти всегда есть слово "централизованный") или инфраструктурой открытого ключа (Public Key Infrastructure -PKI). Решение зависит от доверия Фаины процессу и честности централизованного хранилища ключей. Обмен закрытыми ключами Учитывая, что криптография с симметричным ключом обрабатывается намного быстрее, чем криптография с открытым ключом, в идеале вы хотели бы зашифровать любые давно существующие или большие потоки с использованием симметричного общего секретного ключа. Но, если не считать физического обмена ключами, как можно обмениваться одним закрытым ключом между двумя устройствами, подключенными по сети? Рисунок 1 демонстрирует это. На рисунке выше: Предположим, А начинает процесс. A зашифрует одноразовый номер, случайное число, которое используется один раз в процессе, а затем выбрасывается (по сути, одноразовый номер представляет собой форму одноразового блокнота), используя открытый ключ B. Поскольку одноразовый номер был зашифрован с помощью открытого ключа B, теоретически только B может расшифровать одноразовый номер, поскольку только B должен знать закрытый ключ B. B, после расшифровки одноразового номера, теперь отправит новый одноразовый номер в A. Он может включать исходный одноразовый номер A или исходный одноразовый номер A плюс некоторая другая информация. Дело в том, что A должен точно знать, что исходное сообщение, включая одноразовый номер A, было получено B, а не какой-либо другой системой, действующей как B. Это обеспечивается B, включая некоторую часть информации, которая была зашифрована с использованием его открытого ключа, поскольку B - единственная система, которая могла его расшифровать. A и B, используя одноразовые номера и другую информацию, обмениваемую до этого момента, вычисляют закрытый ключ, который затем используется для шифрования / расшифровки информации, передаваемой между двумя системами. Описанные здесь шаги несколько наивны. Есть лучшие и более безопасные системы, такие как протокол Internet Key Exchange (IKE).
img
Образы Docker в работающем контейнере не обновляются автоматически. После того, как вы использовали образ для создания контейнера, он продолжает работать с этой версией даже после выхода новых выпусков. Рекомендуется запускать контейнеры из последнего образа Docker, если у вас нет особой причины использовать более старую версию. В этом руководстве вы узнаете, как обновить образ и контейнер Docker до последней версии. Обнолвение образа и контейнера Docker до последней версии Лучший способ обновить существующий контейнер c новым образом - загрузить последний образ и запустить новый контейнер с той же конфигурацией. Следуйте инструкциям ниже, чтобы обновить свой контейнер до новейшего образа Docker. Примечание. В этом руководстве используется пример запуска контейнера MySQL Docker, чтобы проиллюстрировать, как обновить образ и контейнер Docker до последней версии. Шаг 1. Проверьте текущую версию Убедитесь, что у вас устаревший образ, выведя список образов в вашей системе с помощью команды: sudo docker images Тут отображаются загруженные изображения и их теги (номера версий). В приведенном ниже примере система показывает, что она использует образ mysql версии 5.7.31. Официальные образы MySQL от Docker, перечисленные на DockerHub, показывают, что последняя версия - 8.0.21. Поэтому, если у вас есть контейнер, работающий с этим образом, лучше его обновить. Чтобы указать только определенный образ, который может быть устаревшим, используйте docker images | grep [docker_image], чтобы сузить поиск. Шаг 2. Скачайте новейший образ Загрузите более новую версию образа с помощью команды docker pull: docker pull [docker_image] По умолчанию Docker загружает последнюю версию. Чтобы убедиться в этом, вы можете добавить тег :latest. Например, чтобы получить последний образ mysql, вы должны запустить: docker pull mysql/mysql-server:latest Шаг 3. Запустите новый обновленный контейнер После того, как вы загрузили последний образ Docker, вам необходимо остановить и удалить старый контейнер. Затем создайте новый с последним образом. 1. Найдите имя запущенного контейнера с устаревшим образом, перечислив контейнеры в системе: docker ps В этом примере на выходе показан контейнер с образом mysql / mysql-server: 5.7.31. 2. Остановите и удалите существующий контейнер, чтобы вы могли запустить новый под тем же именем: docker stop [container_id] docker rm [container_id] 3. Воссоздайте контейнер с помощью команды docker run и желаемой конфигурации, используя обновленный образ Docker: docker run --name=[container_name] [options] [docker_image] Если он у вас есть, обязательно смонтируйте том Docker, назначенный ранее использовавшемуся контейнеру, чтобы обновленный контейнер имел такое же содержимое. Для этого используйте параметр -v, за которым следует путь к каталогу тома. Например, чтобы запустить обновленный контейнер MySQL, вы должны запустить: docker run --name=mysql --restart=always -e MYSQL_ROOT_PASSWORD=mypassword -v /path/to/directory:/var/lib/mysql -d mysql 4. Вы можете проверить, обновлен ли ваш контейнер последней версией образа Docker, таким образом: sudo docker ps Таким образом, вы должны были успешно обновить свой контейнер Docker.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59