Miminet 🛜 | Компьютерные сети


Гео и язык канала: Россия, Русский
Категория: Технологии


Компьютерные сети, немного программирования и про обучение в ИТ

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Куда поступать на IT-специальность?

Мой главный совет: лучше всего выбирать программы, созданные совместно с компаниями. Это самый короткий и надёжный путь к трудоустройству. Плюс ты сразу можешь выбрать компанию, которая тебе интересна.

Хочу запустить серию постов про IT-направления и начну с совместной программы бакалавриата ИТМО и YADRO "Беспроводные технологии" 💠. Это стык программирования, математики, физики и телеком-разработки.

Во время учебы ты:

— изучишь принципы работы современных телеком-систем и сетей связи
— познакомишься с задачами разработки устройств и систем связи
— получишь практический опыт решения инженерных задач вместе с экспертами индустрии
получишь возможность стажировки и дальнейшего развития в компании


➡ Подробнее о программе и поступлении — по ссылке.

Если хочешь раньше всех получать новости о программах компании YADRO — оставляй заявку в форме и вступай в чат абитуриентов.


С чего начать изучение компьютерных сетей?😉

Недавно на Pikabu заминусили пользователя за вполне хороший вопрос: «С чего начать изучение компьютерных сетей?».

Честно говоря, не очень понимаю, за что минусовать такие вопросы. Каждый когда-то начинал. Если вы только знакомитесь с сетями — вот мой личный маршрут:

1. Основы
Начните с моего онлайн-курса "Основы компьютерных сетей". Главная фишка — встроенный веб-эмулятор Miminet. Можно прямо в браузере собирать схемы и наблюдать, как работает сеть. Без установки дополнительного ПО.

2. Понимание современного интернета
Повторить основы и разобраться, как работают DNS, HTTP, TLS, SMTP, POP3, IMAP поможет Андрей Созыкин в курсе "Компьютерные сети". Отличный материал для систематизации знаний.

3. Если интересно программирование сетей
Рекомендую мой курс "Разработка сетевых приложений на Python" — в нем я показываю, как писать свои сетевые утилиты и понимать происходящее "под капотом".

4. Телеком, сети провайдера и дата-центры
Если тянет к провайдерской кухне — обязательно загляните на "Сети Для Самых Маленьких", не пожалеете.

Начинайте с того, что ближе именно вам. А если появятся вопросы — задавайте, постараюсь помочь 😎


Разбор тестовой задачи #3 (сложная)

Дано
: сеть https://miminet.ru/web_network?guid=198c649e-3be5-4c9c-9967-11cb8d81e9c5.
Задание: хост 1 и 2 должны подключиться к серверу на TCP порт 12345.
Условия:
— не менять топологию сети и IP-адреса;
— не использовать VxLAN;
— серые IP-адреса не маршрутизируются между маршрутизаторами;
— чем меньше команд будет добавлено, тем лучше.

Дальше — разбор задачи с правильным решением. Желающие могут сначала проверить себя, а потом уже узнать ответ.

Моё решение: https://miminet.ru/web_network?guid=67e7a335-8212-4549-b878-d135e9189af0.

Правильных решений было мало, и это нормально: эта задача со звездочкой.

Типичная ошибка
Многие использовали только NAT, чтобы скрыть «серые» IP-адреса хостов. Это правильно! Но при этом пытались установить соединение с сервером напрямую. А вот это уже неправильно.

За что еще я снимал баллы
Неаккуратность. Бывает, задача решена верно, но схема выглядит неопрятно. Аккуратность улучшает читаемость и облегчает понимание. Неаккуратная схема подобна коду без соблюдения стиля.

Итог
Многие кандидаты набрали 0 или 1 балл из 3. На 3 балла решили только 2 кандидата.


Разбор тестовой задачи #2 (нормальная)

Дано
: сеть https://miminet.ru/web_network_shared?guid=4e078230-82fc-47cc-9381-cd39af467119.
Задание: хосты 1, 2 и 3 должны автоматически получить IP-настройки.
Условия:
— топологию сети менять нельзя;
— на схему можно добавлять только сервера;
— постарайтесь использовать минимальное количество серверов.

