#STP #сети |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
#сети #network |
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1
#5G #сеть |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1
• Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития.
• Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.
#books |
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6🤔6💩1
Ответов на этот вопрос много, но я освещу самые популярные, которые используются в повседневной жизни:
При помощи приложений отправляем разные данные между устройствами, открываем доступ к общим ресурсам.
Это сетевые принтеры, которыми, к примеру, пользуются в офисе или сетевые камеры, которые просматривает охрана, находясь в удаленной местности.
Используя сервер или рабочую станцию, подключенную к сети, создается хранилище доступное для других. Многие люди выкладывают туда свои файлы, видео, картинки и открывают общий доступ к ним для других пользователей.
Часто, в крупных компаниях, используют центральный сервер, куда все компьютеры копируют важные файлы для резервной копии.
Телефония, работающая по протоколу IP. Применяется она сейчас повсеместно, так как проще, дешевле традиционной телефонии и с каждым годом вытесняет ее.
#сети |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤3👎3🫡2
Сеть - совокупность устройств и систем, которые подключены друг к другу (логически или физически) и общающихся между собой. Сюда можно отнести сервера, компьютеры, телефоны, маршрутизаторы и так далее. Размер этой сети может достигать размера Интернета, а может состоять всего из двух устройств, соединенных между собой кабелем.
Чтобы не было каши, разделим компоненты сети на группы:
Устройства, которые передают и/или принимают какие-либо данные. Это могут быть компьютеры, телефоны, сервера, какие-то терминалы или тонкие клиенты, телевизоры.
Это устройства, которые соединяют оконечные узлы между собой. Сюда можно отнести коммутаторы, концентраторы, модемы, маршрутизаторы, точки доступа Wi-Fi.
Это те среды, в которых происходит непосредственная передача данных. Сюда относятся кабели, сетевые карточки, различного рода коннекторы, воздушная среда передачи.
#сети |
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🫡5👍4
#IP |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🫡2
#сети |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🫡2
Local Area Network (LAN) - локальная вычислительная сеть (ЛВС) — компьютерная сеть, покрывающая обычно относительно небольшую территорию или небольшую группу зданий (дом, офис, фирму, институт).
Wide area network (WAN) - это телекоммуникационная сеть, которая простирается на большую географическую область. Широкополосные сети часто устанавливаются с арендованными телекоммуникационными схемами.
Главное отличие сети WAN от локальных сетей LAN состоит в том, что они географически не ограничены, в то время как сети LAN ограничены небольшой областью. WAN-сети могут охватывать города, страны и многочисленные населенные пункты, в то время как LAN-сети ограничены отдельным зданием или школьной территорией.
#LAN #WAN |
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡12👍5🤔3🔥1🤨1
В данной статье рассматривается способ установки и настройки прокси Cloak из репозитория автора проекта на Github. Уже несколько лет существует коробочное решение от Amnezia VPN c клиентами для Windows, Mac, Linux, Android и iOS (iOS поддерживает Cloak начиная с версии 3.08).
Здесь мы рассмотрим установку чистого Cloak для существующего сервера OpenVPN.
Эта статья результат ознакомления с инструментом Cloak и рабочий гайд по настройке работы OpenVPN на OpenWRT через него.
#Cloak |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🫡2
Состоит она из 7 уровней и каждый уровень выполняет определенную ему роль и задачи. Разберем, что делает каждый уровень снизу вверх:
1) Физический уровень:
определяет метод передачи данных, какая среда используется (передача электрических сигналов, световых импульсов или радиоэфир), уровень напряжения, метод кодирования двоичных сигналов.
2) Канальный уровень:
он берет на себя задачу адресации в пределах локальной сети, обнаруживает ошибки, проверяет целостность данных. Если слышали про MAC-адреса и протокол «Ethernet», то они располагаются на этом уровне.
3) Сетевой уровень:
этот уровень берет на себя объединения участков сети и выбор оптимального пути (т.е. маршрутизация). Каждое сетевое устройство должно иметь уникальный сетевой адрес в сети. Думаю, многие слышали про протоколы IPv4 и IPv6. Эти протоколы работают на данном уровне.
4) Транспортный уровень:
Этот уровень берет на себя функцию транспорта. К примеру, когда вы скачиваете файл с Интернета, файл в виде сегментов отправляется на Ваш компьютер. Также здесь вводятся понятия портов, которые нужны для указания назначения к конкретной службе. На этом уровне работают протоколы TCP (с установлением соединения) и UDP (без установления соединения).
5) Сеансовый уровень:
Роль этого уровня в установлении, управлении и разрыве соединения между двумя хостами. К примеру, когда открываете страницу на веб-сервере, то Вы не единственный посетитель на нем. И вот для того, чтобы поддерживать сеансы со всеми пользователями, нужен сеансовый уровень.
6) Уровень представления:
Он структурирует информацию в читабельный вид для прикладного уровня. Например, многие компьютеры используют таблицу кодировки ASCII для вывода текстовой информации или формат jpeg для вывода графического изображения.
7) Прикладной уровень:
Наверное, это самый понятный для всех уровень. Как раз на этом уроне работают привычные для нас приложения — e-mail, браузеры по протоколу HTTP, FTP и остальное.
#OSI |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3🫡2
#HTTP #QUIC |
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4
Для понимания ситуации все примеры ниже будут ссылаться на схему.
Комментарий: Две серые сети. Первая сеть напоминает типичную офисную сеть (NAT), вторая — «гейтвей», то есть сервер с белым интерфейсом и серым, смотрящим в свою собственную приватную сеть. В дальнейших рассуждениях мы полагаем, что «наш» ноутбук — А, а «сервер» — Б.
Задача: у нас локально запущено приложение, нам нужно дать возможность другому пользователю (за пределами нашей сети) посмотреть на него.
Решение: проброс локального порта (127.0.0.1:80) на публично доступный адрес. Допустим, наш «публично доступный» Б занял 80ый порт чем-то полезным, так что пробрасывать мы будем на нестандартный порт (8080).
Итоговая конфигурация: запросы на 8.8.8.8:8080 будут попадать на localhost ноутбука А.
Опция -R позволяет перенаправлять с удалённого (Remote) сервера порт на свой (локальный).
Важно: если мы хотим использовать адрес 8.8.8.8, то нам нужно разрешить GatewayPorts в настройках сервера Б.
Задача. На сервере «Б» слушает некий демон (допустим, sql-сервер). Наше приложение не совместимо с сервером (другая битность, ОС, злой админ, запрещающий и накладывающий лимиты и т.д.). Мы хотим локально получить доступ к удалённому localhost'у.
Итоговая конфигурация: запросы на localhost:3333 на 'A' должны обслуживаться демоном на localhost:3128 'Б'.
Опция -L позволяет локальные обращения (Local) направлять на удалённый сервер.
Задача: На сервере «Б» на сером интерфейсе слушает некий сервис и мы хотим дать возможность коллеге (192.168.0.3) посмотреть на это приложение.
Итоговая конфигурация: запросы на наш серый IP-адрес (192.168.0.2) попадают на серый интерфейс сервера Б.
#SSH |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3
API (Application Programming Interface) – это программный интерфейс. Он обеспечивает взаимодействие двух программ между собой и позволяет без особых усилий встраивать контент с любого сайта. Основной задачей API является создание связи между двумя приложениями. API позволяет отправлять запросы на передачу или получение информации. Взаимодействие осуществляется через JSON, а данные получаем в приложениях с помощью API-запросов. API-запрос включает в себя 4 компонента: endpoint (точка приема запроса), header (заголовок), method (метод) и data (данные). После вызова всех компонентов мы можем построить API-запрос.
CRUD-операции включают в себя 4 функции: Create (создание), Read (чтение), Update (редактирование) и Delete (удаление). Это основные методы работы с базами данных. Операции CRUD предназначены для редактирования данных программы. Давайте рассмотрим подробнее, что означает каждая операция:
GET – метод GET позволяет получить информацию из источника/базы данных.
POST – метод POST позволяет вносить информацию в источник/базу данных.
PUT – метод PUT позволяет обновлять существующую информацию в источнике/базе данных
DELETE – метод DELETE удалять существующую информацию из источника/базы данных
JSON (JavaScript Object Notation) используется для представления данных на сервере в текстовом формате. Он легко читается как людьми, так и машинами. Вот как выглядят данные в JSON: картинка
Open API – означает, что API находится в свободном доступе и открыт для всех.
Partner API – в данном случае происходит взаимодействие между сервером и клиентами.
Private API – защищенный API, может использоваться только для внутренних операций, например, платежей.
API – это мощный инструмент для взаимодействия приложений на стороне клиента и сервера. API обеспечивает защищенность, скорость и масштабируемость для приложений eCommerce. Он помогает разработчикам отправлять данные клиентам и в наши дни используется повсеместно.
#API #CRUD |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.
Существует два распространенных типа подключения DPI пассивный и активный:
⏺ Пассивный DPI —DPI подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта
⏺ Активный DPI —DPI подключенный в сеть провайдера привычным образом, как и любое другое сетевое устройство. Провайдер настраивает маршрутизацию так, чтобы DPI получал трафик от пользователей к заблокированным IP-адресам или доменам, а DPI уже принимает решение о пропуске или блокировке трафика. Активный DPI может проверять как исходящий, так и входящий трафик, однако, если провайдер применяет DPI только для блокирования сайтов из реестра, чаще всего его настраивают на проверку только исходящего трафика
💬 Читать подробнее
#DPI |🌐 Сетевик Джонни
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.
Существует два распространенных типа подключения DPI пассивный и активный:
#DPI |
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5👍3
Почему ваш веб-сайт должен быть меньше 14 КБ
Чем меньше веб-сайт, тем быстрее он грузится, и это неудивительно.
Удивительно то, что страница на 14 КБ может грузиться гораздо быстрее, чем страница на 15 КБ, даже на
Так происходит из-за алгоритма медленного старта TCP.
⏺ Transmission Control Protocol (TCP) — это способ использования Internet Protocol (IP) для надёжной передачи пакетов данных; иногда его также называют TCP/IP.
⏺ Медленный старт TCP (TCP slow start) — это алгоритм, используемый серверами для определения того, сколько пакетов можно отправить за раз.
В каждом пакете TCP 40 байтов используются под заголовок — 16 байтов для IP и дополнительные 24 байта для TCP.
То есть на каждый пакет TCP остаётся 1460 байтов.
То есть если вы сможете уместить свой веб-сайт (или хотя бы его критически важные части) в 14 КБ, то сэкономите посетителям кучу времени, необходимого для передачи данных туда и обратно между ними и сервером веб-сайта.
💬 Читать подробнее
#tcp |🌐 Сетевик Джонни
Чем меньше веб-сайт, тем быстрее он грузится, и это неудивительно.
Удивительно то, что страница на 14 КБ может грузиться гораздо быстрее, чем страница на 15 КБ, даже на
612 мс быстрее, хотя разница между страницами на 15 КБ и 16 КБ минимальна.Так происходит из-за алгоритма медленного старта TCP.
В каждом пакете TCP 40 байтов используются под заголовок — 16 байтов для IP и дополнительные 24 байта для TCP.
То есть на каждый пакет TCP остаётся 1460 байтов.
10 x 1460 = 14600 байтов, или приблизительно 14 КБ!То есть если вы сможете уместить свой веб-сайт (или хотя бы его критически важные части) в 14 КБ, то сэкономите посетителям кучу времени, необходимого для передачи данных туда и обратно между ними и сервером веб-сайта.
#tcp |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥2❤1👎1🖕1
Обменяться параметрами можно вручную через мессенджер или сделать сигнальный сервер.
Соединения между браузерами еще нет, но нужно обменяться начальными параметрами
Параметры представлены в виде строк. Их можно отправлять друг другу вручную, например через мессенджер.
Можно автоматизировать. Сделать сигнальный сервер, который будет пересылать параметры между клиентами.
Требования к соединению зависят от задачи. Например, для видеосвязи браузеры должны выбрать кодек, который оба поддерживают. В браузерах есть API для формирования SDP.
См. Рис. “Session descriptors exchange”.
• Алиса формирует SDPOffer с указанием поддерживаемых кодеков. Отправляет Бобу.
• Боб получает SDPOffer и на его основе формирует SDPAnswer: выбирает кодек который есть у него и в SDPOffer. Нельзя сформировать SDPAnswer без SDPOffer. Боб отправляет SDPAnswer Алисе.
• Алиса устанавливает SDPAnswer: для трансляции будет использоваться кодек из SDPAnswer.
ICECandidate-ов может быть несколько. Например, один адрес в локальной сети, другой - во внешней. Чтобы узнать свой адрес нужен STUN сервер.
См. Рис. “Address exchange”.
Алиса узнает свои адреса, по которым она может получать пакеты. И отправляет их Бобу. Боб выбирает из полученных адресов-кандидатов.
У Алисы может быть несколько адресов. Например, один адрес в локальной сети, другой - во внешней. Если Боб в той же локальной сети, Алиса и Боб соединятся по локальному адресу.
Браузер не знает свой адрес. Чтобы узнать свой адрес браузер делает запрос к специальному STUN серверу. STUN сервер сообщает браузеру его (браузера) внешний адрес. Есть публичные STUN сервера, например у Google.
#WebRTC |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Во всех лабораторках для агрегирования использовались 2 кабеля. На самом деле можно использовать и 3, и 4 (вплоть до 8 интерфейсов в один port-channel). Но лучше использовать 2, 4 или 8 интерфейсов. А все из-за алгоритма хеширования, который придумала Cisco. Алгоритм высчитывает значения хэша от 0 до 7.
Данная таблица отображает 8 значений в двоичном и десятичном виде.
На основании этой величины выбирается порт Etherchannel и присваивается значение. После этого порт получает некую «маску», которая отображает величины, за которые тот порт отвечает. Вот пример. У нас есть 2 физических интерфейса, которые мы объединяем в один port-channel.
1) 0x0 — fa0/1
2) 0x1 — fa0/2
3) 0x2 — fa0/1
4) 0x3 — fa0/2
5) 0x4 — fa0/1
6) 0x5 — fa0/2
7) 0x6 — fa0/1
8) 0x7 — fa0/2
В результате получим, что половину значений или паттернов возьмет на себя fa0/1, а вторую половину fa0/2. То есть получаем 4:4. В таком случае балансировка будет работать правильно (50/50).
1) 0x0 — fa0/1
2) 0x1 — fa0/2
3) 0x2 — fa0/3
4) 0x3 — fa0/1
5) 0x4 — fa0/2
6) 0x5 — fa0/3
7) 0x6 — fa0/1
8) 0x7 — fa0/2
Здесь получаем, что fa0/1 возьмет на себя 3 паттерна, fa0/2 тоже 3 паттерна, а fa0/3 2 паттерна. Соответственно нагрузка будет распределена не равномерно. Получим 3:3:2. То есть первые два линка будут всегда загруженные, чем третий.
#агрегирование |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🫡2
Экосистема Hyper. Полный пиринг и шифрование
В настоящее время резко выросла потребность людей в защищённых коммуникациях. А с ней и популярность сервисов для защиты связи и шифрования. Это VPN, mesh-сети и пиринговые приложения для прямого обмена зашифрованными сообщениями, файлами и т. д. Один из самых продвинутых наборов такого рода — экосистема Hyper. Есть и другие (о них ниже).
Hyper — это набор маленьких JavaScript-модулей, которые можно комбинировать для создания неограниченного количества P2P-приложений, от VPN до коммуникационных инструментов типа P2P-мессенджера Keet. На сегодняшний день Keet — это практически единственное реальное приложение, построенное на Hyper, своего рода демонстрация возможностей платформы.
В набор Hyper входят следующие основные компоненты:
• Hypercore — защищённый распределённый журнал. Создан для обмена большими массивами данных и потоками данных в реальном времени. Из особенностей — разреженная репликация, простая плоская файловая структура для максимальной производительности ввода-вывода, безопасность (подписанные деревья Меркла для проверки целостности журнала в реальном времени), модульность.
• Hyperdrive — безопасная распределённая файловая система, работающая в реальном времени. Другие модели для работы с файлами: Localdrive и Mirrordrive.
• Hyperswarm — распределённый сетевой стек для P2P-коммуникации.
• Hyperbeam — сквозное шифрование в канале между двумя пирами на основе Hyperswarm.
• HyperDHT — Hyperswarm с поддержкой DHT (распределённое обнаружение пиров — distributed holepunching, как в торрентах).
• Hyperbee — B-дерево на базе Hypercore. Позволяет выполнять итерации с сортировкой и многое другое.
• Hypershell — спаунит терминал (оболочку) в любом месте. Полностью одноранговый, аутентифицированный и зашифрованный.
💬 Ссылка на чтение
#Hyper ||🌐 Сетевик Джонни
В настоящее время резко выросла потребность людей в защищённых коммуникациях. А с ней и популярность сервисов для защиты связи и шифрования. Это VPN, mesh-сети и пиринговые приложения для прямого обмена зашифрованными сообщениями, файлами и т. д. Один из самых продвинутых наборов такого рода — экосистема Hyper. Есть и другие (о них ниже).
Hyper — это набор маленьких JavaScript-модулей, которые можно комбинировать для создания неограниченного количества P2P-приложений, от VPN до коммуникационных инструментов типа P2P-мессенджера Keet. На сегодняшний день Keet — это практически единственное реальное приложение, построенное на Hyper, своего рода демонстрация возможностей платформы.
В набор Hyper входят следующие основные компоненты:
• Hypercore — защищённый распределённый журнал. Создан для обмена большими массивами данных и потоками данных в реальном времени. Из особенностей — разреженная репликация, простая плоская файловая структура для максимальной производительности ввода-вывода, безопасность (подписанные деревья Меркла для проверки целостности журнала в реальном времени), модульность.
• Hyperdrive — безопасная распределённая файловая система, работающая в реальном времени. Другие модели для работы с файлами: Localdrive и Mirrordrive.
• Hyperswarm — распределённый сетевой стек для P2P-коммуникации.
• Hyperbeam — сквозное шифрование в канале между двумя пирами на основе Hyperswarm.
• HyperDHT — Hyperswarm с поддержкой DHT (распределённое обнаружение пиров — distributed holepunching, как в торрентах).
• Hyperbee — B-дерево на базе Hypercore. Позволяет выполнять итерации с сортировкой и многое другое.
• Hypershell — спаунит терминал (оболочку) в любом месте. Полностью одноранговый, аутентифицированный и зашифрованный.
#Hyper ||
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
WebSocket (веб-сокет) - это протокол для двусторонней связи между клиентом и сервером через веб-соединение. Он предоставляет возможность передавать данные в режиме реального времени без необходимости постоянного запроса к серверу. WebSocket обеспечивает более эффективное соединение и не такие накладные расходы на его организацию, чем традиционные методы - например, HTTP-запросы и ответы.
Протокол имеет две схемы URI:
Вот основные характеристики и особенности WebSocket:
Установка соединения: WebSocket начинается с установки соединения через HTTP (обычно используется стандартный порт 80 или защищенный порт 443). После успешной установки соединения клиент и сервер могут обмениваться данными в реальном времени;
Двусторонняя связь: WebSocket поддерживает как отправку данных от клиента к серверу, так и от сервера к клиенту. Это позволяет строить интерактивные веб-приложения, где клиент и сервер могут обмениваться информацией без задержек;
Низкая задержка: WebSocket обеспечивает низкую задержку (лаг) по сравнению с традиционными методами долгого опроса (long polling) или периодическими запросами;
Протокол на основе кадров (frame-based protocol): Данные в WebSocket упаковываются в кадры (frames), что делает их эффективными для передачи и обработки;
Поддержка защиты (Security): WebSocket может использовать шифрование для обеспечения безопасности передаваемых данных, используя wss:// вместо ws:// в URL;
Поддержка разных типов данных: WebSocket позволяет передавать различные типы данных, включая текст, бинарные данные и даже произвольные объекты;
Событийная модель: WebSocket использует событийную модель для обработки входящих данных. Это означает, что Вы можете реагировать на события, такие как открытие соединения, получение сообщения или закрытие соединения.
#WebSocket |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Мы видим стандартный цикл PDCA с учетом сетевой специфики. Первым элементом системы является источник правды (source of truth), это в каком-то формате ipam- система, мы тут храним полный перечень сетевого оборудования (не обязательно только сетевого, но в нашем контексте важно именно сетевое), подсети, актуальные используемые ip адреса, vlan и тд., все что нам необходимо для описания текущего состояния сетевой инфраструктуры. Важное условие – данные в нашей системе должны быть актуальными и консистентными, то есть мы должны опираться на эти данные и не сомневаться в них (поэтому мы называем его источником правды).
На основании вносимых изменений в эти данные мы производим изменения в сети вручную или с помощью различных инструментов автоматизации, Ansible, Nornir, Netbrain, кому что больше нравится и подходит для решения конкретной задачи.
Хорошо, мы раскатили изменения в сети. Что происходит дальше? Дальше мы как-то должны понять, что все раскатилось хорошо и сеть работает. Сеть работает так, как мы и запланировали, в соответствии с источником правды.
В данной статье мы рассмотрим актуальные методы проверки работоспособности сетевого оборудования. Конкретно в этой статье мы поговорим про протоколы мониторинга. Статья является переваренным опытом компании Netopia, которая занимается разработкой программного обеспечения для сетей.
#PDCA |
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4