- Тип данных: пакеты
- Назначение: определение маршрута пакета между сетями, логическая адресация
- Примеры: IP v4, IP v6
- Действующие "лица": IP-адрес, маска, маршрут, сетевая карта, маршрутизатор (роутер)
Мы умеем передавать данные от устройства к устройству, если заранее знаем MAC-адрес. Мы умеем объединять много устройств в одну сеть с помощью хаба или коммутатора. Но MAC-адрес получателя еще как-то надо узнать. И если мы соединим ОЧЕНЬ много устройств с помощью кучи коммутаторов, то нужно уметь как-то найти оптимальный (быстрый, кратчайший) маршрут, не создавая лишнюю нагрузку на сеть и не дожидаясь, пока наш пакет обойдет ее всю. Кроме того, у коммутаторов память на адреса весьма ограничена, поэтому соединить все коммутаторы и жить долго и счастливо не получится. Поэтому коммутаторы живут внутри небольших сетей, например внутри организаций, а для соединения разных сетей существуют маршрутизаторы (роутеры), они пользуются специальными протоколами и алгоритмами для построения маршрутов между сетями и определяют, куда отправлять полученные пакеты, чтобы они дошли до адресата. Использование роутеров позволяет придавать сетям структуру, сохраняя при этом связность (данные продолжают ходить куда надо). Например, чтобы послать данные на известный хост (скажем, сервер друга), не нужно знать ничего о внутренней структуре сетей, например, Ростелекома, к которым он подключен, достаточно просто иметь хотя бы один маршрут до Ростелекомовского роутера, а их роутеры дальше сами разберутся. Или вообще достаточно иметь маршрут до какого-нибудь роутера в своей сети, а роутер, если настроен на подключение к интернету, отправит пакет роутеру провайдера, который в свою очередь отправит пакет (грубо говоря) на один из центральных роутеров (Core Routers), они в свою очередь отправят пакет провайдеру друга, а провайдер отправит пакет уже ему на сервер. Может показаться, что существует какой-то единый центр интернета, но на самом деле существует "позвоночник" (Internet Backbone) - постоянно меняющееся множество государственных и частных организаций, которые обмениваются трафиком друг с другом, причем трафик может быть из какого-то географического региона, страны, континента. То есть единого центра нет, если кто-то из "позвоночника" перестанет функционировать, трафик пойдет по альтернативному маршруту через роутеры других участников, согласившихся на обмен трафиком. Максимум - отпадет крупный сегмент интернета, но он продолжит функционировать самостоятельно, как и остальной интернет будет работать без него.
Современные домашние роутеры по сути ничем не отличаются от обычных компьютеров и могут выполнять много других функций, об этом позже. Из обычного компьютера тоже можно сделать роутер, настроив на нем работу протоколов маршрутизации и подключив к нескольким сетям.
Протоколы, которые используются в internet backbone, разбирать не будем: это, например, BGP и IS-IS. Протоколы динамической маршрутизации и обмена маршрутами между роутерами нужно знать только администратору крупной сети, поэтому обойдемся и без них: это RIPv2, OSPF, EIGRP. Если вкратце, то маршруты "что куда посылать и почему" в роутерах не настраиваются вручную, а частично вычисляются самими роутерами и частично получаются путем обмена между роутерами, для этого и нужны эти протоколы. Руками прописываются только настройки протоколов и часть маршрутов, при необходимости. Эти же протоколы позволяют обеспечивать отказоустойчивость, когда при падении или замедлении рабочего маршрута роутеры быстро находят альтернативные маршруты через подключенных соседей.
Обеспечивает адреса в сетях, разделение сетей на независимые части и некоторые дополнительные функции. Здесь мы начинаем нарушать иерархию OSI, потому что IP чаще всего работает в связке с TCP (протокол 4 уровня) и еще мы преобразуем MAC-адреса в IP-адреса и наоборот. Части статей из википедии:
Internet Protocol (IP, досл. «межсетевой протокол») — маршрутизируемый протокол сетевого уровня стека TCP/IP. Именно IP стал тем протоколом, который объединил отдельные компьютерные сети во всемирную сеть Интернет. Неотъемлемой частью протокола является адресация сети (IP-адреса).
IP объединяет сегменты сети в единую сеть, обеспечивая доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов (маршрутизаторов). Он классифицируется как протокол третьего уровня по сетевой модели OSI. IP не гарантирует надежной доставки пакета до адресата — в частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (приходят две копии одного пакета), оказаться поврежденными (обычно поврежденные пакеты уничтожаются) или не прийти вовсе. Гарантию безошибочной доставки пакетов дают некоторые протоколы более высокого уровня — транспортного уровня сетевой модели OSI, — например, TCP, которые используют IP в качестве транспорта.
В современной сети Интернет чаще всего используется IP четвертой версии, также известный как IPv4. В протоколе IP этой версии каждому узлу сети ставится в соответствие IP-адрес длиной 4 октета (4 байта). При этом компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети (ранее использовалось деление пространства адресов по классам — A, B, C; класс сети определялся диапазоном значений старшего октета и определял число адресуемых узлов в данной сети, сейчас используется бесклассовая адресация).
Существует еще IPv6 который разрабатывался для замены IPv4, но пока что он не используется повсеместно. Он решает многие существующие проблемы, но сложнее для понимания.
конец вставки из википедии
Про маски и прочее чуть позже, а сейчас посмотрим на структуру IP-пакета:
- Версия - 4 бит, в IPv4 всегда 4 (0100 в двоичном виде)
- Размер заголовка (Internet Header Length) - 4 бит, нужен из-за того что сам заголовок пакета может иметь разное число опций, и поэтому разную длину. Это число указывает на размер заголовка в 4-байтных словах (то есть, 1 означает что заголовок имеет размер 4 байта, 2 - 8 байт, и т.д.)
- Differentiated Services Code Point (DSCP) - 6 бит, изначально называлось «тип обслуживания» (Type of Service, ToS), в настоящее время определяется как «Differentiated Services». Используется для разделения трафика на классы обслуживания, например для установки чувствительному к задержкам трафику, такому как VoIP, большего приоритета. Оборудование может обращать внимание на эти значения и менять порядок пакетов, пропуская вперед пакеты с высоким приоритетом.
- Указатель перегрузки (Explicit Congestion Notification, ECN) - 2 бита, Явное Уведомление о Перегруженности. Является необязательной функцией и используется только если оба хоста ее поддерживают. Можно не заморачиваться.
- Размер пакета - 2 байта, размер всего пакета в байтах (включая заголовок и данные), значения от 20 (заголовок без данных) до 65535.
- Идентификатор - 2 байта. Используется, если пакет был фрагментирован (разбит на несколько пакетов поменьше). Такое бывает по разным причинам.
- Флаги - 3 бита.
- не используется, всегда 0
- 0 если пакет можно фрагментировать, 1 если нельзя
- 0 если это последний пакет из серии фрагментов, 1 если есть еще фрагменты.
- Смещение фрагмента - 13 бит. Указывает смещение текущего фрагмента от начала передачи фрагментированного пакета в блоках по 8 байт. Первый фрагмент в последовательности имеет нулевое смещение. Нужно для реконструкции фрагментированного содержимого пакета обратно в правильном порядке (пакеты-то могут прийти произвольно).
- Время жизни (TTL, time to live) - 1 байт. Определяет максимальное количество маршрутизаторов на пути следования пакета. Наличие этого параметра не позволяет пакету бесконечно ходить по сети, предотвращая штормы. Каждый маршрутизатор при обработке пакета должен уменьшить значение TTL на единицу. Пакеты, время жизни которых стало равно нулю, уничтожаются, а отправителю посылается сообщение Time Exceeded по протоколу ICMP.
- Протокол - 1 байт. Указывает, данные какого протокола IP содержит пакет внутри (например, TCP или ICMP). Присвоенные номера протоколов можно найти на сайте IANA (сейчас их 142 штуки). Часто встречающиеся протоколы разберем позже.
- Контрольная сумма заголовка - 2 байта. Тут число, которое сетевая карта сверит с собственной суммой, прочитав заголовок до конца. Если не совпадает, значит заголовок прочитан неправильно и пакет выбрасывается.
- Адрес отправителя - 4 байта
- Адрес получателя - 4 байта
- Опции, длина переменная, используются редко, можно не заморачиваться.
- Данные, длина переменная, в конце нет контрольной суммы, потому что целостность и проверку ошибок обеспечивают протоколы более высокого уровня, которые как раз находятся в этих данных.
Интерес здесь представляют фрагментация, TTL и собственно данные.
Фрагментация возникает из-за того, что IP может ходить по разным сетям, и где-то под ним будет Ethernet, а где-то что-то другое, поэтому в настройках интерфейсов на роутерах есть параметр MTU (maximum transfer unit), и если пришедший IP-пакет больше чем MTU интерфейса, куда его надо переправить, роутер разбивает пакет на фрагменты. Принимающий роутер или компьютер следит за флагом фрагментации, смещением пакета и номером фрагмента, ждет пока придут все части и собирает пакет обратно, потом обрабатывает. Бывает, важно указать правильный MTU при подключении к провайдерам домашнего интернета.
TTL ограничивает количество роутеров, по которым может пройти пакет. Максимум 255. Если в сети возник цикл, пакет быстро исчерпает свой лимит и "умрет", поэтому не возникнет бесконечного цикла или шторма. Обычное начальное значение TTL=64 (зависит от ОС).
Некоторые операторы сотовой связи запрещают использовать мобильный интернет на компьютерах, подключенных через телефон, потому что телефон играет роль роутера и уменьшает TTL на 1, поэтому оператор видит пакеты с TTL 63 (а не 64) и не пропускает их, подозревая, что их изначально отправил компьютер, а не телефон. Можно настроить телефон или компьютер так, чтобы провайдер получал пакеты с ожидаемым TTL.
Трассировка (traceroute) - инструмент сетевой диагностики, показывающий маршрут пакета в сети. Основан на отправке пакетов с разным временем жизни. Сначала отправляется пакет с TTL = 1, ближайший роутер его получает, уменьшает TTL до 0, "убивает" и в ответ посылает сообщение об этом по протоколу ICMP. Так мы узнали адрес первого роутера. Теперь отправляем пакет с TTL = 2. Первый роутер его пересылает дальше, уже с TTL = 1, следующий роутер убивает пакет и отвечает сообщением по ICMP. Теперь мы знаем адрес второго роутера. И так далее пока пакет не доберется до цели.
Поле, описывающее, что за данные несет IP-пакет, по сути нарушает модель OSI, потому что получается что "конверт" что-то знает о содержимом письма. Но это позволяет более эффективно решать некоторые задачи на роутерах.
Теперь разберем протоколы и концепции, которые тесно соседствуют с IP.
Считается протоколом канального (2) уровня, далее выдержка из википедии:
ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по известному IP-адресу.
Рассмотрим суть функционирования ARP на простом примере. Компьютер А (IP-адрес 10.0.0.1) и компьютер Б (IP-адрес 10.22.22.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Однако сеть Ethernet, которой они соединены, не работает с IP-адресами. Поэтому компьютеру А для осуществления передачи через Ethernet требуется узнать адрес компьютера Б в сети Ethernet (MAC-адрес в терминах Ethernet). Для этой задачи и используется протокол ARP. По этому протоколу компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене (общий провод, хабы или коммутаторы). Суть запроса: «компьютер с IP-адресом 10.22.22.2, сообщите свой MAC-адрес компьютеру с МАС-адресом (напр. a0:ea:d1:11:f1:01)». Сеть Ethernet доставляет этот запрос всем устройствам в том же сегменте Ethernet, в том числе и компьютеру Б. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес (напр. 00:ea:d1:11:f1:02) Теперь, получив MAC-адрес компьютера Б, компьютер А может передавать ему любые данные через сеть Ethernet.
Наибольшее распространение ARP получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку практически в 100 % случаев при таком сочетании используется ARP.
конец вставки из википедии
Роутер по определению подключен к разным IP-сетям. Это значит, что на разных интерфейсах у него настроены разные IP-адреса, состоящие в разных подсетях. Подсеть определяется маской, об этом позже. Его интерфейсы имеют разные MAC-адреса. Когда роутер получает Ethernet-фрейм, он достает из него IP-пакет, смотрит на IP-адрес получателя, определяет по таблице маршрутизации, на какой интерфейс этот пакет отправить, заворачивает его в новый Ethernet-фрейм со своим MAC в поле source и с MAC получателя, которого он узнал с помощью ARP-запроса на нужном интерфейсе, и отправляет на этот интерфейс. И так с каждым пакетом. Таблица маршрутизации у него есть благодаря ручным настройкам и протоколам маршрутизации, MAC-адреса "соседей" он запоминает из ARP-запросов и хранит какое-то время в ARP-таблице в памяти, чтобы не заваливать сеть дурацкими вопросами.
Выше была речь про широковещательный запрос, или broadcast- когда пакет посылается на специальный адрес "для всех". На уровне Ethernet это MAC-адрес FF:FF:FF:FF:FF:FF. В остальных случаях пересылка идет от одного устройства к другому, это называется unicast. На уровне IP есть и другие варианты. Все это - типы маршрутизации, и вообще они бывают такие:
- Unicast - одному конкретному получателю. Используется чаще всего.
- Anycast - одному любому получателю. Ближайшему или "лучшему" по какому-нибудь из параметров. Используется, например для балансировки нагрузки на корневые DNS-сервера.
- Broadcast - всем получателям. Используется, например, в ARP и других протоколах для обнаружения участников. Полезно для доставки чего-то всем и сразу, но при злоупотреблении может обвалить сеть, потому что такие пакеты начинают копироваться всеми устройствами (и роутерами тоже) на все интерфейсы. То есть, и жизненно необходимо, и опасно. Поэтому в IP придуманы некоторые ограничения, чтобы такие пакеты не выходили за пределы небольшой домашней/рабочей подсети в интернет. Об этом ниже.
- Multicast - группе получателей. Позволяет снизить нагрузку на сеть, отправляя данные один раз сразу всем, кто их ожидает. Например, потоковое видео, групповые звонки или конференц-связь. Все это - отдельная большая тема, нужная далеко не каждому, поэтому обойдемся без мультикаста и соответствующих протоколов. Достаточно просто знать, что такая штука существует и даже как-то работает.
- Википедия выделяет еще Geocast - вид мультикаста по географическому признаку. Какой-то совсем частный случай, я с ходу даже не нашел понятных примеров, как и зачем это используется.
Маска вместе с IP-адресом определяют подсеть, в которой этот IP-адрес находится. Для этого нужно иметь представление о двоичном виде адреса и сравнить с маской: Например:
адрес 192.168.1.1
маска 255.255.255.0
В двоичном виде:
адрес 11000000 10101000 00000001 00000001
маска 11111111 11111111 11111111 00000000
если применить логическое (побитовое) И (AND) к адресу и маске, получим
AND 11000000 10101000 00000001 00000000
или в десятичном виде 192.168.1.0
это адрес подсети, одинаковый для всех устройств в ней, можно сказать, имя подсети. В конце в двоичном виде остались нули, это место под адрес устройства в этой подсети, может быть любым значением. То есть, там, где в двоичном виде маски единицы - это подсеть, а где нули - это адрес устройства в подсети. Количество единиц в начале и нулей в конце позволяет менять количество возможных устройств в подсети, т.е. ее размер. В примере выше, восемь нулей в конце маски это 256 адресов устройств в подсети 192.168.1.0. Есть договоренность не использовать для устройств первый и последний адреса в подсети: первый идентифицирует саму подсеть, а последний - широковещательный (broadcast) в этой подсети. Маска может состоять только из идущих подряд единиц и нулей в конце, поэтому ее можно записывать не как 255.255.255.0, а как \24 после IP-адреса, где 24 - это количество бит-единиц в начале маски.
Вся эта фигня с масками нужна, чтобы роутеры могли определять, на каком интерфейсе нужно искать устройство-адресат, зная свой IP адрес на этом интерфейсе и маску, т.е. диапазон адресов устройств в этой подсети. А еще чтобы создавать подсети нужного размера под свои нужды при постройке сети. И еще чтобы не пропускать броадкасты в другие сети: например, броадкаст на адрес какой-нибудь широкой подсети теоретически должен бы был отправляться всем, что привело бы к обвалу сети. А зная маску, роутер пересылает броадкасты только в нужные подсети на своих интерфейсах, или не пересылает совсем.
Еще немного примеров IP с масками, на примерах обычно понять проще:
192.168.0.42/24
адрес 192.168.0.42
маска 255.255.255.0
В двоичном виде:
адрес 11000000 10101000 00000000 00101010
маска 11111111 11111111 11111111 00000000
если применить логическое (побитовое) И (AND) к адресу и маске, получим
AND 11000000 10101000 00000000 00000000
или в десятичном виде 192.168.0.0 - адрес подсети
в конце маски 8 нулей, т.е. 8 последних бит в этой подсети можно менять, раздавая разным устройствам. Их адреса - от 00000001 до 11111110, то есть от .1 до .254 - 254 адреса (256 минус первый и последний).
10.255.7.38/12
адрес 10.255.7.38
маска 255.240.0.0
В двоичном виде:
адрес 00001010 11111111 00000111 00100110
маска 11111111 11110000 00000000 00000000
если применить логическое (побитовое) И (AND) к адресу и маске, получим
AND 00001010 11110000 00000000 00000000
или в десятичном виде 10.240.0.0 - адрес подсети
в конце маски 20 нулей, т.е. 20 последних бит в этой подсети можно менять, раздавая разным устройствам. Их адреса - от 0000 00000000 00000001 до 1111 11111111 11111110, то есть от 10.240.0.1 до 10.255.255.254 - 10485754 адреса (10485756 минус первый и последний).
5.6.7.8/8
адрес 5.6.7.8
маска 255.0.0.0
В двоичном виде:
адрес 00000101 00000110 00000111 00001000
маска 11111111 00000000 00000000 00000000
если применить логическое (побитовое) И (AND) к адресу и маске, получим
AND 00000101 00000000 00000000 00000000
или в десятичном виде 5.0.0.0 - адрес подсети
в конце маски 24 нуля, т.е. 24 последних бит в этой подсети можно менять, раздавая разным устройствам. Их адреса - от 00000000 00000000 00000001 до 11111111 11111111 11111110, то есть от .0.0.1 до .255.255.254 - 16777214 адреса (16777216 минус первый и последний).
Если роутер на своих интерфейсах имеет соседние подсети, то он может просигнализировать другим роутерам (по протоколам маршрутизации), что через него есть маршрут до более широкой подсети (с меньшей маской), т.е. для других роутеров это будет выглядеть как одна запись в таблице маршрутов. А когда ему придет пакет на эту подсеть, он уже будет определять, на какой именно интерфейс переслать, потому что у него есть более подробная информация о подсетях.
Среди всех IP-адресов есть несколько специальных диапазонов, пакеты с которыми не передаются роутерами между сетями. Такие адреса предназначены для использования в локальных сетях и называются немаршрутизируемыми.
- 10.0.0.0 — 10.255.255.255 (маска подсети 255.0.0.0 или /8)
- 172.16.0.0 — 172.31.255.255 (маска подсети 255.240.0.0 или /12)
- 192.168.0.0 — 192.168.255.255 (маска подсети 255.255.0.0 или /16)
То есть, IP-пакеты с такими адресами "ходят" только внутри локальной сети и не попадают наружу, их использование никто не контролирует, и в интернете нет хостов с такими адресами. Помимо удобства настройки (своя сеть - свои правила), это позволяет пользоваться протоколами, основанными на broadcast’ах, и они не будут выходить наружу и гулять по всей мировой сети.
Есть еще зарезервированный диапазон 224.0.0.0/4, он используется для мультивещания (multicast). Некоторые адреса из этого диапазона глобально маршрутизируемы.
Специальный диапазон 127.0.0.0 — 127.255.255.255 (маска подсети 255.0.0.0 или /8), не используется для обмена между узлами сети, пакеты с такими адресами компьютер (или роутер) перенаправляет сам себе. Полезно для использования сетевых служб запущенных на своем же компьютере, а также для тестирования.
IP-адресов оказалось слишком мало, поэтому, вкратце, их выдают или продают небольшими блоками государствам/организациям/провайдерам, а провайдеры в свою очередь пользователям, за деньги, поэтому на каждый свой компьютер IP-адрес не купишь, кроме того, возникли бы проблемы с маршрутами, если бы компьютер или телефон с забитым в него IP-адресом переходил с места на место, потому что роутеры оперируют сетями и подсетями, и не смогут так просто найти устройство, внезапно "переехавшее" куда-то в чужую подсеть. Поэтому обычные юзеры от провайдера чаще всего получают один "белый", т.е. нормальный маршрутизируемый IP-адрес, и роутер, который создает локальную сеть с немаршрутизируемыми адресами внутри, например, квартиры. В квартире к этой сети может быть подключено что угодно и в любом количестве, но у всех устройств будут немаршрутизируемые адреса. Роутер, который находится между провайдером и домашней сетью, из интернета выглядит как один компьютер. Когда домашние компьютеры запршивают какой-то внешний адрес, роутер в их запросах подменяет IP-адрес отправителя (из локальной сети) на свой (выданный провайдером), и запоминает, что в полученном ответе надо проделать обратную операцию, и на какой из домашних компьютеров передать ответ. Эта технология называется NAT (network address translation), или иногда - маскарад (masquerading). NAT бывает разных типов и с немного разным поведением, может работать и в обратную сторону (когда запрос из интернета передается в локальную сеть и потом обратно), но общая суть сохраняется - это маскировка нескольких компьютеров за одним. Эта технология вызывает боль у геймеров и у тех, кто хочет держать какой-нибудь сервер дома, потому что нужно настроить свой роутер так, чтобы входящие запросы приходили на нужный компьютер. В качестве побочного эффекта NAT защищает домашние компьютеры от всех подключений извне, что похоже на простой файерволл.
Домашние роутеры обычно работают в одиночку, а клиентские устройства подключены к ним напрямую или через коммутатор. Сеть очень маленькая и простая, поэтому нет необходимости дома настраивать протоколы динамической маршрутизации. Чтобы устройства знали, куда отправлять IP-пакеты, когда они не предназначены локальной сети, у них есть настройка Шлюз (default gateway) - все пакеты, не предназначенные в локальную сеть, уходят туда, и обычно шлюзом выступает роутер, у которого в свою очередь шлюзом выступает хост провайдера. Шлюз - пример статического маршрута, т.е. который вручную вбит в таблицу маршрутизации (да, у всех устройств она всегда есть).
Есть протокол для автоопределения шлюза, собственного IP-адреса и маски без ручной настройки, DHCP, но он относится к протоколам прикладного уровня, поэтому о нем позже.
Всем знакома команда ping. Чуть раньше было что-то про traceroute, который получает ответы про протоколу ICMP.
ICMP (англ. Internet Control Message Protocol — протокол межсетевых управляющих сообщений) — сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, например, когда хост или маршрутизатор не отвечают. Также на ICMP возлагаются некоторые сервисные функции. Хотя формально ICMP использует IP (ICMP-пакеты инкапсулируются в IP пакеты), он является неотъемлемой частью IP и обязателен при реализации стека TCP/IP.
Ping - программа, которая посылает IP-пакет с запросом ICMP Echo Request, и ожидает получить ответ с типом ICMP Echo Reply.
Traceroute - отправляет пакеты, которые "умирают" на каждом хосте по пути следования, и ожидает получить ответ с типом ICMP Time Exceeded от каждого хоста, на котором пакет "умер", поэтому в ответе будет IP-адрес хоста. Так можно отследить маршрут.
Отсутствие ICMP-ответов не всегда означает недоступность хоста или проблему с сетью, потому что ICMP протокол может быть заблокирован файерволлом.
Virtual LAN - технология и несколько протоколов, встроенные в некоторые роутеры и свитчи, позволяет "держать" на одном порту несколько разных локальных подсетей одновременно, или например общую подсеть на разных портах разных роутеров/свитчей. Используется для создания сети нужной топологии, не меняя физическую топологию. Бывает еще нужно для разграничения трафика в сетях предприятий, для обеспечения безопасности и/или стабильности работы.