Дальше — разбор задачи с правильным решением. Желающие могут сначала проверить себя, а потом уже узнать ответ.

Моё решение: https://miminet.ru/web_network?guid=ec9cccd1-15f1-4517-9e18-3a4727cd655f.

Многие решили эту задачу путем добавления 3-х DHCP-серверов. Это хорошее решение на твердые 2 балла из 3.

Как получить 3 балла:
Многие написали в комментариях, что можно было решить эту задачу через DHCP-relay, но в miminet он не поддерживается на данный момент. Это верно, но мы бы не давали задачу, если её нельзя решить (кстати DHCP-relay уже ждет выхода).
Решить эту задачу на 3 балла можно без DHCP-relay через использование VxLAN. VxLAN позволяет создавать L2 связность поверх L3 сети, активно применяется в облаках.

За что еще я снимал баллы:
1. Использование «белых» (публичных) IP-адресов. Если в условии ничего не сказано про публичные адреса, то лучше их не использовать. Они платные, и на схеме без необходимости применять их не стоит. В частных сетях вполне достаточно диапазонов 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
2. Неаккуратность. Бывает, задача решена верно, но схема выглядит неопрятно. Аккуратность улучшает читаемость и облегчает понимание. Неаккуратная схема подобна коду без соблюдения стиля.

Итог: многие кандидаты набрали 2 балла из 3 и предложили DHCP-relay. С VxLAN никто не решил.


Разбор тестовой задачи #1 (легкая)

В этом году я помогал составлять и проверять тестовые задания для отбора на стажировку «Ядро.Импульс 2026». Всего было три задачи: лёгкая, нормальная и чуть посложнее. Буду выкладывать по одной задаче в пост. Погнали!

Дано: сеть https://miminet.ru/web_network?guid=ed065730-02a8-4272-8539-ad84fed1bb91
Задание: требуется настроить сеть так, чтобы хост 1 пинговал сервер.
Условие: топологию сети изменять нельзя.

Дальше — разбор задачи с правильным решением. Желающие могут сначала проверить себя, а потом уже узнать ответ.

Моё решение: https://miminet.ru/web_network?guid=1b2799b9-58bf-4ac7-a4e6-ae66b7d106d5

За что я снимал баллы:
1. Использование «белых» (публичных) IP-адресов. Если в условии ничего не сказано про публичные адреса, то лучше их не использовать. Они платные, и на схеме без необходимости применять их не стоит. В частных сетях вполне достаточно диапазонов 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
2. Неаккуратность. Бывает, задача решена верно, но схема выглядит неопрятно. Аккуратность улучшает читаемость и облегчает понимание. Неаккуратная схема подобна коду без соблюдения стиля.

Баллы не снимал, но указывал как помарку:
Использование STP вместо RSTP. В Miminet коммутаторы поддерживают оба протокола. STP очень старый, при изменении топологии он может восстанавливать связность до 60 секунд. Это очень долго. По возможности лучше использовать более современные реализации (RSTP и новее).

Итог: многие кандидаты набрали максимальный балл. Отличная работа!



2.9k 1 120 7 24

Кто хочет попробовать сдать зачёт по сетевому администрированию Linux?

Задача: На зачёте вы получаете образ ОС Linux для VirtualBox. Требуется настроить этот образ в соответствии с одним из заданий.

Условия:
1. Разрешается пользоваться любыми материалами, кроме ИИ-чатов. Можно использовать ответы ИИ в поисковой выдаче Google или Яндекса, но не заходить в отдельный чат.
2. Выполнение задания ограничено по времени и соответствует оценке:
• до 40 минут — A;
• до 45 минут — B;
• до 50 минут — C;
• до 55 минут — D;
• до 60 минут — E.
3. В образе для зачёта спрятаны две «подлянки», которые мешают выполнить задание. Их не нужно искать специально, вы просто не сможете завершить настройку, пока не устраните их.

