Во просы по DevOps. Часть 1
В первой части шпаргалки (вопросника, если угодно) на высоком уровне рассматриваются такие вещи, как сеть, HTTP, операционная система, виртуализация, хранилище etc., а также несколько технологий, используемых в сфере DevOps, таких как Prometheus, OpenStack, Puppet, Elastic etc. (вопросы с ответами из основного репозитория оригинала). Полагаю, шпаргалка будет интересна всем, кто связан с разработкой программного обеспечения, прежде всего, с разработкой веб-приложений.
- Сеть
- HTTP
- Операционная система
- Виртуализация
- Хранилище
- Распределенные системы
- Системный дизайн
- Аппаратное обес печение
- Большие данные
- Разное
- Go
- SQL
- MongoDB
- Prometheus
- OpenStack
- Puppet
- Elastic
- Packer
Сеть
Что необходимо для взаимодействия по сети?
- общий язык (который понимают обе стороны)
- способ определения получателей
- соединение/подключение (средство доставки контента получателям)
Что такое TCP/IP?
TCP/IP - это набор протоколов, определяющих как два и более устройства могут взаимодействовать между собой.
Подроб нее о TCP/IP можно почитать здесь.
Что такое Ethernet?
Ethernet - это самый популярный на сегодняшний день тип локальной сети (Local Area Network, LAN). LAN является противоположностью WAN (Wide Area Network - глобальная сеть) и представляет собой единую сеть компьютеров на небольшой площади, такой как офис, кампус или даже ваше жилище.
Что такое MAC-адрес? Для чего он используется?
MAC-адрес - это уникальный номер идентификации или код, который используется для определения устройства в сети.
Пакеты данных, передаваемые по сети, всегда приходят из MAC-адреса и отправляются в MAC-адрес. При получении пакета сетевым адаптером, он сравнивает MAC-адрес назначения пакета с собственным MAC-адресом.
Когда используется MAC-адрес FF:FF:FF:FF:FF:FF?
Когда устройство отправляет пакет данных широковещательному (broadcast) MAC-адресу (FF:FF:FF:FF:FF:FF), пакет доставляется всем станциям в локальной сети. Широковещательные передачи Ethernet используются для преобразования IP-адресов в MAC-адреса (по ARP) на уровне канала передачи данных.
Что такое IP-адрес?
IP-адрес (Internet Protocol - Интернет-протокол) — это числовая метка, присваиваемая каждому устройству, подключенному к сети, которое использует Интернет-протокол для связи. IP-адрес выполняет две основные функции: идентификацию хоста или сетевого интерфейса и адресацию местоположения.
Что такое маска подсети?
Маска подсети (Subnet Mask) — это 32-битное число, которое маскирует IP-адрес и делит IP-адреса на сетевые адреса и адреса хостов. Маска подсети создается путем установки всех битов сети в "1" и всех битов хоста в "0". В каждой сети из общего количества используемых адресов хостов два всегда зарезервированы для определенных целей и не могут быть выделены ни одному хосту. Это первый адрес, который зарезервирован как сетевой адрес (он же идентификатор сети), и последний адрес, используемый для сетевой широковещательной передачи.
Что такое приватный/частный IP-адрес? Для чего такие адреса используются?
Частные IP-адреса назначаются узлам в одной сети для связи друг с другом. Как следует из названия, устройства, которым назначены частные IP-адреса, недоступны устройствам из внешней сети. Например, если я живу в общежитии и хочу, чтобы мои друзья подключились к моему игровому серверу, я попрошу их подключаться через частный IP-адрес моего сервера, поскольку сеть является локальной для общежития.
Что такое публичный/открытый IP-адрес? Для чего такие адреса используются?
Публичный IP-адрес — это общедоступный IP-адрес. Если мы хотим, чтобы наши друзья подключились к нашему игровому серверу, мы даем им общедоступный IP-адрес, чтобы их компьютеры могли идентифицировать и определить местонахождение нашей сети и сервера для установки соединения. Однако для этого, как правило, используются частные IP-адреса. Для о беспечения возможности подключения к нашему внутреннему серверу, нам необходимо настроить переадресацию порта (port forward), чтобы указать маршрутизатору пропускать трафик из общедоступного домена в нашу сеть, и наоборот.
Что такое модель OSI? Из каких уровней/слоев она состоит? За что отвечает каждый уровень?
Модель OSI (The Open Systems Interconnection Model - модель взаимодействия открытых систем) состоит из следующих уровней:
- уровень приложения (Application) - пользователь (HTTP)
- уровень представления (Presentation) - установка контекста между сущностями уровня приложения (шифрование)
- уровень сессии (Session) - установка, управление и завершение подключений
- транспортный уровень (Transport) - передача последовательности данных переменной длины от источника к хосту назначения (TCP, UDP)
- сетевой уровень (Network) - передача датаграмм (datagrams) из одной сети в другую (IP)
- уровень канала передачи данных (data link) - предоставляет связь между двумя подключенными напрямую узлами (MAC)
- физический уровень (Physical) - электрические и физические характеристики подключения (биты)
Подробнее о модели OSI можно почитать здесь.
Сопоставление кейсов и уровней OSI
- Исправление ошибок – уровень канала передачи данных
- маршрутизация пакетов - сетевой уровень
- кабели и электрические сигналы - физический уровень
- MAC-адрес - уровень канала передачи данных
- IP-адрес - сетевой уровень
- завершение соединения - уровень сессии
- трехстороннее рукопожатие - транспортный уровень
Какие вы знаете схемы доставки данных?
Одноадресная рассылка (unicast) - связь "один-к-одному", один отправитель и один получатель.
Широковещательная рассылка (broadcast) - сообщение отправляется всем, кто подключен к сети. Для трансляции используется адрес ff:ff:ff:ff:ff:ff. Двумя распространенными протоколами, использующими широковещательную рассылку, являются ARP и DHCP.
Многоадресная рассылка (multicast) - сообщение отправляется группе подписчиков, связь "один-ко-многим" или "многие-ко-многим".
Что такое CSMA/CD?
CSMA/CD означает Carrier Sense Multiple Access / Collision Detection (контролируемый множественный доступ / обнаружение конфликтов). Его основной целью является управление доступом к общей среде/шине (bus), где только один хост может передавать данные в определенный момент времени.
Алгоритм CSMA/CD:
- Перед отправкой кадра (frame) проверяется, не отправляет ли кадр другой хост.
- Если нет, начинается передача кадра.
- Если два хоста передают данные одновременно, возникает коллизия.
- Оба хоста прекращают отправку кадра и отправляют всем "jam signal" (сигнал о застревании/заклинивании) - уведомление о конфликте.
- Хосты ждут случайное время, затем снова пытаются отправить кадр.
- Цикл повторяется.
В чем разница между маршрутизатором, коммутатором и концентратором?
Маршрутизатор (router), коммутатор (switch) и концентратор (hub) — это сетевые устройства, используемые для подключения устройств в локальной сети (Local Area Network, LAN). Однако каждое устройство работает по-разному и имеет конкретные варианты использования. Вот краткое описание каждо го устройства и различий между ними:
- Маршрутизатор - это сетевое устройство, которое объединяет в единое целое несколько сегментов сети. Он работает на сетевом уровне (уровень 3) модели OSI и использует протоколы маршрутизации для направления данных между сетями. Маршрутизаторы используют IP-адреса для идентификации устройств и маршрутизации пакетов данных в правильный пункт назначения.
- Коммутатор - сетевое устройство, которое соединяет несколько устройств в локальной сети. Он работает на уровне канала передачи данных (уровень 2) модели OSI и использует MAC-адреса для идентификации устройств и направления пакетов данных в правильный пункт назначения. Коммутаторы позволяют устройствам в одной сети более эффективно взаимодействовать друг с другом и предотвращают конфликты данных, которые могут возникнуть, когда несколько устройств отправляют данные одновременно.
- Концентратор - сетевое устройство, которое соединяет несколько устройств с помощью одного кабеля и используется для подключения нескольких устройств без сегментирования сети. Однако, в отличие от коммутатора, он работает на физическом уровне (уровень 1) модели OSI и просто передает пакеты данных всем подключенным к нему устройствам, независимо от того, является устройство получателем данных или нет. Это означает, что могут возникнуть конфликты данных, и, как следствие, может пострадать эффективность сети. Концентраторы обычно не используются в современных сетях, поскольку коммутаторы более эффективны и обеспечивают лучшую производительность.
Что такое "домен коллизий"?
Домен коллизий (collision domain) - это сегмент сети, в котором устройства потенциально могут мешать друг другу, пытаясь передавать данные одновременно. Это может вызывать конфликты, приводящие к потере или повреждению данных. В домене коллизий все устройства используют один и тот же канал передачи данных, и любое устройство потенциально может мешать передаче данных другими устройствами.
Что такое широковещательный домен?
Широковещательный домен (broadcast domain) - это сегмент сети, в котором все устройства могут взаимодействовать друг с другом посредством отправки широковещательных сообщений (broadcast messages). Широковещательное сообщение - это сообщение, которое отправляется всем устройствам, подключенным к сети. В широковещательном домене все устройства могут получать и обрабатывать любые сообщения, независимо от получателя.