По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Git – это популярная система контроля версий. Благодаря Git разработчики могут сотрудничать и без проблем работать над проектами совместно. Git позволяет отслеживать изменения, которые вы вносите в проект с течением времени. Помимо этого, он позволяет вернуться к предыдущей версии, если вы вдруг решили не вносить изменение. Git работает по следующему принципу: вы размещаете файлы в проекте с помощью команды git add, а затем фиксируете (коммитите) их с помощью команды git commit. При совместной работе над проектами могут возникнуть ситуации, когда вы не захотите, чтобы какие-то файлы или части проекта были видны всем участникам команды. Иными словами, вы не захотите включать и фиксировать эти файлы в основной версии проекта. Вот почему вы можете не захотеть использовать разделитель (точку) с командой git add, так как в этом случае каждый отдельный файл будет размещен в текущем каталоге Git. Когда вы используете команду git commit, то каждый отдельный файл фиксируется – это также добавляет файлы, которые не нужно. Вы можете, наоборот, захотеть, чтобы Git игнорировал определенные файлы, но для такой цели не существует команды git ignore. Итак, как же сделать так, чтобы Git игнорировал и не отслеживал определенные файлы? С помощью файла .gitignore. В этой статье вы узнаете, что такое файл .gitignore, как его создать и как использовать для игнорирования некоторых файлов и папок. Также вы узнаете, как можно заставить Git игнорировать уже закоммиченый файл. Что такое файл .gitignore? Для чего он нужен? Каждый из файлов в любом текущем рабочем репозитории Git относится к одному из трех типов: Отслеживаемые – это все файлы и каталоги, о которых знает Git. Это файлы и каталоги, которые были недавно размещены (добавлены с помощью git add) и зафиксированы (закоммичены с помощью git commit) в главном репозитории. Неотслеживаемые – это новые файлы и каталоги, которые созданы в рабочем каталоге, но еще не размещены (или добавлены с помощью команды git add). Игнорируемые – это все файлы и каталоги, которые полностью исключаются и игнорируются, и никто о них в репозитории Git не знает. По сути, это способ сообщить Git о том, какие неотслеживаемые файлы так и должны остаться неотслеживаемыми и не должны фиксироваться. Все файлы, которые должны быть проигнорированы, сохраняются в файле .gitignore. Файл .gitignore – это обычный текстовый файл, который содержит список всех указанных файлов и папок проекта, которые Git должен игнорировать и не отслеживать. Внутри файла .gitignore вы можете указать Git игнорировать только один файл или одну папку, указав имя или шаблон этого конкретного файла или папки. Используя такой же подход, вы можете указать Git игнорировать несколько файлов или папок. Как создать файл .gitignore Обычно файл .gitignore помещается в корневой каталог репозитория. Корневой каталог также известен как родительский или текущий рабочий каталог. Корневая папка содержит все файлы и другие папки, из которых состоит проект. Тем не менее, вы можете поместить этот файл в любую папку в репозитории. Если на то пошло, но у вас может быть несколько файлов .gitignore. Для того, чтобы создать файл .gitignore в Unix-подобной системе, такой как macOS или Linux, с помощью командной строки, откройте приложение терминала (например, в macOS это Terminal.app). Затем для того, чтобы создать файл .gitignore для вашего каталога, перейдите в корневую папку, которая содержит проект, и при помощи команды cd введите следующую команду: touch .gitignore Файлы, перед именем которых стоит точка ., по умолчанию скрыты. Скрытые файлы нельзя просмотреть, используя только команду ls. для того, чтобы иметь возможность просмотреть все файлы, включая скрытые, используйте флаг -a с командой ls следующим образом: ls –a Что добавлять в файл .gitignore В файл .gitignore должны быть добавлены файлы любого типа, которые не нужно фиксировать. Вы можете не хотеть их фиксировать из соображений безопасности или потому, что они нужны только вам и не нужны другим разработчикам, работающим над тем же проектом, что и вы. Вот некоторые файлы, которые могут быть включены: Файлы операционной системы. Каждая операционная система, будь то macOS, Windows или Linux, создает системные скрытые файлы, которые не нужны другим разработчикам, так как их система создает такие же файлы. Например, в macOS Finder создает файл .DS_Store, который содержит пользовательские настройки внешнего вида и отображения папок, такие как размер и положение иконок. Файлы конфигурации, создаваемые такими приложениями, как редакторы кода и IDE (Integrated Development Environment – интегрированная среда разработки). Эти файлы настроены под вас, ваши конфигурации и ваши настройки, например папка .idea. Файлы, которые автоматически генерируются языком программирования или средой разработки, которую вы используете для своего проекта, и в процессе компиляции специфичных для кода файлов, такие как файлы .o. Папки, созданные диспетчерами пакетов, например, папка npm node_modules. Это папка, которая используется для сохранения и отслеживания зависимостей для каждого пакета, который вы устанавливаете локально. Файлы, которые содержат конфиденциальные данные и личную информацию. Примерами таких файлов могут послужить файлы с вашими учетными данными (имя пользователя и пароль) и файлы с переменными среды, такие как файлы .env (файлы .env содержат ключи API, которые должны оставаться защищенными и закрытыми). Файлы среды выполнения, такие как файлы .log. Они предоставляют информацию об использовании операционной системы и ошибках, а также историю событий, произошедших в рамках ОС. Как игнорировать файл или папку в Git Если вы хотите игнорировать только один конкретный файл, то вам необходимо указать полный путь к файлу из корневой папки проекта. Например, если вы хотите игнорировать файл text.txt, который расположен в корневом каталоге, то вы должны сделать следующее: /text.txt А если вы хотите игнорировать файл text.txt, который расположен в папке test корневого каталоге, вы должны сделать следующее: /test/text.txt Вы можете это записать иначе: test/text.txt Если вы хотите игнорировать все файлы с определенным именем, то вам нужно написать точное имя файла. Например, если вы хотите игнорировать любые файлы text.txt, то вы должны добавить в .gitignore следующее: text.txt В таком случае вам не нужно указывать полный путь к конкретному файлу. Этот шаблон будет игнорировать все файлы с таким именем, расположенные в любой папке проекта. Для того, чтобы игнорировать весь каталог со всем его содержимым, вам нужно указать имя каталога со слешем в конце: test/ Эта команда позволит игнорировать любой каталог (включая другие файлы и другие подкаталоги внутри каталога) с именем test, расположенный в любой папке вашего проекта. Стоит отметить, что если вы напишете просто имя каталога без слеша, то этот шаблон будет соответствовать как любым файлам, так и любым каталогам с таким именем: # соответствует любым файлам и каталогам с именем test test Что делать, если вы хотите игнорировать любые файлы и каталоги, которые начинаются с определенного слова? Допустим, вы хотите игнорировать все файлы и каталоги, имя которых начинается с img. Для этого вам необходимо указать имя, а затем селектор подстановочного символа *: img* Эта команда позволит игнорировать все файлы и каталоги, имя которых начинается с img. Но что делать, если вы хотите игнорировать любые файлы и каталоги, которые заканчиваются определенным набором символов? Если вы хотите игнорировать все файлы с определенным расширением, то вам необходимо будет использовать селектор подстановочного знака *, за которым последует расширение файла. Например, если вы хотите игнорировать все файлы разметки, которые заканчиваются расширением .md, то вы должны в файл .gitignore добавить следующее: *.md Этот шаблон будет соответствовать любому файлу с расширением .md, расположенному в любой папке проекта. Мы разобрали, как игнорировать все файлы, которые оканчиваются одинаково. Но что делать, если вы хотите сделать исключение для одного из этих файлов? Допустим, вы добавили в свой файл .gitignore следующее: .md Этот шаблон позволит игнорировать все файлы, оканчивающиеся на .md, но вы, например, не хотите, чтобы Git игнорировал файл README.md. Для этого вам нужно будет воспользоваться шаблоном с отрицанием (с восклицательным знаком), чтобы исключить файл, который в противном случае был бы проигнорирован, как и все остальные: # игнорирует все файлы .md .md # не игнорирует файл README.md !README.md Учитывая эти два шаблона в файле .gitignore, все файлы, оканчивающиеся на .md будут игнорироваться, кроме файла README.md. Стоит отметить, что данный шаблон не будет работать, если вы игнорируете весь каталог. Допустим, что вы игнорируете все каталоги test: test/ И допустим, внутри папки test у вас есть файл example.md, который вы не хотите игнорировать. В этом случае вы не сможете сделать исключение для файла внутри игнорируемого каталога следующим образом: # игнорировать все каталоги с именем test test/ # попытка отрицания файла внутри игнорируемого каталога не сработает !test/example.md Как игнорировать ранее закоммиченый файл Лучше всего создать файл .gitignore со всеми файлами и различными шаблонами файлов, которые вы хотите игнорировать, при создании нового репозитория, до его коммита. Git может игнорировать только неотслеживаемые файлы, которые еще не были зафиксированы в репозитории. Что же делать, если вы уже закоммитили файл, но хотели бы, чтобы он все-таки не был закоммичен? Допустим, что вы случайно закоммитили файл .env, в котором хранятся переменные среды. Для начала вам необходимо обновить файл .gitignore, чтобы включить файл .env: # добавить файл .env в .gitignore echo ".env" >> .gitignore Теперь, вам нужно указать Git не отслеживать этот файл, удалив его из перечня: git rm --cached .env Команда git rm вместе с параметром --cached удаляет файл из репозитория, но не фактический файл. Это значит, что файл остается в вашей локальной системе и в вашем рабочем каталоге в качестве файла, который игнорируется. Команда git status покажет, что файла в репозитории больше нет, в ввод команды ls покажет, что файл существует в вашей локальной файловой системе. Если вы хотите удалить файл из репозитория и вашей локальной системы, то не используйте параметр --cached. Затем добавьте .gitignore в область подготовленных файлов с помощью команды git add: git add .gitignore И наконец, закоммитте файл .gitignore с помощью команды git commit: git commit -m "update ignored files" Заключение Вот и все – теперь вы знаете, как игнорировать файлы и папки в Git.
img
Во любой цепочке безопасности самым слабым звеном был и остается человек. Забывчивые сотрудники, которые пароли хранят в открытом виде, иногда даже приклеивают на монитор; любопытные пользователи, которые не прочь покликать по первой попавшейся кнопке или ссылке. Чем сидеть и ждать, когда кто-то извне взломает и потом принять меры, лучше самому выявить таких нарушителей и предотвратить взлом со всеми его последствиями. Одной из наиболее распространённых видов атак является фишинг атака. Фишинг это такой вид атаки, когда злоумышленник создает поддельную страницу, которая точь-в-точь копирует легальный сайт. Невнимательный пользователь перейдя по поддельной ссылке попадает на эту страницу. Так как внешний вид похож на доверенный ресурс, никто не догадывается проверить URL. Далее он, как ни в чем не бывало, вводит свои данные и нажимает на соответствующую кнопку. Страница перезагружается и перебрасывает пользователя уже на реальный сайт, а последний думает, что где-то ввёл что-то неправильно и еще раз вводит. А тем временем злоумышленник уже получил нужную ему информацию. Это могут быть пароли, номера кредитных карт и т.п. Данную атаку может провернуть даже начинающий хакер. Но мы лишим его такого удовольствия и сами раскинем свою сеть и посмотрим кто туда попадётся. В этом деле нам поможет бесплатный фреймворк gophish. Фреймворк мультиплатформенный, но я предпочитаю и советую поднять всё это на Linux машине. Подойдёт абсолютно любая версия. Перед тем как начать, посмотрите наш ролик "Информационная безопасность компании. Никаких шуток": Погнали. На сайте разработчика переходим по ссылке Download и качаем нужный нам дистрибутив. На Linux машину можно скачать сразу. Копируем ссылку на zip архив и в терминале вводим: wget https://github.com/gophish/gophish/releases/download/v0.8.0/gophish-v0.8.0-linux-64bit.zip Далее разархивируем скачанный файл: unzip gophish-v0.8.0-linux-64bit.zip Если в системе нет пакета unzip качаем его. Для Debian/Ubuntu apt-get install unzip Для RedHat/CentOS: yum install unzip Затем открываем файл config.json любым удобным вам редактором: nano config.json Меняем указанные ниже значения admin_server.listen_url 127.0.0.1:3333 IP/Port админ панели gophish admin_server.use_tls False Нужно ли защищённое соединение с админ панелью admin_server.cert_path example.crt Путь к SSL сертификату admin_server.key_path example.key Путь к приватному ключу SSL phish_server.listen_url 0.0.0.0:80 IP/Port самого фишинг сервера, куда переходят пользователи по ссылке Здесь первый параметр я поменял на 0.0.0.0:3333 так как мой сервер находится за межсетевым экраном и доступа извне туда нет. Но при необходимости можно организовать это. Также я отключил требование TLS. Во внутренней сети особой надобности в нем нет. Далее просто запускаем файл gophish командой: ./gophish И переходим на админскую часть нашего фишинг сервера. По умолчанию имя пользователя admin, а пароль gophish. Всё это можно потом поменять, но по порядку. При входе открывается панель, где видны проведённые атаки и результаты. Кликнув на иконке статистики можно перейти к детальным отчётам. Тут отображается вся информация о пользователях, которые перешли по ссылке, ввели данные. Есть еще отчёт по открытым письмам, но если пользователь не кликнул на ссылку в письме и не перешёл на нашу фишинговую страницу, то это значение не меняется. Поэтому, на мой взгляд, это просто лишняя информация. Теперь начнём непосредственно настраивать систему и готовить нашу атаку. Пойдем снизу вверх. На вкладке User Management можно создать новых пользователей. Для этого переходим на нужную страницу и нажимает на кнопку Add user: Хотя и пользователям можно назначать права, особого смысла тут тоже нет. Потому, что пользователь, во-первых, не видит никакие кампании другого пользователя, во-вторых, имеет те же самые права, что и администратор, с тем лишь отличием, что он не может создавать других пользователей или сбрасывать их пароли. На этой всё странице интуитивно понятно, так что не буду слишком углубляться. На вкладке Account Settings можно поменять имя пользователя пароль текущего пользователя. Следующая вкладка Sending Profiles. Вот тут то и переходим к этапу подготовки нашей атаки. На этой странице настраиваются профили, от имени которых будет идти атака. Вводим название профиля, e-mail, с которого будут рассылаться письма, адрес SMTP сервера и порт, имя пользователя и пароль при необходимости. Тут бы я хотел остановиться поподробней. Когда планировали свою атаку, мы решили создать почту на общедоступном почтовом ресурсе. Но там стоял лимит на число получателей, что в принципе и правильно. Поэтому первая наша кампания провалилась. И тогда мы оперативно создали новую DNS запись на нашем AD и провернули затею. Создание доменной записи я тут не буду объяснять, ибо этим занялись наши сисадмины, за что им спасибо. Далее можно создать mail заголовки, но для тестовой среды это не критично. После ввода данных можно отправить тестовое письмо, дабы проверить работоспособность нашего профиля: Затем переходим к созданию самой страницы. Делается это на вкладке Landing Pages. Здесь можно пойти двумя путями: сверстать свою страницу с нуля или же просто скопировать с реального сайта и подкорректировать нужное. Для этого предусмотрен очень удобный инструмент в самой системе. Нажав на кнопку Import Site вы можете ввести URL любого сайта и фреймворк сам подтянет оттуда весь дизайн, только учтите, что для этого системе нужен доступ в интернет. Чтобы перехватывать введённые данные, нужно поставить соответствующие галочки. Capture Submitted Data и Capture Passwords. Учтите, что пароли не шифруются и хранятся в базе системы в открытом виде! Также не забываем прописать адрес ресурса, куда будет перенаправляться пользователь после ввода данных. Следующий шаг создание шаблона письма, для чего переходим на страницу Email Template. Тут тоже можно и самому набрать текст или же импортировать уже готовое письмо. Ещё один минус, нельзя вставлять фото из локального ресурса, что досадно. Можно только вставить ссылку на картинку, что в моём случае тоже не сработало картинка не открывалась. Но есть и удобные фичи: переменные например. Ниже приведён список переменных, которые можно указать в тексте, создавая персонализированные письма. {{.RId}} Уникальный ID цели {{.FirstName}} Имя цели {{.LastName}} Фамилия цели {{.Position}} Должность {{.Email}} Почтовый адрес {{.From}} Отправитель {{.TrackingURL}} Ссылка отслеживания {{.Tracker}} Псевдоним <img src="{{.TrackingURL}}"/> {{.URL}} Адрес фишинг ссылки {{.BaseURL}} Та же фишинг ссылка, только без RID Далее создаем пользователя или группу пользователей, которые получат наше письмо. Делается это на вкладке Users & Groups. Здесь тоже разработчики предусмотрели массовый импорт адресов. Если у вас настроен AD и Exchange Server, попросите админов отдать вам список всех акттвных пользователей в формате CSV. Затем импортируйте их в систему. И, наконец, переходим к созданию самой атаки. Для этого переходим на вкладку Campaigns. Здесь в принципе дублируется основная панель. Выбираем New Campaign задаём название кампании, из выпадающих списков выбираем ранее созданные шаблоны письма и фейковой страницы, указываем профиль, с которого пойдут письма, и определяем целевую группу. В URL прописываем адрес нашего сервера. Здесь можно написать и IP или же, что еще лучше, задать доменное имя, которое похоже на доверенный ресурс. В этом случае пользователь в адресной строке увидит не IP, а полноценный домен. Также можно выставить дату начала кампании. И, собственно, запускаем кампанию и ждем пока кто-то попадётся на нашу удочку. Система заботливо показывает текущий статус отправки, и, в случае ошибки, указывает почему не удалось отправить письмо. На этом, пожалуй все. Система очень лёгкая, интуитивно понятная. Удачи в реализации!
img
Почитать лекцию №19 про Connection-oriented protocols и Connectionless протоколы можно тут. Протоколы передачи данных часто бывают многоуровневыми, причем нижние уровни предоставляют услуги по одному переходу, средний набор уровней предоставляет услуги от конца до конца между двумя устройствами и, возможно, набор уровней предоставляет услуги от конца до конца между двумя приложениями или двумя экземплярами одного приложения. Рисунок 1 иллюстрирует это. Каждый набор протоколов показан как пара протоколов, потому что, как показано в модели рекурсивной архитектуры Интернета (RINA), рассмотренной в предыдущих лекциях, транспортные протоколы обычно входят в пары, причем каждый протокол в паре выполняет определенные функции. В этой серии лекций будут рассмотрены физические протоколы и протоколы передачи данных, как показано на рисунке 1. В частности, в этой лекции будут рассмотрены два широко используемых протокола для передачи данных "точка-точка" в сетях: Ethernet и WiFi (802.11). Ethernet Многие из ранних механизмов, разработанных для того, чтобы позволить нескольким компьютерам совместно использовать один провод, были основаны на проектах, заимствованных из более ориентированных на телефонные технологии. Как правило, они фокусировались на передаче токенов и других более детерминированных схемах для обеспечения того, чтобы два устройства не пытались использовать одну общую электрическую среду одновременно. Ethernet, изобретенный в начале 1970-х Bob Metcalf (который в то время работал в Xerox), разрешал перекрывающиеся разговоры другим способом-с помощью очень простого набора правил для предотвращения большинства перекрывающихся передач, а затем разрешал любые перекрывающиеся передачи путем обнаружения и обратного отсчета. Первоначальное внимание любого протокола, который взаимодействует с физической средой, будет сосредоточено на мультиплексировании, поскольку до решения этой первой проблемы можно решить лишь несколько других проблем. Поэтому эта лекция будет начинаться с описания мультиплексирующих компонентов Ethernet, а затем рассмотрены другие аспекты работы. Мультиплексирование Чтобы понять проблему мультиплексирования, с которой столкнулся Ethernet, когда он был впервые изобретен, рассмотрим следующую проблему: в сети с общим носителем вся общая среда представляет собой единую электрическую цепь (или провод). Когда один хост передает пакет, каждый другой хост в сети получает сигнал. Это очень похоже на беседу, проводимую на открытом воздухе- звук, передаваемый через общую среду (воздух), слышен каждому слушателю. Нет никакого физического способа ограничить набор слушателей во время процесса передачи. CSMA/CD В результате система, получившая название множественного доступа с контролем несущей и обнаружением коллизий (CSMA/CD), работает с использованием набора шагов: Хост слушает среду, чтобы увидеть, есть ли какие-либо существующие передачи; это часть процесса со стороны оператора связи. Узнав, что другой передачи нет, хост начнет сериализацию (передача битов сериями) битов кадра в сеть. Эта часть проста - просто слушать перед передачей. Конечно, передачи двух (или более) хостов могут конфликтовать, как показано на рисунке 2. На рисунке 2: В момент времени 1 (T1) A начинает передачу кадра на совместно используемый носитель. Для прохождения сигнала от одного конца провода к другому требуется некоторое время - это называется задержкой распространения. В момент времени 2 (T2) C прослушивает сигнал на проводе и, не обнаружив его, начинает передачу кадра на совместно используемый носитель. В этот момент уже произошла коллизия, поскольку оба A и C передают кадр в один и тот же момент, но ни один из них еще не обнаружил коллизию. В момент времени 3 (T3) два сигнала фактически сталкиваются в проводе, в результате чего они оба деформируются и, следовательно, не читаются. Столкновение можно обнаружить в точке А в тот момент, когда сигнал от С достигает точки А, прослушав свой собственный сигнал, передаваемый по проводу. Когда сигнал от С достигнет А, А получит искаженный сигнал, вызванный комбинацией этих двух сигналов (результат столкновения). Это часть обнаружением столкновений (участок СD) работы локальные сети CSMA/CD. Что должен сделать хост при обнаружении столкновения? В оригинальном конструкции Ethernet хост будет посылать сигнал блокировки достаточно долго, чтобы заставить любой другой хост, подключенный к проводу, обнаружить конфликт и прекратить передачу. Длина сигнала блокировки изначально была установлена таким образом, чтобы сигнал блокировки потреблял, по крайней мере, время, необходимое для передачи кадра максимального размера по проводу по всей длине провода. Почему именно столько времени? Если при определении времени передачи сигнала помехи использовался более короткий, чем максимальный кадр, то хост со старыми интерфейсами (которые не могут посылать и принимать одновременно) может фактически пропустить весь сигнал помехи при передаче одного большого кадра, что делает сигнал помехи неэффективным. Важно дать хозяевам, подключенным на самом конце проводов, достаточно времени, чтобы получить сигнал помехи, чтобы они почувствовали столкновение и предприняли следующие шаги. Как только сигнал помехи получен, каждый хост, подключенный к проводу, установит таймер обратного отсчета, так что каждый из них будет ждать некоторое случайное количество времени, прежде чем пытаться передать снова. Поскольку эти таймеры установлены на случайное число, когда два хоста с кадрами, ожидающими передачи, пытаются выполнить свою следующую передачу, столкновение не должно повториться. Если каждый хост, подключенный к одному проводу, получает один и тот же сигнал примерно в одно и то же время (учитывая задержку распространения по проводу), как любой конкретный хост может знать, должен ли он на самом деле получать определенный кадр (или, скорее, копировать информацию внутри кадра из провода в локальную память)? Это работа Media Access Control (MAC). Каждому физическому интерфейсу назначается (как минимум) один MAC-адрес. Каждый кадр Ethernet содержит MAC-адрес источника и назначения; кадр форматируется таким образом, что MAC-адрес назначения принимается раньше любых данных. После того, как весь MAC-адрес назначения получен, хост может решить, следует ли ему продолжать прием пакета или нет. Если адрес назначения совпадает с адресом интерфейса, хост продолжает копировать информацию с провода в память. Если адрес назначения не совпадает с адресом локального интерфейса, хост просто прекращает прием пакета. А как насчет дубликатов MAC-адресов? Если несколько хостов, подключенных к одному и тому же носителю, имеют один и тот же физический адрес, каждый из них будет получать и потенциально обрабатывать одни и те же кадры. Существуют способы обнаружения повторяющихся MAC-адресов, но они реализуются как часть межслойного обнаружения, а не самого Ethernet; MAC-адреса будут правильно назначены системным администратором, если они назначены вручную. MAC-адреса назначаются производителем устройства, поэтому дублирование MAC-адресов исключено, независимо от того, сколько хостов подключено друг к другу. (Поскольку MAC-адреса обычно перезаписываются на каждом маршрутизаторе, они должны быть уникальными только в сегменте или широковещательном домене. В то время как многие старые системы стремились обеспечить уникальность каждого сегмента или широковещательного домена, это обычно должно быть обеспечено с помощью ручной конфигурации, и поэтому в значительной степени было отказано в пользу попытки предоставить каждому устройству глобальный уникальный MAC-адрес, "вшитый" в чипсете Ethernet при создании.) Первое решение трудно реализовать в большинстве крупномасштабных сетей- ручная настройка MAC-адресов крайне редка в реальном мире вплоть до ее отсутствия. Второй вариант, по существу, означает, что MAC-адреса должны быть назначены отдельным устройствам, чтобы ни одно из двух устройств в мире не имело одного и того же MAC-адреса. Как такое возможно? Путем назначения MAC-адресов из центрального хранилища, управляемого через организацию стандартов. Рисунок 3 иллюстрирует это. Рис. 3 Формат адреса MAC-48/EUI-48 MAC-адрес разбит на две части: уникальный идентификатор организации (OUI) и идентификатор сетевого интерфейса. Идентификатор сетевомого интерфейса присваивается заводом-изготовителем микросхем для Ethernet. Компаниям, производящим чипсеты Ethernet, в свою очередь, присваиваются уникальный идентификатор организации Институтом инженеров электротехники и электроники (Institute of Electrical and Electronic Engineers -IEEE). До тех пор, пока организация (или производитель) назначает адреса чипсету с его OUI в первых трех октетах MAC-адреса и не назначает никаким двум устройствам один и тот же идентификатор сетевого интерфейса в последних трех октетах MAC-адреса, никакие два MAC-адреса не должны быть одинаковыми для любого набора микросхем Ethernet. Два бита в пространстве OUI выделяются, чтобы сигнализировать, был ли MAC-адрес назначен локально (что означает, что назначенный производителем MAC-адрес был переопределен конфигурацией устройства), и предназначен ли MAC-адрес в качестве одного из следующих: Unicast адрес, означает, что он описывает один интерфейс Multicast-адрес, означает, что он описывает группу получателей MAC-адрес состоит из 48 бит- при удалении двух битов пространство MAC-адресов составляет 46 бит, что означает, что оно может описывать 246-или 70,368,744,177,664- адресуемых интерфейсов. Поскольку этого (потенциально) недостаточно, чтобы учесть быстрое количество новых адресуемых устройств, таких как Bluetooth-гарнитуры и датчики, длина MAC-адреса была увеличена до 64 бит для создания MAC-адреса EUI-64, который построен таким же образом, как и более короткий 48-битный MAC-адрес. Эти адреса могут поддерживать 262-или 4,611,686,018,427,387,904-адресуемые интерфейсы. Конец эпохи CSMA / CD Модель развертывания Ethernet с разделяемой средой в значительной степени (хотя и не полностью!) заменена в большинстве сетей. Вместо общей среды большинство развертываний Ethernet теперь коммутируются, что означает, что одна электрическая цепь или один провод разбивается на несколько цепей путем подключения каждого устройства к порту на коммутаторе. Рисунок 4 демонстрирует это. На рисунке 4 каждое устройство подключено к разному набору проводов, каждый из которых оканчивается одним коммутатором. Если сетевые интерфейсы на трех хостах (A, B и C) и сетевые интерфейсы коммутатора могут отправлять или получать в любой момент времени вместо того, чтобы делать и то, и другое, A может отправлять, пока коммутатор тоже отправляет. В этом случае процесс CSMA / CD все равно должен соблюдаться для предотвращения коллизий, даже в сетях, где только два передатчика подключены к одному проводу. Такой режим работы называется полудуплексом. Однако, если наборы микросхем Ethernet могут одновременно прослушивать и передавать данные для обнаружения коллизий, эту ситуацию можно изменить. Самый простой способ справиться с этим - разместить сигналы приема и передачи на разных физических проводах в наборе проводов, используемых в кабеле Ethernet. Использование разных проводов означает, что передачи от двух подключенных систем не могут конфликтовать, поэтому набор микросхем может передавать и принимать одновременно. Чтобы включить этот режим работы, называемый полнодуплексным, витая пара Ethernet передает сигнал в одном направлении по одной паре проводов, а сигнал в противоположном направлении - по другому набору проводов. В этом случае CSMA / CD больше не нужен (коммутатор должен узнать, какое устройство (хост) подключено к каждому порту, чтобы эта схема работала). Контроль ошибок CSMA/CD предназначен для предотвращения одного вида обнаруживаемой ошибки в Ethernet: когда коллизии приводят к искажению кадра. Однако в сигнал могут входить и другие виды ошибок, как и в любой другой электрической или оптической системе. Например, в кабельной системе с витой парой, если скрученные провода слишком сильно "разматываются" при установке коннектора, один провод может передавать свой сигнал другому проводу через магнитные поля, вызывая перекрестные помехи. Когда сигнал проходит по проводу, он может достигать другого конца провода и отражаться обратно по всей длине провода. Как Ethernet контролирует эти ошибки? Оригинальный стандарт Ethernet включал в себя 32-битную циклическую проверку избыточности (Cyclic Redundancy Check-CRC) в каждом кадре, которая позволяет обнаруживать большой массив ошибок при передаче. Однако на более высоких скоростях и на оптических (а не электрических) транспортных механизмах CRC не обнаруживает достаточно ошибок, чтобы повлиять на работу протокола. Чтобы обеспечить лучший контроль ошибок, более поздние (и более быстрые) стандарты Ethernet включили более надежные механизмы контроля ошибок. Например, Gigabit Ethernet определяет схему кодирования 8B10B, предназначенную для обеспечения правильной синхронизации часов отправителя и получателя; эта схема также обнаруживает некоторые битовые ошибки. Ten-Gigabit Ethernet часто реализуется аппаратно с помощью Reed-Solomon code Error Correction (EC) и системы кодирования 16B18B, которая обеспечивает прямое исправление ошибок (FEC) и синхронизацию часов с 18% -ными издержками. Схема кодирования 8B10B пытается обеспечить наличие примерно одинакового количества битов 0 и 1 в потоке данных, что позволяет эффективно использовать лазер и обеспечивает встроенную в сигнал тактовую синхронизацию. Схема работает путем кодирования 8 бит данных (8B) в 10 передаваемых битов по проводу (10B), что означает около 25% накладных расходов на каждый передаваемый символ. Ошибки четности одного бита могут быть обнаружены и исправлены, потому что приемник знает, сколько "0" и "1" должно быть получено. Маршалинг данных Ethernet передает данные пакетами и кадрами: пакет состоит из преамбулы, кадра и любой конечной информации. Фрейм содержит заголовок, который состоит из полей фиксированной длины и переносимых данных. На рисунке 5 показан пакет Ethernet. На рисунке 5 преамбула содержит маркер начала кадра, информацию, которую приемник может использовать для синхронизации своих часов для синхронизации с входящим пакетом, и другую информацию. Адрес назначения записывается сразу после преамбулы, поэтому получатель может быстро решить, копировать этот пакет в память или нет. Адреса, тип протокола и передаваемые данные являются частью кадра. Наконец, любая информация FEC и другие трейлеры добавляются в кадр, чтобы составить последний раздел (ы) пакета. Поле type представляет особый интерес, поскольку оно предоставляет информацию для следующего уровня-протокола, предоставляющего информацию, переносимую в поле data - для идентификации протокола. Эта информация непрозрачна для Ethernet-чипсет Ethernet не знает, как интерпретировать эту информацию (только где она находится) и как ее переносить. Без этого поля не было бы последовательного способа для передачи переносимых данных в правильный протокол верхнего уровня, или, скорее, для правильного мультиплексирования нескольких протоколов верхнего уровня в кадры Ethernet, а затем правильного демультиплексирования. Управление потоком В исходной CSMA / CD реализации Ethernet сама совместно используемая среда предоставляла своего рода базовый механизм управления потоком. Предполагая, что никакие два хоста не могут передавать одновременно, и информация, передаваемая по какому-то протоколу верхнего уровня, должна быть подтверждена или отвечена, по крайней мере, время от времени, передатчик должен периодически делать перерыв, чтобы получить любое подтверждение или ответ. Иногда возникают ситуации, когда эта довольно грубая форма регулирования потока не работает- спецификация Ethernet предполагает, что некоторый протокол более высокого уровня будет контролировать поток информации, чтобы предотвратить сбои в этом случае. В коммутируемом полнодуплексном Ethernet нет CSMA/CD, так как нет общей среды. Два хоста, подключенные к паре каналов передачи, могут отправлять данные так быстро, как позволяют каналы связи. Фактически это может привести к ситуации, когда хост получает больше данных, чем может обработать. Чтобы решить эту проблему, для Ethernet был разработан фрейм паузы. Когда получатель отправляет фрейм паузы, отправитель должен прекратить отправку трафика в течение определенного периода времени. Фреймы паузы массово не применяются. Важно Многие протоколы не содержат все четыре функции, описанных как часть модели рекурсивной архитектуры Интернета (RINA): контроль ошибок, управление потоком, транспортировка и мультиплексирование. Даже среди тех протоколов, которые реализуют все четыре функции, все четыре не всегда используются. Обычно в этой ситуации разработчик протокола и/или сети передает функцию на более низкий или более высокий уровень в стеке. В некоторых случаях это работает, но вы всегда должны быть осторожны, предполагая, что это будет работать без ошибок. Например, существует разница между hop-by-hop шифрованием и end-to-end шифрованием. End-to-end передача хороша для приложений и протоколов, которые выполняют шифрование, но на самом деле не каждое приложение шифрует передаваемые данные. В этих случаях hop-by-hop шифрование может быть полезно для менее безопасных соединений, таких как беспроводные соединения.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59