Образы Linux:
— тестовый образ (чтобы проверить, что всё импортируется):
https://drive.google.com/file/d/1_wdgH7xWCDu1BIPI0wJTCfEiPPfwMqPR/view?usp=drive_link
— образ для зачёта (с двумя подлянками) — это RAR-архив. Пароль от архива "miminet.ru83":
https://drive.google.com/file/d/1P9rSRe0Y-IZ2aH16WY98j7IghnPbPh5e/view?usp=drive_link

Задания (все используют DNS-имя math.spbu; NS-сервер указывает на ваш IP):
1. Поднимите HTTP-сервер на порту 8080. На главной странице math.spbu должно быть написано: «Привет, мат-мех!» (обязательно на русском).
2. Настройте доступ по SSH на порту 2222 по имени pe.math.spbu. Вход только по ключу. Проверьте правильность, войдя под своим логином.
3. Поднимите HTTP-сервер на порту 5000. На главной странице pe.math.spbu должно быть написано: «Привет, программная инженерия!».
4. Поднимите SMTP-сервер на имя math.spbu, порт 25. Проверка будет выполнена отправкой письма на ваш сервер.

Удачи! 💪🏻


IP-сеть vs IP-адрес

При изучении работы маршрутизатора и таблиц маршрутизации новички часто допускают одну ошибку: добавляя маршрут, они прописывают IP-адрес вместо IP-сети (см. рисунок). В результате маршрут не работает.

Почему? Потому что в таблице маршрутизации указываются IP-сети, а не IP-адреса.

Примеры IP-сетей:
192.168.1.0/24
172.16.0.0/16
10.0.0.0/8

IP-сеть задаётся двумя параметрами: адресом сети и маской сети.

Примеры IP-адресов (конкретных устройств):
192.168.1.25/24
172.16.0.116/16
10.1.2.3/8

Здесь маска сети указывает устройству, к какой IP‑сети оно принадлежит.

Как узнать, к какой сети относится IP-адрес?
1. Применить маску к IP-адресу (вычислить адрес сети).
2. Сравнить полученный результат с адресом известной сети.

Например, есть три сети:
192.168.1.0/24
172.16.0.0/16
10.0.0.0/8

Возьмём IP-адрес 192.168.1.25.
1. Применяем маску /24 → получаем 192.168.1.0.
2. Сравниваем с адресами сетей: 192.168.1.0 совпадает с первой сетью.

Значит, адрес принадлежит сети 192.168.1.0/24.

Что произойдёт, если в таблицу маршрутизации добавить не сеть, а конкретный IP-адрес?

Рассмотрим маршрутизатор, в таблице которого две записи (ошибочные, так как вместо сетей указаны адреса):
192.168.10.2/24
192.168.20.2/24

Пакет приходит для адреса назначения 192.168.20.2 (хост 2). Маршрутизатор перебирает записи:
1. Для первой записи применяем маску /24 к адресу назначения 192.168.20.2. После применения маски получаем 192.168.20.0.
2. Сравниваем с адресом из записи 192.168.10.2. Равенства нет. Маршрут не подходит.
3. Для второй записи применяем ту же маску /24 к адресу назначения — снова 192.168.20.0.
4. Сравниваем с 192.168.20.2. Равенства нет (192.168.20.0192.168.20.2). Маршрут снова не подходит.

В итоге подходящих маршрутов нет. Маршрута по умолчанию тоже нет. Пакет отбрасывается.

Вывод: всегда указывайте в таблице маршрутизации именно IP-сети, а не отдельные IP-адреса.

#miminet #ip


Советы про поиск работы и стажировки 🤓

Из личного опыта: если вы сразу идёте на hh.ru или другой сайт с вакансиями — это жирный признак того, что вы что-то делаете не так. Эти ресурсы стоит использовать в последнюю очередь.

Люди и знакомства важнее резюме!

