По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Вот 5 советов, которые помогут Вам получить приятные впечатления и повысить производительность при использовании VMWare Workstation. 5 лайфхаков для пользователя VMWare Workstation 1. Убедитесь, что выбрана правильная гостевая операционная система Вы можете убедиться в этом в меню Настройки -> Редактор конфигурации -> Гостевая ОС (Settings -> Configuration Editor -> Guest OS). 2. Параметры настройки памяти Если Вы планируете запускать одну виртуальную машину продолжительное время, то хорошим решением является предоставление виртуальной машине половины памяти, доступной на хосте. На хосте Linux перейдите в раздел Настройки -> Общий объем зарезервированной памяти (Settings -> Total Reserved Memory.). На хосте Windows NT или Windows 2000 перейдите в раздел Параметры -> Глобальные настройки -> Память (Settings -> Global Preferences -> Memory). 3. Обычный режим и режим отладки Виртуальные машины будут работать немного медленнее, если они работают в режиме отладки. Выберите Параметры -> Редактор конфигурации -> Разное (Settings -> Configuration Editor -> Misc). Убедитесь, что на хосте Linux установлен обычный уровень регистрации (Logging level -> Normal). Убедитесь, что на хосте Windows NT или Windows 2000 снят флажок "Выполнить с отладочной информацией" (Run with Debugging Information). 4. Установите инструменты VMware Внутри виртуальной машины диски SCSI и диски IDE, использующие прямой доступ к памяти (DMA - direct memory access), имеют примерно одинаковую производительность. Однако диски IDE могут быть очень медленными в гостевой операционной системе, которая либо не может использоваться, либо не настроена на использование DMA. VMWare Tools поможет решить эту проблему. После установки VMWare Tools можно перетаскивать файлы между хостом и виртуальной машиной. Для использования данной функции необходимо установить VMWare Tools. VMWare Tools можно установить в меню «Виртуальная машина» -> Установка VMWare Tools. 5. Снимки виртуальных машин Выключите (выключите питание) вашу виртуальную машину перед созданием снимка. Снимки, сделанные в состоянии «Включено» (Power On) или «Приостановлено» (Suspended) часто занимают больше места и памяти, а также могут занять некоторое время для загрузки в следующем восстановлении снимка. "Включения питания" или "приостановленного" состояния, часто занимают больше места и памяти, а также загрузка может занять некоторое время при следующем восстановлении снимка. Если Вы можете, выключите виртуальную машину, а затем сделайте снимок.
img
Веб-разработчики являются неотъемлемой частью эпохи Интернета. Веб-сайты и мобильные страницы, с которых мы получаем большую часть нашей информации, совершаем покупки, бронируем билеты и так далее, созданы и управляются веб-разработчиками. Веб-разработчики - это люди, которые проектируют и разрабатывают веб-сайты и мобильные приложения. Они используют несколько языков программирования для реализации необходимых функций. Веб-приложение или мобильное приложение имеют множество различных компонентов, которые взаимодействуют друг с другом для создания всей функциональности системы. Из-за этого сложного характера веб-разработчиков можно разделить на Front-End, Back-End и Full-stack разработчиком. Как стать веб-разработчиком Front-End веб-разработчики также известны как разработчики на стороне клиента. Они работают над внешним видом и ощущением веб-приложения. Вы, наверное, не раз слышали эти модные аббревиатуры UX и UI, которые как раз обозначают User Experience (пользовательский опыт) и User Interface (пользовательский интерфейс), за которые ответственен фронтенд разработчик. Back-End разработчики используют языки программирования и реляционные базы данных для интеграции внешнего интерфейса с внутренним. Со временем наборы умений фронт-энда и бэк-энда разработчиков пересекались, и в настоящее время индустрия предпочитает разработчиков с мастерством в обоих. Такие эксперты называются Full Stack Developers, и они обладают навыками как Front-End, так и Back-End разработки. Давайте рассмотрим навыки, необходимые для того, чтобы стать веб-разработчиком. 1. Графика или пользовательский интерфейс (UI) Знание графики или пользовательского интерфейса имеет большое значение для понимания эстетического аспекта веб-дизайна. Это позволяет выявлять и устранять проблемы совместимости между веб-браузерами при отображении страниц. 2. HTML, CSS, JavaScript Это строительные блоки веб-разработки. Они позволяют разработчику создавать структуру, стиль и содержание веб-сайта. Дополнительное знание сторонних библиотек, таких как jQuery, LESS, Angular и React JS, крайне желательно. HTML определяет структуру представления страниц. CSS обеспечивает контроль над макетом, позволяя создавать точные секционные модули, а также позволяет разработчикам настраивать макет страницы, цвета, шрифты и добавлять эффекты анимации. JavaScript является продвинутым по своей природе, что помогает сделать веб-страницу более интерактивной. Он предлагает изысканные функции, которые помогают сделать веб-страницы более отзывчивыми. Зная DOM, JSON позволяет вам манипулировать Javascript кодом. 3. CMS Система управления контентом (Content Management Systems) - это приложение, которое позволяет пользователям эффективно публиковать и управлять контентом веб-сайта. Это интуитивно понятный пользовательский интерфейс, который помогает в создании и изменении содержимого веб-страницы. Несмотря на то, что здесь не требуется опыта в программировании бэкэнда, знание HTML и CSS необходимо. В зависимости от используемой CMS вы можете реализовать расширенные функции, установив плагины и расширения. Wordpress, Joomla, Drupal, Magento, Laravel, Typo3, Serendipity, Chamilo - вот некоторые из них, которые стоит добавить в вашу базу знаний. 4. UX Пользовательский опыт не имеет прямого отношения к знаниям о дизайне; напротив, это относится к аналитическому и техническому пониманию того, как должно работать веб-приложение. Это понимание факторов, которые удерживают пользователей на сайте, помогают им найти то, что они ищут, и оптимизируют поддерживаемые функции. 5. Языки программирования Языки программирования помогают внедрять интерактивные функции на сайт. Они несут ответственность за возможность хранить, обновлять, манипулировать и получать доступ к данным из базы данных в пользовательский интерфейс. Для веб-разработки основными языками программирования, с которыми нужно ознакомиться, являются Java, Javascript, .NET, PHP, Perl, Python, C, C ++ и Ruby. Выбор языка программирования в основном зависит от программного стека и типа разрабатываемого проекта. Про выбор языка программирования можно прочитать в нашей статье. 6. СУБД Веб-приложения должны хранить данные, с возможностью для доступа к ним, и когда это необходимо, что требует хорошего знания системы управления реляционными базами данных. Веб-разработчик должен хорошо понимать его синтаксис для создания, обновления, манипулирования и доступа к базе данных до ее оптимального уровня. Он должен понимать разницу между реляционной и нереляционной базой данных наряду со знанием XML/JSON. Понимание особенностей реляционной базы данных, веб-хранилища, знание NoSQL и связей с базами данных укрепляют карьеру веб-разработчика. 7. Программный стек Это совокупность программных подсистем, которые вместе работают вместе, чтобы создать платформу для поддержки приложения без необходимости в дополнительном программном обеспечении. Говорят, что приложение «работает поверх» определенного программного стека. Независимо от программного стека, всегда существует сходство в архитектуре программного стека. Примеры программных стеков для веб-разработки: LAMP [Linux | Apache | MySQL | PHP] MERN [MongoDB | Express | React | Node.js] MEAN [MongoDB | Express | Angular | Node.js] Понимание стека программного обеспечения требуется при работе над проектом, поскольку оно дает лучшее техническое представление о разрабатываемом программном обеспечении. Вы можете оптимизировать производительность, предлагать изменения и устранять технические проблемы. 8. SEO Поисковая оптимизация (Search Engine Optimization) не может считаться обязательным требованием для веб-разработчика. Но знания в этой области помогут вам с самого начала структурировать веб-сайт как оптимизированный для SEO. Это, в конечном счете, облегчит работу профессионалов SEO, но более того, веб-приложение имеет больше шансов на успех. Итог Наличие всех вышеперечисленных навыков дает вам возможность выбора из нескольких карьерных возможностей. На сегодняшнем рынке веб-разработчики должны иметь более одного определенного набора навыков.
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, таких как простая замена базового протокола плоскостью управления истинным состоянием канала.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59