Первым делом посмотрите на своё окружение. Где работают друзья, одногруппники, знакомые? Спросите их, может, кому-то нужны сотрудники или соседней команде требуется человек. Во многих компаниях есть программы рекомендаций. Если знакомый порекомендует вас, и вас возьмут — он получит бонус. Это отличная мотивация для него помочь вам.

Стажировки

Если вы студент или недавний выпускник — ищите стажировки напрямую от компаний. Сейчас у многих вузов есть компании-партнёры: Яндекс, ВК, Т-банк, Сбер, Yadro, Selectel, UserGate, Контур и другие. Они заинтересованы в студентах IT-направлений. Стажировки и летние/зимние школы проходят почти круглый год.

Опыт важнее денег на старте

— Поймите, что вам действительно интересно. Найдите сообщество по этой теме — общайтесь, задавайте вопросы, будьте на виду.
— Попробуйте найти open source проект, и практикуйтесь в нём. Решайте задачи в своём темпе и без большой ответственности. С одной стороны, это ценный опыт. С другой — в таком проекте почти наверняка есть сотрудники компаний, которые со временем смогут вас порекомендовать.

hh.ru и аналоги — это запасной вариант

И только если ничего из перечисленного выше не сработало или пока не подходит — остаётся hh.ru. Да, это рабочий вариант, но я рекомендую пробовать его последним, а не первым.

Мой совет: развивайте нетворкинг. Старайтесь находить работу через друзей и знакомых. Если сейчас у вас слабый круг общения — не страшно, его можно и нужно развивать постепенно.

Лично я никогда не проходил собеседований в классическом смысле — всегда устраивался по знакомству. Чего и вам желаю.


С почином!

Спустя почти два года и 367 положительных отзывов мой курс получил первую единицу 🤷‍♂️


Откуда белый IP-адрес у моего провайдера?

Простой ответ: IANA 😎

Всеми IP-адресами в мире управляет организация IANA. Но она не продаёт адреса напрямую. Вместо этого IANA выделяет (аллоцирует) большие блоки IP-сетей (например, /4, /8, /16) региональным интернет-регистраторам (RIR). Каждый RIR отвечает за свой регион.

В свою очередь, RIR распределяют более мелкие IP-сети между локальными провайдерами и компаниями (Яндекс, Ростелеком и др.) — тоже на условиях аренды. Никто не продаёт IP-адреса насовсем.

И когда вы подключаете для дома белый IP-адрес или покупаете сервер в облаке, то по сути вы арендуете этот адрес у своего провайдера, который уже арендует его у регионального регистратора.

Именно так у вашего домашнего Wi-Fi роутера и появляется белый IP-адрес.

#ip #iana #rir


STP/RSTP в Miminet

У Андрея Созыкина есть хорошая лекция про STP — протокол, который помогает избежать петель в сети.

В Miminet этот протокол можно наглядно изучить на практике. Я собрал сеть из четырёх коммутаторов и соединил их так, чтобы образовалась петля. Если не использовать STP или RSTP, то в такой сети возникает широковещательный шторм, и вся сеть перестаёт работать за доли секунды.

STP позволяет коммутаторам обнаружить петлю и автоматически её разорвать, сохраняя работоспособность сети.

Посмотреть, как это работает, можно на примере: https://miminet.ru/web_network?guid=5ee6741b-ed30-4dd3-bd81-49f0d7af0f03

#stp #rstp #miminet


🌟 Вопрос на выходные 🌟

Дано:
1. Сеть как на рисунке.
2. Хост 1 и 2 находятся в разных IP-сетях.
3. На хосте 1 добавлен маршрут для хоста 2.
4. Хост 1 хочет отправить ICMP-запрос на хост 2. Для этого он отправляет ARP-запрос, чтобы узнать MAC-адрес хоста 2.

Вопрос:
Ответит ли хост 2 на этот ARP-запрос?

Как всегда, присылайте ответы в комменты.
🔥 — красавчик, ответ верный.

#task #miminet #arp #routing


Оплачиваемая IT-стажировка в YADRO 🤟

Компания YADRO открыла набор на летнюю стажировку «Импульс 2026». Не могу пройти мимо такой новости, так как Miminet поддерживается лабораторией YADRO при СПбГУ.

В этом году открыто более 30 направлений:
🔵C, системное программирование;
🔵разработка на Go, Python, C++;
🔵тестирование;
🔵математика и алгоритмы;
🔵системное и сетевое администрирование, техподдержка;
🔵проектный менеджмент и маркетинг и еще 20+ направлений!

Лучше всего посмотреть полный список и выбрать то, что интересно именно вам. Я же расскажу подробнее про одно из направлений.

Разработка на Python

YADRO производит отечественные коммутаторы Kornfeld, и я лично знаком с этой командой. Два года подряд тестовые задания от этого направления проводились на Miminet — и в этом году тоже. Советую присмотреться, если вы интересуетесь сетями или хотите заниматься разработкой сетевого оборудования. Подробнее о самом коммутаторе Kornfeld вы можете узнать в презентации.

Узнать больше о вакансии можно в направлении "Разработка ПО" -> "Разработка на Python".

P.S. Если вы хотите подробнее узнать о компании, задачах и в целом о стажировке — спрашивайте, я постараюсь узнать это для вас.

#стажировка #сети #python


А куда вообще писать дальше?

Последнее время я не писал, потому что размышлял, где лучше продолжить вести канал.

Мне всегда было ближе публиковать посты в одном месте. Не потому что лень дублировать, а потому что теряется смысл сообщества. Удобно, когда все посты и обсуждения собраны вместе: так проще общаться, все видят комментарии друг друга. А если одно и то же писать в разные места, вы неизбежно что-то пропускаете.

Поэтому передо мной сейчас развилка:
— остаться здесь (и подталкивать вас ставить VPN);
— уйти в Max (и подталкивать вас его устанавливать);
— попробовать другие варианты, которые ещё хуже.

В идеале хочется сломать эту чёртову палку, но на новый сервис с нуля у меня просто нет сил и ресурсов. Поэтому выбираю компромисс: пока остаюсь тут и для тех, кому удобнее, буду дублировать посты в Max.

Спасибо, что остаётесь со мной🏂


Без MAC-адреса было бы проще, не нужно было бы заморачиваться с ARP протоколом.

На определенном этапе изучения компьютерных сетей возникает логичным предположение: "Если IP уникальный, то кажется, что без MAC было бы проще, не нужно было бы заморачиваться с ARP протоколом."

На первый взгляд все так и есть: IP-адрес уникальный, и мы обращаемся к хостам по IP-адресу. Может убрать MAC-адрес, убрать ARP — и погнали?!

Попробуем спроектировать такую сеть без MAC и ARP, где адресуются напрямую по IP. К чему это приведет?
1. Перестанет работать DHCP, и все хосты не смогут автоматически получать IP-адрес.
2. Огромное число протоколов L2 уровня нужно будет переделать: https://en.wikipedia.org/wiki/EtherType#Values.
3. Коммутаторы теперь должны будут парсить IP протокол (как минимум, IPv4 и IPv6), что серьезно увеличит время работы и деградацию производительности.

IPv4 поверх Ethernet — это частный случай для домашних сетей. В датацентрах и у провайдера Ethernet служит универсальным транспортным слоем для множества протоколов, не связанных с IP. MAC-адресация обеспечивает независимость уровней, что является фундаментом архитектуры OSI и TCP/IP.

IP необходим для маршрутизации между различными IP-сетями (разными широковещательными доменами). Внутри одного широковещательного домена Ethernet и MAC-адреса выполняет свою работу оптимально.

Вывод

Отказ от MAC и ARP — это не упрощение, а разрушение уровневой абстракции, ведущее к потере совместимости, производительности и гибкости. Существующая связка Ethernet + IP + ARP — результат десятилетий эволюции, где каждое звено имеет свою, незаменимую функцию.


Jump host

Недавно я писал про Port forwarding и как эта техника помогает получить доступ к серверу, который недоступен напрямую.

Еще один способ подключиться по SSH к такому серверу — это использовать Jump host 🦘

Jump host — это промежуточный SSH-сервер, используемый как шлюз для безопасного доступа к другим машинам в закрытой частной сети (DMZ) по SSH.

Если нужный сервер находится за другим SSH-сервером, и у вас есть доступ к обоим — используйте опцию -J (Jump host).
ssh -J username_jump@jump_host_ip username_target@target_host_ip

Сначала вы по SSH подключаетесь к jump_host_ip, а затем подключаетесь к target_host_ip.

В моём случае команда выглядит вот так:
ssh -J ilya@miminet.ru ilya@10.130.0.28

Команда длинная, поэтому я добавлю нужную информацию в config-файл ~/.ssh/config (работает и в Windows тоже):
Host miminet
HostName miminet.ru
User ilya
IdentityFile ~/.ssh/private_key.txt

Host miminet2
HostName 10.130.0.28
User ilya
ProxyJump miminet
IdentityFile ~/.ssh/private_key.txt

Теперь достаточно набрать в консоли:
ssh miminet2

И я сразу на втором сервере! 🎯

#советдня #jumphost #ssh




Базовый курс

Недавно я получил оценку 3 звезды на курс "Основы компьютерных сетей". Подумал, что это хороший повод рассказать, что такое базовый курс и зачем он нужен.

В университетах много базовых/фундаментальных курсов. Например: математические курсы, основы компьютерных сетей, алгоритмы (на С/JavaScript/Python), архитектура ОС, компиляторы и т.п. Сам по себе базовый курс не добавляет компетенций и не имеет практических применений. Выучив основы компьютерных сетей, вы не становитесь админом Windows/Linux или сетевым инженером, курс не добавляет навыков в DevOps и не учит создавать свои сетевые приложения.

Для чего нужны базовые курсы?

Базовые курсы создают фундамент для специализации и систематизируют знания в конкретной области. Скажем так, без базовых курсов не освоить специализированный курс. Например, попробуйте рассказать кому-то без базы по сетям, как работает VPN или в чем идея Port forwarding?

Что касается отзыва, то "стал лучше понимать, как работают сетевые технологии. Больше ничего." — это как раз то, для чего курс и делался. Теперь можно смело изучать что-то специализированное: сетевое администрирование Linux/Windows, разработка сетевых приложений, DevOps и т.д.


Всю неделю я добавлял теоретические вопросы и практические задачи к курсу "Разработка сетевых приложений на Python". Вот одна из новых практических задач.

Легенда 🤫

Вы шпион, канал связи с сервером скомпрометирован. Ваша задача: реализовать UDP-клиент, получить зашифрованное сообщение с сервера и прочитать его.

Условия 👀

1. На сервере task.miminet.ru на порту 41337 работает UDP-сервер.
2. На сервере есть секретное сообщение, которое он готов передать только в зашифрованном виде.
3. Сервер поддерживает обмен ключами по протоколу Диффи-Хеллмана (Diffie–Hellman key exchange protocol) с параметрами:
PRIME = 2305843009213693951 # Большое простое число (p)
GENERATOR = 61395 # Генератор (g)
4. Сервер ждет от вас (клиента) публичный ключ.
5. Получив от вас публичный ключ, сервер генерирует общий секретный ключ и зашифровывает секретное сообщение (шифр — это просто XOR).
6. В ответ сервер пришлет вам два UDP-сообщения:
— свой публичный ключ (он вам нужен, чтобы сгенерировать общий секретный ключ);
— зашифрованное ключом сообщение.
7. Все данные передаются байтами, а не строкой.

Расшифруйте сообщение!

Удачи 😏

P.S. Пожалуйста, не пишите сюда правильные ответы и готовые UDP-клиенты. Если все получилось, вы можете просто проверить ответ в курсе на stepik.

Показано 20 последних публикаций.