Устройство сети Интернет
(стиль Заголовок 2)
Сеть– это совокупность компьютеров, объединенных средствами передачи данных.
Сеть Интернет– это обширное сообщество связанных между собойсетейиотдельныхкомпьютеров, представляющих некоторую информацию в пользование.
К их числу сетей, входящих в состав Интернет можно отнести и крупные региональные сети, охватывающие целые страны (российский сегмент принято называть «Рунетом»), и небольшие локальные сети отдельных предприятий и организаций, каждая из которых интегрирована в Интернет. Отдельные сети в составе Интернет относительно независимы и могут развиваться по своим собственным законам и правилам, оставаясь в то же время частью единой структуры. Сети, в свою очередь, состоят из большого количествапостоянно подключенных компьютеров
«У кольца нет начала и конца» — эту поговорку из неподъемного цикла романов Айзека Азимова можно с полным правом отнести и к Интернет. У Сетинет центра— хотя большая часть ее ресурсов по-прежнему сосредоточена вСША. Нет унее начала— хотя традиционно «началом» Интернет считается сайт швейцарской лаборатории атомной физики (CERN), где и родилась технология Всемирной сети (WWW).Нету нее иконца— хотя в Сети и существует несколько сайтов с таким названием.
А потому может показаться, что нету Интернет иопределенной структуры. Но она все-таки есть — четкая иерархия компьютеров и пользователей.
Самый нижний— а значит, и самый массивный уровень сетевого «айсберга» — этомы с вами, простые пользователи, подключенные к Сети черезнизкоскоростной телефонныйканал илилокальную сеть. Поток данных между нашими компьютерами и Сетью ничтожно мал — не болеенескольких килобайтв секунду!
Более того, никто из нас даже не имеет в Сети постоянной прописки: «сетевой адрес» (или IP) нашим компьютерам присваивается только на время входа в Сеть, и при каждом подключении он меняется. А значит, постоянного доступа к нашему компьютеру не может получить никто.
Поползем вверхпо нашему «айсбергу». Немного выше простых пользователей расположены
Еще вышерасположеныпровайдеры—держатели еще более мощных и скоростных каналовсвязи, которые не только пользуются ими сами, но и предоставляют возможность подключения к Сети конечным пользователям и другим провайдерам классом пониже. Таким образом, в эту группу попадают и
Вот мы и вышли уже на уровень целого региона или даже страны, где мы неизменно столкнемся с главным «боссом» данного сегмента Сети — организацией, которая контролирует самый «толстый»,главный канал, соединяющий всю сеть этого региона с остальной частью Интернет (его пропускная способность может достигать нескольких
Крупные страны, как правило, подключены к Сети сразу через несколько информационных магистралей — волоконно-оптических кабелей или каналов спутниковой связи, — что позволяет обеспечить надежность и стабильность связи. Хотя нередки случаи, когда после внезапного сбоя или аварии от Интернет оказывалась отрезанной целая страна и даже континент.
Что же происходит, когда с самого низа «айсберга» поступает запрос на подключение к одному из удаленных компьютеров Сети? Сигнал отправляется по цепочке — от вашего компьютера к компьютеру провайдера, затем — к промежуточному серверу, затем — еше к одному. И так далее — по цепочке, проходя по дороге через десятки компьютеров в разных регионах. Понаблюдать за маршрутом прохождения вашего сигнала порой очень любопытно, и многие специалисты частенько проделывают такую процедуру с помощью специальных программ. В реальной жизни такой «марш-бросок» из Москвы в Токио через какую-нибудь Папуа — Новую Гвинею выглядит пустой тратой времени и денег, для Интернет же это — дело вполне обычное. В самом худшем случае нужная вам страница откроется на секунду-другую позже, за счет чрезмерно извилистого маршрута, по которому идет сигнал от удаленного компьютера до вашей «персоналки». Ничего страшного, можно и подождать…
Зато за счет отсутствия единого центра, через который проходили бы все сигналы со всех концов света, автономного и вполне независимого существования отдельных сегментов сети, Интернет выигрывает значительно больше, чем теряет. В Сети нет границ, ее (пока что)невозможноконтролировать. Ни один диктатор или террорист не сможет «подгрести» Сеть под себя, установив контроль над «главным» сервером. Безусловно, можно установить контроль над отдельным сегментом Сети, фильтруя всю циркулирующую по нему информацию. Так происходит сегодня во многих мусульманских странах, в Китае и Северной Корее. Но Сеть в целом не подвластна никому — и именно в этом и состоит ее главное преимущество перед всеми остальными видами коммуникации.
Строим сеть своими руками и подключаем ее к Интернет, часть первая
Мы начинаем публикацию цикла статей на тему развертывания небольшой (в пределах дома или небольшого офиса) локальной сети и подключения ее к Интернет.
Полагаю, актуальность этого материала на сегодня довольно высока, так как только за последние пару месяцев несколько моих знакомых, неплохо знающие компьютеры в целом, задавали мне вопросы на сетевые темы, которые я считал очевидными. Видимо таковыми они являются далеко не для всех 😉
По ходу статьи будут использованы термины из сетевой области, большинство их них объясняется в мини-ЧаВо о сетях, составленного Дмитрием Редько.
К сожалению, этот материал давно не обновляется. Хотя он и не потерял актуальности, но в нем довольно много пробелов, поэтому, если найдутся добровольцы эти пробелы заполнить, пишите на емейл, указанный в конце этой статьи.
При первом использовании сетевого термина, с него будет идти гиперссылка на объяснение оного в ЧаВо. Если некоторые термины не будут объяснены по ходу статьи или в ЧаВо, не стесняйтесь упомянуть этот факт в конференции, где эта статья будет обсуждаться.
Итак. В первой части будет рассмотрен самый простой случай. Имеем 2 или более компьютеров со встроенной в материнскую плату или установленной отдельно сетевой картой, коммутатор (switch) или даже без него, а так же канал в Интернет, предоставленный ближайшим провайдером.
Зафиксируем, что на всех компьютерах установлена операционная система Microsoft Windows XP Professional с Service Pack версии 1. Не буду утверждать, что это наиболее массовая ОС, установленная сейчас на компьютерах, но рассматривать все существующие семейства той же Microsoft довольно долго (но, если найдется много страждущих, проанализируем и другие). Версия языка ОС – English. На русской версии все будет работать аналогичным образом, читателям надо будет лишь найти соответствия русских аналогов названий в представленных ниже скришнотах.
Если у нас всего лишь два компьютера и в наличии нет коммутатора, то для создания сети между двумя компьютерами требуется наличие сетевой карты в каждом из них и кросс-овер кабель для объединения компьютеров друг с другом.
Почему кросс-овер и чем плох обычный кабель? В стандартах Ethernet на 10 и 100Мбит (10Base-T и 100Base-TX) для витой пары используется 4 провода (две свитых меж собой пары проводов). Обычно в кабеле, типа витая пара, 8 проводов, но из них используются только 4 (все восемь применяются в Gigabit Ethernet).
В разъемах типа MDI, установленных на сетевых картах, контакты 1 и 2 отвечают за передачу, 3, 6 — за прием. Если совместить контакты двух сетевых карт прямым кабелем (один к одному), то ничего не будет работать, что очевидно из рисунка:
MDI порт сетевой карты1,
| MDI порт сетевой карты2
|
На обеих сетевых картах, в случае прямого провода, совмещаются пары 3,6, отвечающие за прием (обе будут ждать передачи, слушать линию) и пары 1,2, отвечающие за передачу (обе будут пытаться передавать, но их никто не услышит). Эту проблему исправляет кросс-овер кабель, он перекрещивает пары проводов 1,2 и 3,4, т.е. меняет их местами. Таким образом, сигнал из 1,2 пары пойдет в 3,6 пару второй сетевой карты, а из 3,6 — в 1,2.
Два коммутатора между собой объединяются по тому же принципу (на коммутаторах стоят разъемы MDI-X, для их соединения необходим тот же самый кроссовер кабель).
А теперь возвращаемся к нашей сети из двух компьютеров. Если пропустить теорию, то для соединения вышеназванных машин нам нужно или купить готовый кроссовер кабель, или обжать его самостоятельно, воспользовавшись обжимным инструментом.
После получения кабеля, соединяем с помощью него сетевые карты компьютеров и вуаля — все должно заработать (на физическом уровне). Для проверки работоспособности сети на физическом уровне (уровне сигналов) имеет смысл посмотреть на индикаторы (чаще всего зеленого цвета), которые расположены на сетевой карте вблизи RJ-45 разъема. Как минимум один из них должен отвечать за индикацию наличия линка (физического соединения). Если загорелись индикаторы на обеих сетевых картах, то физический линк есть, кабель обжат верно. Горящий индикатор лишь на одной из двух карт не говорит о том, что на физическом уровне все в порядке. Мерцание этих (или соседних) индикаторов сигнализирует о передаче данных между компьютерами. Если индикаторы на обеих картах не горят, то с большой вероятностью неверно обжат или он поврежден кабель. Так же возможно, что одна из сетевых карт вышла из строя.
Конечно, описанное в предыдущем абзаце не означает, что операционная система видит сетевую карту. Горение индикаторов говорит лишь о наличии физического линка между компьютерами, не более того. Чтобы Windows увидела сетевую карту, нужен драйвер этой карты (обычно, операционка сама находит нужный и ставит его автоматически). Цитата из форума: «Как раз вчера диагностировал случай с подключенной сетевухой, не до конца вставленной в PCI-разъем. В результате “физически” сеть работала, но ОС ее не видела.».
Рассмотрим вторую ситуацию. Имеется коммутатор и два или более компьютера. Если два компьютера еще можно соединить без коммутатора, то если их три (или больше), то их объединение без свича является проблемой. Хотя проблема и разрешима — для объединения трех компьютеров нужно в один из них вставить две сетевые карты, перевести этот компьютер в режим маршрутизатора (роутера) и соединить его с двумя оставшимися машинами. Но описание этого процесса уже выходит за рамки этой статьи. Остановимся на том, что для объединения в одну локальную сеть трех и более компьютеров нужен коммутатор (тем не менее, есть и другие варианты: можно объединять компьютеры с посощью FireWire интерфейса или USB DataLink кабеля; а так же с помощью беспроводных (WiFi) карт, переведенных в Ad Hoc режим функционирования… но об этом в следующих сериях).
К коммутатору компьютеры подсоединяются прямым кабелем. Какой вариант заделки (568A или 568B) будет выбран — абсолютно не важно. Главное помнить, что с обеих сторон кабеля она (заделка) совпадала.
После обжима кабеля (или покупки оного в магазине), и подсоединения всех имеющихся компьютеров к коммутатору, следует проверить наличие физического линка. Проверка протекает аналогично вышеописанному способу для двух компьютеров. На коммутаторе рядом с портами так же должны присутствовать индикаторы, сигнализирующие о наличии физического соединения. Вполне может оказаться, что индикаторы находятся не рядом (сверху, сбоку, снизу) с портом, а вынесены на отдельную панель. В таком случае они будут пронумерованы в соответствии с номерами портов.
Добравшись до этого абзаца, мы уже имеем физически объединенные в локальную сеть 2 или более компьютеров. Переходим к настройке операционной системы.
Для начала, проверим правильность установок IP-адресации у сетевой карты. По-умолчанию, ОС Windows (2K/XP) сама назначает нужные IP адреса картам, но лучше в этом убедится самим.
Идем в настройки сетевой карты. Это можно сделать двумя путями, через панель управления (Start —> Control Panel —> Network Connection)
Или, если сетевое окружение (Network Places) вынесено на рабочий стол, то достаточно кликнуть по нему правой кнопкой и выбрать Properties (Свойства).
В появившемся окне выбираем нужный сетевой адаптер (обычно он там один). Новое окно сообщает нам довольно много информации. Во-первых, статус соединения (в данном случае — Connected, т.е. физическое подключение есть) и его скорость (100 Мбит). А так же количество посланных и принятых пакетов. Если кол-во принимаемых пакетов равно нулю, а в сети находится более одного компьютера (включенными), то это, возможно, указывает на неисправность нашей сетевой карты или порта коммутатора (если компьютер подключен к нему). Так же возможна неисправность самого кабеля.
Выбрав закладку Support, можно узнать текущий IP адрес и маску подсети, назначенные сетевой карте. По умолчанию, ОС Windows дают адаптерам IP адреса их диапазона 169.254.0.0 — 169.254.255.254 с маской подсети 255.255.0.0. Обсуждение масок, классов подсетей и так далее выходит за рамки этой статьи. Главное запомнить, что маска подсети у всех компьютеров из одной сети должна совпадать, а IP адреса — различаться. Но опять таки, цифры IP адреса, которые совпадают по позициям с ненулевыми цифрами маски подсети, у всех компьютерах должны быть одинаковыми, т.е. в данном примере у всех хостов из локальной сети в IP адресе будут совпадать две первые позиции цифр — 169.254.
IP-настройки сетевой карты могут задаваться и вручную (Свойства сетевого адаптера —> Properties —> Internet Protocol (TCP/IP) —> Properties). Но в большинстве случаев имеет смысл выставить настройки в значение по умолчанию (автоматическое определение IP адреса и DNS) и операционная система настроит сетевые адаптеры сама.
Кроме сетевых адресов, всем компьютерам нужно задать одинаковое имя рабочей группы. Это настраивается в настройках системы (System Properties). Туда можно попасть через панель управления (System —> Computer Name). Разумеется, можно задавать и разные имена рабочим группам. Это удобно, если у вас много компьютеров в сети и нужно как то логически разделить работающие машины между собой. Следствием этого станет появление нескольких рабочих групп в сетевом окружении (вместо одной).
или, если значок My Computer был выведен на рабочий стол, то правым кликом мыши на этом значке и выборе (Properties —> Computer Name).
В появившемся окне (появляющимся после нажатия кнопки Change) можно изменить имя компьютера (каждой машине — свое уникальное имя). И тут же надо ввести название рабочей группы. У всех компьютеров в локальной сети название рабочей группы должно совпадать.
После этого ОС попросит перезагрузиться, что и нужно будет сделать.
На любом из компьютеров можно «расшаривать» (т.е. выкладывать в общий доступ) директории. Это делается следующим образом:
В проводнике жмем правой кнопкой на директорию, выбираем Свойства (Properties).
Выкладывание директорий в общий доступ осуществляется в закладке Sharing. В первый раз нам предложат согласиться, что мы понимаем то, что делаем.
Во все последующие — достаточно лишь поставить галку в поле Share this foldier (к директории будет открыт доступ по сети только в режиме чтения). Если нужно разрешить изменение данных по сети, то придется поставить галку в поле Allow Network User to Change my Files.
После подтверждения (нажатия OK), значок директории сменится на тот, что показан на скриншоте.
С других компьютеров получить доступ к расшаренным директориям можно, зайдя в сетевое окружение (My Network Places), находящееся в меню Пуск или на рабочем столе, выбрав View Workgroup Computers,
а затем щелкнуть на нужном имени компьютера.
Выложенные в общий доступ директории будут представлены в появившемся окне.
После выбора любой из них можно работать с ними так же, как будто они расположены на локальном компьютере (но, если разрешение на изменение файлов при шаринге директории не было активировано, то изменять файлы не получится, только смотреть и копировать).
Обращаю внимание, что вышеописанный метод без проблем будет работать, если на обоих компьютерах (на котором директория была расшарена и который пытается получить к ней доступ по сети) были заведены одинаковые имена пользователей с одинаковыми паролями. Другими словами, если вы, работая под пользователем USER1, выложили в общий доступ директорию, то что бы получить к ней доступ с другого компьютера, на нем так же должен быть создан пользователь USER1 с тем же самым паролем (что и на первом компьютере). Права пользователя USER1 на другом компьютере (том, с которого пытаются получить доступ к расшаренному ресурсу) могут быть минимальными (достаточно дать ему гостевые права).
Если вышеописанное условие не выполняется, могут возникнуть проблемы с доступом к расшаренным директориям (выпадающие окошки с надписями вида отказано в доступе и тд). Этих проблем можно избежать, активировав гостевой аккаунт. Правда в этом случае ЛЮБОЙ пользователь внутри локальной сети сможет увидеть ваши расшаренные директории (а в случае сетевого принтера — печатать на нем) и, если там было разрешено изменение файлов сетевыми пользователями, то любой сможет их изменять, в том числе и удалять.
Активация гостевого аккаунта производится следующим образом:
Пуск —> панель управления —>
такой вид, как на скриншоте, панель управления приобретает после щелканья на кнопке Switch to Classic View (переключиться к классическому виду)
—> администрирование —> computer management —>
В появившемся окне управления компьютером выбираем закладку управления локальными пользоватлями и группами, находим гостевой (Guest) аккаунт и активируем его. По умолчанию в Windows гостевой аккаунт уже заведен в системе, но заблокирован.
Пару слов о добавлении пользователей в систему (подробнее об этом в следующих статьях). В том же менеджере управления локальными пользователями и группами, щелкаем правой кнопкой мыши на свободном месте списка пользователей, выбираем New user (добавить нового пользователя).
В появившемся окне вводим логин (в данном случае введен user2), полное имя и описание, последние два значения не обязательны ко вводу. Далее назначаем пароль (password), в следующем поле — повторяем тот же самый пароль. Снятие галки User must change password at next logon (пользователь должен сменить пароль при следующем входе в систему), дает пользователю входить в систему под заданным паролем и не будет требовать его смены при первом логоне. А галка напротив Password never expiries (пароль никогда не устареет), дает возможность пользоваться заданным паролем бесконечное время.
По умолчанию, вновь созданный пользользователь входит в группу Users (пользователи). Т.е. у пользователя будут довольно ограниченные права. Тем не менее, их будет довольно много и на локальном компьютере можно будет зайти под этим логином и вполне конфортно работать. Можно еще более ограничить права (до минимума) этого пользователя, выведя его из группы Users и введя в группу Guests (гости). Для этого жмем правой кнопкой мыши на пользователя, выбираем Properties (свойства),
Member of —> Add, в появившемся окне жмем на Advanced (дополнительно)
Жмем Find Now (найти). И в появившемся списке выбираем нужную группу (Guest, гости).
Пользователь введен в группу Guest. Осталось вывести его из группы Users: выделяем ее и щелкаем на кнопке Remove (удалить).
Более гибкое управление доступом к расшареным ресурсам можно получить, отключив режим Simple File Sharing (простой доступ к файлам) в настройках Explorer-а. Но это опять выходит за рамки текущей статьи.
Предоставление в общий доступ (расшаривание) принтеров производится аналогичным способом. На компьютере, к которому подключен принтер, выбираем его значок (через пуск —> принтеры), жмем на нем правой кнопкой мыши, выбираем свойства (properties).
Управление общим доступом к принтеру осуществляется в закладке Sharing. Нужно выбрать пункт Shared As и ввести имя принтера, под которым он будет виден в сетевом окружении.
На других компьютерах, подключенных к той же локальной сети, сетевой принтер, скорее всего, сам появится в меню принтеров. Если этого не произошло, запускаем значок Add Printer (добавить принтер),
который вызовет визард по подключению принтеров.
Указываем ему, что мы хотим подключить сетевой принтер.
В следующем меню указываем, что хотим найти принтер в сетевом окружении. Так же можно ввести прямой UNC до принтера, например, \компьютер1принтер1, воспользовавшись пунктом Connect to this Printer.
UNC (Universal Naming Convention) — Универсальный сетевой путь, используется в операционных системах от Microsoft. Представляется в виде \имя_компьютераимя_расшаренного_ресурса, где имя_компьютера = NetBIOS имя машины, а имя_расшаренного_ресурса = имя расшаренной директории, принтера или другого устройства.
Если мы выбрали пункт поиска принтера в сетевом окружении, то после нажатия кнопки Next появится окно просмотра сетевого окружения, где и нужно выбрать расшареный принтер. После этой операции, с локальной машины можно посылать документы на печать на удаленный принтер.
Итак. Мы получили работоспособную локальную сеть. Пора бы дать ей доступ в Интернет. Далее в этой статье будет рассказано, как организовать такой доступ, используя один из компьютеров в качестве маршрутизатора (роутера). Для этого в нем должно стоять две сетевых карты. Например, одна — встроенная в материнскую плату, а вторая — внешняя, вставленная в PCI слот. Или две внешние, это неважно.
Ко второй сетевой карте роутера (первая смотрит в локальную сеть) подключаем провод, идущий от провайдера. Это может быть витая пара (кроссовер или прямой кабель) от ADSL модема, так же витая пара, протянутая монтажниками локальной сети вашего района или еще что-нибудь.
Вполне возможна ситуация, что ADSL модем (или другое подобное устройство) подключается к компьютеру через USB интерфейс, тогда вторая сетевая карта не нужна вовсе. Возможно так же, что компьютер-роутер является ноутбуком, у которого есть одна сетевая карта, подключенная проводом в локальную сеть и WI-FI (беспроводная) сетевая карта, подключенная к беспроводной сети провайдера.
Главное, что в окне Network Connections видны два сетевых интерфейса. В данном случае (см.скришнот) левый интерфейс (Local Area Connection 5) отвечает за доступ в локальную сеть, а правый (Internet) — за доступ в глобальную сеть Интернет. Разумеется, названия интерфейсов будут отличаться в каждом конкретном случае.
До реализации следующих шагов внешний интерфейс (смотрящий в Интернет) должен быть настроен. Т.е. с компьютера-будущего-роутера доступ в Интернет уже должен работать. Эту настройку я опускаю, так как физически невозможно предусмотреть все возможные варианты. В общем случае интерфейс должен автоматически получить нужные настройки от провайдера (посредством DHCP сервера). Можно проверить, получила ли сетевая карта какие-то адреса, аналогично способу, описанному выше в этой статье. Встречаются варианты, когда представитель провайдера выдает Вам список параметров для ручного конфигурирования адаптера (как правило, это IP адрес, список DNS-серверов и адрес шлюза).
Для активации доступа к Интернет для всей локальной сети кликаем правой кнопкой на внешнем (смотрящим в сторону Интернет) интерфейсе.
Выбираем закладку Advanced. И тут ставим галку напротив пункта Allow other Network Users to Connect through this Computer’s Internet Connection. Если нужно, что бы этим Интернет доступом можно было управлять с других компьютеров локальной сети, включаем Allow other Network Users to Control…
Если на машине не используется какой либо дополнительный файрвол (брандмауэр), помимо встроенного в Windows (т.е. программа, которая была дополнительно установлена на машину), то обязательно включаем файрвол (защита нашего роутера от внешнего мира) — Protect my Computer and Network. Если дополнительный файрвол установлен, то встроенную защиту можно не активировать, а лишь настроить внешний брандмауэр. Главное — что бы файрвол на интерфейсе, смотрящим в сторону Интернет обязательно был включен, встроенный или внешний.
После подтверждения (нажатия кнопки OK) в компьютере активируется режим роутера, реализуемого посредством механизма NAT. А над сетевым интерфейсом, где этот механизм активирован, появляется символ ладони (замочек сверху означает включение защиты файрволом этого интерфейса).
Прямым следствием этого режима является изменение адреса на локальном (смотрящем в локальную сеть) интерфейсе маршрутизатора на 192.168.0.1 с маской подсети 255.255.255.0. Кроме этого на компьютере, выступающем в роли маршрутизатора, активируется сервис DHCP (маршрутизатор начинает раздавать нужные параметры IP-адресации на все компьютеры локальной сети), и DNS (преобразования IP адресов в доменные имена и обратно). Маршрутизатор становится шлюзом по умолчанию для всех остальных компьютеров сети.
А вот как это выглядит с точки зрения остальных компьютеров локальной сети. Все они получают нужные настройки IP-адресации от маршрутизатора по DHCP. Для этого, разумеется, в настройках их сетевых карт должны стоять автоматическое получение IP адреса и DNS. Если это не было сделано, то ничего работать не будет. Настройка автоматического получения IP адреса и DNS была описана выше. Возможно, что компьютер получит нужные адреса от маршрутизатора не сразу, чтобы не ждать, можно нажать кнопку Repair, которая принудительно запросит DHCP сервис выдать нужную информацию.
При правильной настройке сетевой карты, компьютеры получат адреса из диапазона 192.168.0.2—254 с маской 255.255.255.0. В качестве шлюза по умолчанию (default gw) и DNS сервера будет установлен адрес 192.168.0.1 (адрес маршрутизатора).
Начиная с этого момента, компьютеры локальной сети должны получить доступ в Интернет. Проверить это можно, открыв какой-либо сайт в Internet Explorer или пропинговав какой-либо хост в интернете, например, www.ru. Для этого надо нажать Пуск –> Выполнить и в появившемся окошке набрать
ping www.ru -t
Разумеется, вместо www.ru можно выбрать любой другой работающий и отвечающий на пинги хост в Интернет. Ключ «-t» дает возможность бесконечного пинга (без него будет послано всего четыре пакета, после чего команда завершит работу, и окно с ней закроется).
В случае нормальной работы канала в Интернет, вывод на экран от команды ping должен быть примерно такой, как на скриншоте, т.е. ответы (reply) должны идти. Если хост не отвечает (т.е. канал в Интернет не работает или что-то неверно настроено на маршрутизаторе) то вместо ответов (reply-ев) будут появляться timeout-ы. Кстати говоря, не у всех провайдеров разрешен ICMP протокол, по которому работает команда ping. Другими словами, вполне возможна ситуация, что «пинг не проходит», но доступ в Интернет есть (сайты открываются нормально).
Напоследок немного подробнее остановлюсь на механизме NAT. NAT — Network Address Translation, т.е. технология трансляции (преобразования) сетевых адресов. При помощи этого механизма несколько машин из одной сети могут выходить в другую сеть (в нашем случае — несколько машин из локальной сети могут выходить в глобальную сеть Интернет) используя только один IP адрес (вся сеть маскируется под одним IP адресом). В нашем случае это будет IP адрес внешнего интерфейса (второй сетевой карты) маршрутизатора. IP адреса пакетов из локальной сети, проходя через NAT (в сторону Интернет), перезаписываются адресом внешнего сетевого интерфейса, а возвращаясь обратно, на пакетах восстанавливается правильный (локальный) IP адрес машины, которая и посылала исходный пакет данных. Другими словами, машины из локальной сети работают под своими адресами, ничего не замечая. Но с точки зрения внешнего наблюдателя, находящегося в Интернет, в сети работает лишь одна машина (наш маршрутизатор с активированным механизмом NAT), а еще две, три, сто машин из локальной сети, находящейся за маршрутизатором для наблюдателя не видны совсем.
С одной стороны, механизм NAT очень удобен. Ведь, получив лишь один IP адрес (одно подключение) от провайдера, можно вывести в глобальную сеть хоть сотню машин, буквально сделав несколько кликов мышкой. Плюс локальная сеть автоматически защищается от злоумышленников — она просто не видна для внешнего мира, за исключением самого компьютера-маршрутизатора (многочисленные уязвимости семейства ОС от Microsoft опять выпадают за рамки этой статьи, отмечу лишь, что активировать защиту, т.е. включать файрвол на внешнем интерфейсе маршрутизатора, о чем было сказано выше, нужно обязательно). Но есть и обратная сторона медали. Не все протоколы (и, соответственно, не все приложения) смогут работать через NAT. Например, ICQ откажется пересылать файлы. Netmeeting, скорее всего, не заработает, могут возникнуть проблемы с доступом на некоторые ftp-сервера (работающие в активном режиме) и т.д. Но для подавляющего большинства программ механизм NAT останется полностью прозрачным. Они его просто не заметят, продолжив работать, как ни в чем не бывало.
Но. Что делать, если внутри локальной сети стоит WEB или какой-либо другой сервер, который должен быть виден снаружи? Любой пользователь, обратившись по адресу http://my.cool.network.ru (где my.cool.network.ru — адрес маршрутизатора), попадет на 80й порт (по умолчанию WEB сервера отвечают именно на этому порту) маршрутизатора, который ничего не знает о WEB-сервере (ибо он стоит не на нем, а где-то внутри локальной сети ЗА ним). Поэтому маршрутизатор просто ответит отлупом (на сетевом уровне), показав тем самым, что он действительно ничего не слышал о WEB (или каком-либо ином) сервере.
Что делать? В этом случае надо настроить редирект (перенаправление) некоторых портов с внешнего интерфейса маршрутизатора внутрь локальной сети. Например, настроим перенаправление порта 80 внутрь, на веб сервер (который у нас стоит на компьютере 169.254.10.10):
В том же меню, где активировали NAT, жмем кнопку Settings и выбираем в появившемся окне Web Server (HTTP).
Так как мы выбрали стандартный протокол HTTP, который уже был занесен в список до нас, то выбирать внешний порт (External Port), на который будет принимать соединения маршрутизатор и внутренний порт (Internel Port) на который будет перенаправляться соединение в локальную сеть, не нужно, — там уже выставлены стандартное значение 80. Тип протокола (TCP или UDP) уже так же определен. Осталось лишь задать IP адрес машины в локальной сети, куда будет перенаправлено входящее из Интернет соединение на веб-сервер. Хотя, как меня правильно поправили в форуме, лучше задавать не IP адрес, а имя этой машины. Так как IP-адрес (который выдается автоматически, DHCP сервером), вполне может сменится, а имя машины — нет (его можно поменять лишь вручную).
Теперь с точки зрения внешнего наблюдателя (находящегося в Интернет), на маршрутизаторе (локальная сеть за ним по прежнему не видна) на 80м порту появился веб-сервер. Он (наблюдатель) будет с ним работать как обычно, не предполагая, что на самом то деле веб-сервер находится совсем на другой машине. Удобно? Полагаю, да.
Если потребуется дать доступ извне к какому-нибудь нестандартному сервису (или стандартному, но не занесенному заранее в список), то вместо выбора сервисов из списка в вышеприведенном скриншоте, надо будет нажать кнопку Add и ввести все требуемые значения вручную.
Вместо заключения
В первой части цикла статей была рассмотрена возможность организации доступа локальной сети в Интернет с помощью встроенных возможностей Windows XP от компании Microsoft. Не следует забывать, что полученный в результате настройки компьютер-маршрутизатор должен работать постоянно, ведь если он будет выключен, остальные хосты из локальной сети доступ в Интернет потеряют. Но постоянно работающий компьютер — не всегда удобно (шумит, греется, да и электричество кушает).
Варианты организации доступа локальных сетей в глобальную, не ограничиваются вышеописанным. В следующих статьях будут рассмотрены другие способы, например посредством аппаратных маршрутизаторов. Последние уже фигурировали в обзорах на нашем сайте, но в тех статьях упор делался на тестирование возможностей, без особых объяснений, что эти возможности дают пользователю. Постараемся исправить это досадное упущение.
Навигация
Подходы к подключению устройств Интернета вещей к сети / ICL Services corporate blog / Habr
Интернет вещей — это широкий спектр вариантов применения отдельных устройств, и сетевые архитекторы должны учитывать большое количество нюансов, включая способы организации связи, электроснабжение, пропускную способность, надежность, затраты и т. д.Подключение устройств Интернета вещей к сети может быть сложной задачей для ИТ-менеджеров, поскольку требования к параметрам связи могут в данном случае значительно отличаться от требований, характерных для традиционных ПК, планшетов и смартфонов, которые уже подключены к корпоративным сетям.
Кроме того, существует невероятное разнообразие устройств Интернета вещей и вариантов их применения. Например:
- Полицейская машина сегодня стала настоящим мобильным офисом, использующим большое количество информационных технологий. В ней установлено несколько ИТ-систем (ПК, система локального позиционирования, камеры, датчики), которым требуется двунаправленная высокоскоростная безопасная и надежная связь.
- На предприятиях применяется широкий спектр датчиков и видеокамер для мониторинга производственных процессов и обеспечения безопасной и безостановочной работы. Эти датчики часто монтируются в труднодоступных местах и требуют надежной и безопасной связи.
- Сегодня в общественных местах установлено множество камер видеонаблюдения, которые помогают обеспечивать безопасность. Этим камерам требуется высокоскоростная и надежная связь для трансляции видео (в основном в одном направлении) в централизованные системы.
- Многие больницы используют подключенное к сети медицинское оборудование для отслеживания местоположения и быстрого поиска ближайшего устройства. В этом случае используются надежные низкоскоростные соединения для широкого спектра устройств.
Разнообразие требований к подключению устройств Интернета вещей к сети
Помимо широкого спектра вариантов применения соответствующих технологий, существуют буквально сотни различных типов устройств и датчиков для Интернета вещей. Каждый тип имеет свои уникальные требования, включая количество подключений, стоимость подключения, доступность источников питания и параметры двунаправленной передачи данных.
Требования к сети для Интернета вещей
В зависимости от конкретных устройств и вариантов применения для сети Интернета вещей нужно будет обеспечить:
- возможность подключения большого количества неоднородных элементов Интернета вещей;
- высокую надежность;
- передачу данных в режиме реального времени с минимальными задержками;
- возможность защитить все потоки трафика;
- возможность программирования для настройки приложений;
- мониторинг и управление трафиком на уровне устройств;
- недорогую связь для большого количества устройств и (или) датчиков.
Выполнить этот список требований сложно, возможно, ИТ-менеджерам даже придется обеспечить поддержку нескольких типов сетевых подключений с учетом вариантов применения технологий Интернета вещей.
Влияние SDN и NFV на структуру сетей Интернета вещей
Благодаря новым программно-определяемым сетям, таким как SDN, NFV и SD-WAN, сетевые архитекторы получили новые инструменты для разработки гибких сетей. NFV и SDN предоставляют технологии для настройки сетей под требования Интернета вещей. NFV предлагает множество виртуальных сетевых функций (VNF), включая маршрутизацию, обеспечение безопасности, шлюзы и управление трафиком, которые могут быть объединены с целью развертывания настраиваемых сетевых служб для Интернета вещей. SDN обеспечивает централизованное регулирование потоков данных и управление ими в масштабных распределенных сетях Интернета вещей.
Вызовы, связанные с большими данными
Вопросы проектирования сетей Интернета вещей
Существует ряд факторов, которые ИТ-менеджеры должны принимать во внимание в ходе планирования сетей Интернета вещей. Вопросы первого уровня: Устройства или датчики какого типа будут подключаться? Сколько будет устройств? Какой объем трафика ожидается? Ответив на эти вопросы, можно будет спланировать варианты подключения, а также примерно рассчитать бюджет сети, включая капитальные затраты и операционные расходы.
Также необходимо ответить на следующие ключевые вопросы:
- Устройства/датчики будут стационарными или мобильными?
- Каковы требования к безопасности на уровне устройств?
- Нужно ли анализировать данные Интернета вещей в режиме реального времени?
- Должны ли сеть и ИТ-система контролировать активность устройства или они в основном играют пассивную роль?
- Есть ли у конкретного устройства/датчика доступ к источнику питания переменного тока?
Технологии связи для Интернета вещей
У ИТ-менеджеров есть широкий спектр возможностей для организации связи с устройствами и датчиками Интернета вещей. Каждый вариант имеет свои преимущества и недостатки в зависимости от варианта применения.
Четыре сетевые технологии, которые сегодня получили широкое коммерческое применение и могут стать основной для сетей Интернета вещей:
- Модуль беспроводной связи Bluetooth встраивается во многие устройства, включая смартфоны, но эта технология имеет ограниченный диапазон и не гарантирует надежность.
- Wi-Fi универсален, он применяется для ПК, смартфонов и планшетов, однако для поддержания непрерывной связи он расходует много энергии.
- Технология 4G LTE широко распространена и обеспечивает высокую скорость, но может быть дорогостоящей при больших объемах данных и потребляет много энергии.
- Ethernet обеспечивает высокоскоростные подключения к локальной сети в большинстве филиалов и кампусов, но для подключения к устройствам Интернета вещей требуется физический кабель.
Кроме того, появился ряд новых сетевых технологий, разработанных специально для подключения устройств Интернета вещей. К ним относятся:
- Интернет вещей на основе сотовых сетей (это несколько стандартов, включая LTE-M, NB LTE-M и NB-IOT).
- Маломощные территориально распределенные сети, такие как SigFox и LoRa, которые созданы специально для устройств с низким энергопотреблением (с питанием только от автономных источников).
- ZigBee — стандарт беспроводной связи, предназначенный для сетей типа «машина-машина», обеспечивающий низкую стоимость и минимальное энергопотребление.
Влияние Интернета вещей на сети филиалов и кампусов
Важным фактором для многих ИТ-организаций является влияние новых сетей Интернета вещей на существующие сети филиалов и кампусов, а также распределенные сети (WAN). Устройства Интернета вещей могут создавать новые модели трафика, генерировать большие потоки данных и предъявлять уникальные требования к задержкам.
Сеть филиала
Сеть отдела — это обычно умеренное количество устройств, подключенных через Ethernet и Wi-Fi. В большинстве филиалов нет обученного ИТ-персонала, поэтому сетями нужно управлять удаленно. ИТ-организации переходят на такие технологии, как SD-WAN и SD-Branch, чтобы воспользоваться экономически эффективными возможностями для удовлетворения растущих требований к пропускной способности WAN и упростить создание и администрирование удаленной сети. Подключение устройств Интернета вещей в филиалах может повлечь за собой появление новых сетевых технологий, подлежащих администрированию, и привести к возникновению проблем, связанных с необходимостью удаленного устранения неполадок и управлением устройствами; кроме того, часто при этом приходится увеличивать пропускную способность WAN. Для некоторых вариантов применения технологий Интернета вещей могут потребоваться значительная локальная вычислительная мощность и большие хранилища данных.
Сеть кампуса
Сеть кампуса может состоять из большого количества устройств (ПК, планшетов, смартфонов, принтеров и т. д.), подключаемых через Wi-Fi и Ethernet с высокопроизводительной магистралью для установления соединений с центром обработки данных в организации. Там, где развернута сеть кампуса, как правило, присутствует обученный ИТ-персонал для решения сетевых проблем, связанных с увеличением задержек, перерывами в обслуживании и т. д. При развертывании Интернета вещей на базе сети кампуса могут создаваться новые сети для подключения удаленных датчиков, при этом значительно увеличивается количество подключенных устройств и часто возникают проблемы, связанные с управлением устройствами, аутентификацией и перегрузкой существующей сети Wi-Fi.
Интеллектуальные ИТ на основе подключенных устройств и датчиков Интернета вещей помогают организациям лучше обслуживать клиентов, быстрее доставлять товары и сокращать расходы путем повышения эффективности операций. Локальная или распределенная сеть в любом случае является критическим элементом с точки зрения развертывания безопасных, надежных и высокоскоростных систем Интернета вещей. Уникальные требования, предъявляемые системами Интернета вещей отдельных типов, приводят к необходимости реализации новых вариантов сетевых подключений и влияют на существующие сети филиалов и кампусов. Многим ИТ-организациям было сложно внедрить платформы Интернета вещей, которые отвечают требованиям к высокой надежности, гарантируют низкие задержки и высокую безопасность, обеспечивают централизованное управление.
Чтобы создать сетевую архитектуру, которая подходит для подключения устройств Интернета вещей, ИТ-организация должны проанализировать большое количество вариантов. Руководители ИТ-подразделений должны тщательно оценить текущие требования к сетям Интернета вещей с точки зрения пропускной способности (в обоих направлениях), надежности, безопасности и затрат. Требования к сетям Интернета вещей и технологиям подключения устройств будут продолжать развиваться. Сетевые архитектуры должны быть гибкими и адаптируемыми, чтобы удовлетворять изменяющиеся бизнес-требований.
Локальная сеть: основы функционирования компьютерных сетей
Локальная сеть (локальная вычислительная сеть или ЛВС) представляет собой среду взаимодействия нескольких компьютеров между собой. Цель взаимодействия — передача данных. Локальные сети, как правило, покрывают небольшие пространства (дом, офис, предприятие) — чем и оправдывают своё название. ЛВС может иметь как один, так и несколько уровней. Для построения многоуровневой локальной сети применяют специальное сетевое оборудование: маршрутизаторы, коммутаторы. Существует несколько способов объединения компьютеров и сетевого оборудования в единую компьютерную сеть: проводное (витая пара), оптическое (оптоволоконный кабель) и беспроводное (Wi-Fi, Bluetooth) соединения.
Топология локальной сети
Первое к чему нужно приступать при изучении основ функционирования компьютерных сетей, это топология (структура) локальной сети. Существует три основных вида топологии: шина, кольцо и звезда.
Линейная шина
Все компьютеры подключены к единому кабелю с заглушками по краям (терминаторами). Заглушки необходимы для предотвращения отражения сигнала. Принцип работы шины заключается в следующем: один из компьютеров посылает сигнал всем участникам локальной сети, а другие анализируют сигнал и если он предназначен им, то обрабатывают его. При таком взаимодействии, каждый из компьютеров проверяет наличие сигнала в шине перед отправкой данных, что исключает возникновения коллизий. Минус данной топологии — низкая производительность, к тому же, при повреждении шины нарушается нормальное функционирование локальной сети и часть компьютеров не в состоянии обрабатывать либо посылать сигналы.
Кольцо
В данной топологии каждый из компьютеров соединен только с двумя участниками сети. Принцип функционирования такой ЛВС заключается в том, что один из компьютеров принимает информацию от предыдущего и отправляет её следующему выступая в роли повторителя сигнала, либо обрабатывает данные если они предназначались ему. Локальная сеть, построенная по кольцевому принципу более производительна в сравнении с линейной шиной и может объединять до 1000 компьютеров, но, если где-то возникает обрыв сеть полностью перестает функционировать.
Звезда
Топология звезда, является оптимальной структурой для построения ЛВС. Принцип работы такой сети заключается во взаимодействии нескольких компьютеров между собой по средствам центрального коммутирующего устройства (коммутатор или свитч). Топология звезда позволяет создавать высоконагруженные масштабируемые сети, в которых центральное устройство может выступать, как отдельная единица в составе многоуровневой ЛВС. Единственный минус в том, что при выходе из строя центрального коммутирующего устройства рушится вся сеть или её часть. Плюсом является то, что, если один из компьютеров перестаёт функционировать это никак не сказывается на работоспособности всей локальной сети.
Что такое MAC-адрес, IP-адрес и Маска подсети?
Прежде чем познакомиться с основными принципами взаимодействия сетевых устройств, необходимо подробно разобрать, что такое IP-адрес, MAC-адрес и Маска подсети.
MAC-адрес — это уникальный идентификатор сетевого оборудования, который необходим для взаимодействия устройств в локальной сети на физическом уровне. MAC-адрес «вшивается» в сетевую карту заводом изготовителем и не подлежит изменению, хотя при необходимости это можно сделать на программном уровне. Пример записи MAC-адреса: 00:30:48:5a:58:65.
IP-адрес – это уникальный сетевой адрес узла (хоста, компьютера) в локальной сети, к примеру: 192.168.1.16. Первые три группы цифр IP-адреса используется для идентификации сети, а последняя группа для определения «порядкового номера» компьютера в этой сети. Если провести аналогию, то IP-адрес можно сравнить с почтовым адресом, тогда запись будет выглядеть так: регион.город.улица.дом. Изначально, использовались IP-адреса 4-ой версии (IPv4), но когда количество устройств глобальной сети возросло до максимума, то данного диапазона стало не хватать, в следствии чего был разработан протокол TCP/IP 6-ой версии — IPv6. Для локальных сетей достаточно 4-ой версии TCP/IP протокола.
Маска подсети – специальная запись, которая позволяет по IP-адресу вычислять адрес подсети и IP-адрес компьютера в данной сети. Пример записи маски подсети: 255.255.255.0. О том, как происходит вычисление IP-адресов мы рассмотрим чуть позже.
Что такое ARP протокол или как происходит взаимодействие устройств ЛВС?
ARP — это протокол по которому определяется MAC-адрес узла по его IP-адресу. Например, в нашей локальной сети есть несколько компьютеров. Один должен отправить информацию другому, но при этом знает только его IP-адрес, а для взаимодействия на физическом уровне нужен MAC-адрес. Что происходит? Один из компьютеров отправляет широковещательный запрос всем участникам локальной сети. Сам запрос, содержит IP-адрес требуемого компьютера и собственный MAC-адрес. Другой компьютер с данным IP-адресом, понимает, что запрос пришел к нему и в ответ высылает свой MAC-адрес на тот, который пришел в запросе. После чего собственно и инициализируется процесс передачи информационных пакетов.
Сетевой коммутатор и маршрутизатор (роутер)
Для согласования работы сетевых устройств используется специальное сетевое оборудование — коммутаторы и маршрутизаторы. Исходя из рассмотренного выше, важно понять простую истину — коммутаторы работают с MAC-адресами, а маршрутизаторы (или роутеры) с IP-адресами.
Коммутатор содержит таблицу MAC-адресов устройств локальной сети непосредственно подключенных к его портам. Изначально таблица пуста и начинает заполняться при старте работы коммутатора, происходит сопоставление MAC-адресов устройств и портов, к которым они подключены. Это необходимо для того, чтобы коммутатор напрямую пересылал информационные пакеты тем участникам локальной сени, которым они предназначены, а не опрашивал все устройства ЛВС.
Маршрутизатор также имеет таблицу, в которую заносит IP-адреса устройств на основе анализа локальной сети. Роутер может самостоятельно раздавать IP-адреса устройствам ЛВС благодаря протоколу динамического конфигурирования узла сети (DHCP). Таблица маршрутизации позволяет роутеру вычислять наикратчайшие маршруты для отправки информационных пакетов между различными узлами ЛВС. Данные узлы (компьютеры) могут находиться в любом сегменте многоуровневой сети невзирая на архитектуру той или иной подсети. К примеру, маршрутизатор связывает локальную сеть с глобальной (интернет) через сеть провайдера.
Пример маршрутизации
Допустим, в таблице маршрутизации есть такая запись:
Сеть | Маска | Интерфейс |
192.168.1.0 | 255.255.255.0 | 192.168.1.96 |
Роутер получает пакет, предназначенный для хоста с IP-адресом 192.168.1.96, после чего начинает обход таблицы маршрутизации и обнаруживает, что при наложении маски подсети 255.255.255.0 на IP-адрес 192.168.1.96 вычисляется сеть с IP-адресом 192.168.1.0. Пройдя строку до конца роутер находит IP-адрес интерфейса 192.168.1.96, на который и отправляет полученный пакет.
Как происходит вычисление IP-адреса сети и компьютера?
Для вычисления IP-адреса сети используется маска подсети. Начнем с того, что привычная для наших глаз запись IP-адреса представлена в десятеричном формате (192.168.1.96). На самом деле, сетевое устройство данный IP-адрес видит, как набор нолей и единиц, то есть в двоичной системе исчисления (11000000.10101000.00000001.01100000). Так же выглядит и маска подсети (255.255.255.0 -> 11111111.11111111.11111111.00000000).
IP-адрес назначения | 192.168.1.96 | 11000000 10101000 00000001 01100000 |
Маска подсети | 255.255.255.0 | 11111111 11111111 11111111 00000000 |
IP-адрес сети | 192.168.1.0 | 11000000 10101000 00000001 00000000 |
Что получается? Какой бы у нас не был IP-адрес назначения (к примеру 192.168.1.96 или 192.168.1.54) при наложении на него маски подсети (255.255.255.0) будет получаться один и тот же результат (192.168.1.0). Происходит это из-за поразрядного (побитного) сравнения записей (1х1 = 1, 1х0 = 0, 0х1 = 0). При этом IP-адрес компьютера берётся из последней группы цифр IP-адреса назначения. Также стоит учитывать, что из общего диапазона адресов, в рамках одной подсети, доступно будет на два адреса меньше, потому что 192.168.1.0 – является IP-адресом самой сети, а 192.168.1.255 – служебным широковещательным адресом для передачи общих пакетов запросов.
Что такое NAT?
В последнем пункте данной статьи, рассмотрим, что такое NAT. Как уже упоминалось ранее, маршрутизатор связывает между собой сети не только на локальном уровне, но и взаимодействует с сетью провайдера с целью получения доступа к сети интернет. Для пересылки пакетов во внешнюю сеть, роутер не может использовать IP-адреса компьютеров из локальной сети, так как данные IP-адреса являются «частными» и предназначены только для организации взаимодействия устройств внутри ЛВС. Маршрутизатор имеет два IP-адреса (внутренний и внешний), один в локальной сети (192.168.1.0), другой (к примеру 95.153.133.97) ему присваивает сеть провайдера при динамическом распределении IP-адресов. Именно второй IP-адрес роутер будет использовать для отправки и получения пакетов по сети интернет. Для реализации такой подмены и был разработан NAT.
NAT (Network Address Translation) — механизм преобразование сетевых адресов, является частью TCP/IP-протокола.
Принцип NAT заключается в следующем: при отправке пакета из ЛВС маршрутизатор подменяет IP-адрес локальной машины на свой собственный, а при получении производит обратную замену и отправляет данные на тот компьютер, которому они и предназначались.
Мини-тест: «Локальная сеть»
Лимит времени: 0
Информация
Онлайн тест на проверку знаний основ функционирования компьютерных сетей.
Вы уже проходили тест ранее. Вы не можете запустить его снова.
Тест загружается…
Вы должны войти или зарегистрироваться для того, чтобы начать тест.
Вы должны закончить следующие тесты, чтобы начать этот:
Правильных ответов: 0 из 5
Ваше время:
Время вышло
Вы набрали 0 из 0 баллов (0)
Средний результат |
|
Ваш результат |
|
- С ответом
- С отметкой о просмотре
Основы интернета
Базовые понятия интернета… не такие уж они и базовые. Вы можете уже давно пользоваться интернетом, а при этом не знать, что такое IP-адрес, порт, протокол и кучу подобных интернет терминов. Да и нужно ли все это знать? В принципе, можно забить на это дело и жить спокойно. Невозможно ведь знать все, правда?
А для тех, кто все-таки хочет знать, что стоит за веб-страницами и чатами и написан этот текст и создан раздел на сайте. Я надеюсь, что мне удалось ввести термины интернета так, чтобы это было понятно каждому желающему. Все не так уж и сложно. А, на самом деле, иногда может и пригодиться. Не всегда ведь есть системные администраторы под рукой. Или, допустим, хочется посетить запрещенный сайт с работы. Вы вроде бы находите инструкции, но не можете их понять, потому что не знаете несколько базовых понятий.
Детально базовые понятия будут разобраны в отдельных статьях, сейчас же я хочу дать небольшое вступление.
Что нам нужно знать в первую очередь, если мы изучаем подкючение к интернету? Наверное, мы должны понять, как взаимодействуют компьютеры. Вот что произошло, когда вы ввели адрес в своем браузере. Как получается, что у вас на экране отображается нужный сайт? (случай, когда сайт не открывается, мы рассмотрим позже, в разделе про настройки интернета). На самом деле, ответ не односложен, происходит целая цепочка событий.
- Происходит преобразование доменного имени (типа it.sander.su) в так называемый IP-адрес (типа 212.193.236.38). За это отвечает система доменных имен.
- Происходит обращение по полученному IP-адресу (подробнее читайте в статье про IP-адреса)
- При этом то, что в адресной строке стояло http:// (или дописалось автоматически), означает, что вы обратились на 80-ый порт сервера с нужным вам сайтом (а бывают и другие порты, про них также можно почитать)
- Ваш браузер стал обмениваться с сервером по протоколу http. На самом деле, это — протокол высокого уровня, за этим обменом данными скрывается и общение на более низких уровнях. Подробнее можно прочитать в статье про протоколы.
Вот такой процесс. Из базовых понятий стоит отметить еще то, как вы получили свой IP-адрес (статически или динамически), и то, какие сетевый устройства расположены на вашем пути в интернет.
Если вас заинтересовало это вступление или отдельные темы, то предлагаю продолжить чтение. Считайте этот раздел словарем терминов интернета:
- Что такое MTU
Maximal transmission unit или максимальный размер пакета — параметр тонкой настройки сетей - Таблицы маршрутизации
Таблицы маршрутизации — тонкий инструмент по внутренней настройке локальных сетей. Обычно они создаются и работают автоматически, но иногда нужно ручное вмешательство - Протокол ipv6
Практический подход к ipv6 — что мы можем сделать с этим протоколом. Прочитав статью, вы сможете пощупать ipv6 прямо сейчас - Соединение двух «серых» компьютеров
Теоретическое описание процесса, позволяющего установить соединение между двумя компьютерами с серыми IP. Методы есть разные, но эта статья позволяет понять сам принцип - Структура интернета
Статья, описывающая базовое устройство интернета и организации, ответственные за эту структуру. Как вообще работает интернет? И что сделать, чтобы он сломался? - Сетевые устройства
Описаны сетевые устройства и их отличия друг от друга. Упоминаются такие устройства как хаб (сетевой концентратор), свитч (сетевой коммутатор) и роутер (сетевой маршрутизатор) - Сетевые протоколы
Уровни подчинения сетевых протоколов в системе TCP/IP. Описаны физический уровень, канальный уровень и другие - Динамический IP адрес
Статья, детально разбирающая принципы назначения и получения динамических IP адресов, завязку на MAC адреса и способ смены MAC адреса - Система доменных имен
Описание устройства системы доменных имен (DNS) и способов решения проблем интернет-соединения, связанных с DNS - IP адреса
Вводная статья — определение IP адресов, серых и белых адресов, статических и динамических, объяснение потенциальных проблем в зависимости от типа IP-адреса - Порт — что это такое?
В статье расказывается, что такое порт у компьютера; что вообще это за порты, как они устроены, описываются причины, по которым они могут быть закрыты
Принципы организации учёта IP-трафика / Habr
Любой администратор рано или поздно получает инструкцию от руководства: «посчитать, кто ходит в сеть, и сколько качает». Для провайдеров она дополняется задачами «пустить кого надо, взять оплату, ограничить доступ». Что считать? Как? Где? Отрывочных сведений много, они не структурированы. Избавим начинающего админа от утомительных поисков, снабдив его общими знаниями, и полезными ссылками на матчасть.В данной статье я постараюсь описать принципы организации сбора, учёта и контроля трафика в сети. Мы рассмотрим проблематику вопроса, и перечислим возможные способы съема информации с сетевых устройств.
Это первая теоретическая статья из цикла статей, посвящённого сбору, учёту, управлению и биллингу трафика и IT-ресурсов.
Структура доступа в сеть Интернет
В общем случае, структура доступа в сеть выглядит следующим образом:
- Внешние ресурсы – сеть Интернет, со всеми сайтами, серверами, адресами и прочим, что не принадлежит сети, которую вы контролируете.
- Устройство доступа – маршрутизатор (аппаратный, или на базе PC), коммутатор, VPN-сервер или концентратор.
- Внутренние ресурсы – набор компьютеров, подсетей, абонентов, работу которых в сети необходимо учитывать или контролировать.
- Сервер управления или учёта – устройство, на котором работает специализированное программное обеспечение. Может быть функционально совмещён с программным маршрутизатором.
В данной структуре, сетевой трафик проходит от внешних ресурсов к внутренним, и обратно, через устройство доступа. Оно передает на сервер управления информацию о трафике. Сервер управления обрабатывает эту информацию, хранит в базе, отображает, выдает команды на блокировку. Однако, не все комбинации устройств (методов) доступа, и методов сбора и управления, совместимы. О различных вариантах и пойдет речь ниже.
Сетевой трафик
Для начала необходимо определить, а что же подразумевается под «сетевым трафиком», и какую полезную статистическую информацию можно извлечь из потока пользовательских данных.
Доминирующим протоколом межсетевого взаимодействия пока остается IP версии 4. Протокол IP соответствует 3му уровню модели OSI (L3). Информация (данные) между отправителем и получателем упаковывается в пакеты – имеющие заголовок, и «полезную нагрузку». Заголовок определяет, откуда и куда идет пакет (IP-адреса отправителя и получателя), размер пакета, тип полезной нагрузки. Основную часть сетевого трафика составляют пакеты с полезной нагрузкой UDP и TCP – это протоколы 4-го уровня (L4). Помимо адресов, заголовок этих двух протоколов содержит номера портов, которые определяют тип службы (приложения), передающего данные.
Для передачи IP-пакета по проводам (или радио) сетевые устройства вынуждены «оборачивать» (инкапсулировать) его в пакет протокола 2го уровня (L2). Самым распространенным протоколом такого типа является Ethernet. Фактическая передача «в провод» идет на 1м уровне. Обычно, устройство доступа (маршрутизатор) не занимается анализом заголовков пакетов на уровне, выше 4го (исключение – интеллектуальные межсетевые экраны).
Информация из полей адресов, портов, протоколов и счетчики длин из L3 и L4 заголовков пакетов данных и составляет тот «исходный материал», который используется при учёте и управлении трафиком. Собственно объем передаваемой информации находится в поле Length («Длина пакета») заголовка IP (включая длину самого заголовка). Кстати, из-за фрагментации пакетов вследствие механизма MTU общий объем передаваемых данных всегда больше размера полезной нагрузки.
Суммарная длина интересных нам в данном контексте IP- и TCP/UDP- полей пакета составляет 2…10% общей длины пакета. Если обрабатывать и хранить всю эту информацию попакетно, не хватит никаких ресурсов. К счастью, подавляющий объем трафика структурирован так, что состоит из набора «диалогов» между внешними и внутренними сетевыми устройствами, так называемых «потоков». Например, в рамках одной операции пересылки электронного письма (протокол SMTP) открывается TCP-сессия между клиентом и сервером. Она характеризуется постоянным набором параметров {IP-адрес источника, TCP-порт источника, IP-адрес получателя TCP-порт получателя}. Вместо того, чтобы обрабатывать и хранить информацию попакетно, гораздо удобнее хранить параметры потока (адреса и порты), а также дополнительную информацию – число и сумму длин переданных пакетов в каждую сторону, опционально длительность сессии, индексы интерфейсов маршрутизатора, значение поля ToS и прочее. Такой подход выгоден для ориентированных на соединение протоколов (TCP), где можно явно перехватить момент завершения сессии. Однако и для не ориентированных на сессии протоколов можно проводить агрегацию и логическое завершение записи о потоке по, например, таймауту. Ниже приведена выдержка из SQL-базы собственной системы биллинга, осуществляющей протоколирование информации о потоках трафика:
Необходимо отметить случай, когда устройство доступа осуществляет трансляцию адресов (NAT, маскарадинг) для организации доступа в Интернет компьютеров локальной сети, используя один, внешний, публичный IP-адрес. В этом случае специальный механизм осуществляет подмену IP-адресов и TCP/UDP портов пакетов трафика, заменяя внутренние (не маршрутизируемые в Интернете) адреса согласно своей динамической таблице трансляции. В такой конфигурации необходимо помнить, что для корректного учета данных по внутренним хостам сети съём статистики должен производиться способом и в том месте, где результат трансляции ещё не «обезличивает» внутренние адреса.
Методы сбора информации о трафике/статистике
Снимать и обрабатывать информацию о проходящем трафике можно непосредственно на самом устройстве доступа (ПК-маршрутизатор, VPN-сервер), с этого устройства передавая ее на отдельный сервер (NetFlow, SNMP), или «с провода» (tap, SPAN). Разберем все варианты по-порядку.
ПК-маршрутизатор
Рассмотрим простейший случай – устройство доступа (маршрутизатор) на базе ПК c ОС Linux.
О том, как настроить такой сервер, трансляцию адресов и маршрутизацию, написано много . Нас же интересует следующий логический шаг – сведения о том, как получить информацию о проходящем через такой сервер трафике. Существует три распространенных способа:
- перехват (копирование) пакетов, проходящих через сетевую карту сервера, при помощи библиотеки libpcap
- перехват пакетов, проходящих через встроенный межсетевой экран
- использование сторонних средств преобразования попакетной статистики (полученной одним из двух предыдущих методов) в поток агрегированной информации netflow
Libpcap
В первом случае копия пакета, проходящего через интерфейс, после прохождения фильтра (man pcap-filter) может быть запрошена клиентской программой на сервере, написанной с использованием данной библиотеки. Пакет поступает вместе с заголовком 2го уровня (Ethernet). Можно ограничить длину захватываемой информации (если нас интересует только информация из его заголовка). Примерами таких программ могут быть tcpdump и Wireshark. Существует реализация libpcap под Windows. В случае применения трансляции адресов на ПК-маршрутизаторе такой перехват можно осуществлять только на его внутреннем интерфейсе, подключенном к локальным пользователям. На внешнем интерфейсе, после трансляции, IP-пакеты не содержат информации о внутренних хостах сети. Однако при таком способе невозможно учесть трафик, создаваемый самим сервером в сети Интернет (что важно, если на нем работают веб– или почтовый сервис).
Работа libpcap требует поддержки со стороны операционной системы, что в настоящее время сводится к установке единственной бибилиотеки. При этом прикладная (пользовательская) программа, осуществляющая сбор пакетов, должна:
- открыть необходимый интерфейс
- указать фильтр, через который пропускать принятые пакеты, размер захватываемой части (snaplen), размер буфера,
- задать параметр promisc, который переводит сетевой интерфейс в режим захвата вообще всех проходящих мимо пакетов, а не только адресованных MAC-адресу этого интерфейса
- установить функцию (callback), вызываемую на каждый принятый пакет.
При передаче пакета через выбранный интерфейс, после прохождения фильтра эта функция получает буфер, содержащий Ethernet, (VLAN), IP и т.д. заголовки, общим размером до snaplen. Поскольку библиотека libcap копирует пакеты, заблокировать их прохождение при ее помощи невозможно. В таком случае программе сбора и обработки трафика придется использовать альтернативные методы, например вызов скрипта для помещения заданного IP-адреса в правило блокировки трафика.
Межсетевой экран
Захват данных, проходящих через межсетевой экран, позволяет учесть и трафик самого сервера, и трафик пользователей сети, даже при работе трансляции адресов. Главное в этом случае – правильно сформулировать правило захвата, и поставить его в нужное место. Данным правилом активируется передача пакета в сторону системной библиотеки, откуда приложение учета и управления трафиком может его получить. Для ОС Линукс в качестве межсетевого экрана применяют iptables, а средства перехвата – ipq, netfliter_queue или ulog. Для OC FreeBSD – ipfw с правилами типа tee или divert. В любом случае механизм межсетевого экрана дополняется возможностью работы с пользовательской программой следующим способом:
- Пользовательская программа — обработчик трафика регистрирует себя в системе, используя системный вызов, или библиотеку.
- Пользовательская программа или внешний скрипт устанавливает правило в межсетевой экран, “заворачивающее” выбранный трафик (согласно правилу) вовнутрь обработчика.
- На каждый проходящий пакет обработчик получает его содержимое в виде буфера памяти (с заголовками IP и т.д. После обработки (учёта) программе необходимо также сообщить ядру операционной системы, что делать далее с таким пакетом — отбросить или передать далее. Как вариант, возможно передать ядру видоизмененный пакет.
Поскольку IP-пакет не копируется, а пересылается в программное обеспечение для анализа, становится возможным его «выброс», а следовательно, полное или частичное ограничение трафика определенного типа (например, до выбранного абонента локальной сети). Однако в случае, если прикладная программа перестала отвечать ядру о своем решении (зависла, к примеру), трафик через сервер просто блокируется.
Необходимо отметить, что описанные механизмы при существенных объемах передаваемого трафика создают избыточную нагрузку на сервер, что связано с постоянным копированием данных из ядра в пользовательскую программу. Этого недостатка лишен метод сбора статистики на уровне ядра ОС, с выдачей в прикладную программу агрегированной статистики по протоколу NetFlow.
Netflow
Этот протокол был разработан фирмой Cisco Systems для экспорта информации о трафике с маршрутизаторов с целью учета и анализа трафика. Наиболее популярная сейчас версия 5 предоставляет получателю поток структурированных данных в виде UDP-пакетов, содержащих информацию о прошедшем трафике в виде так называемых flow records:
Объем информации о трафике меньше самого трафика на несколько порядков, что особенно актуально в больших и распределенных сетях. Конечно же, блокировать передачу информации при сборе статистики по netflow невозможно (если не использовать дополнительные механизмы).
В настоящее время становится популярным дальнейшее развитие этого протокола – версия 9, основанная на шаблонной структуре flow record, реализации для устройств других производителей (sFlow). Недавно был принят стандарт IPFIX, который позволяет передавать статистику и по протоколам более глубоких уровней (например, по типу приложения).
Реализация netflow-источников (агентов, probe) доступна для ПК-маршрутизаторов, как в виде работающих по описанных выше механизмам утилит (flowprobe, fprobe, softflowd), так и непосредственно встроенных в ядро ОС (FreeBSD: ng_netgraph, Linux: ipt_neflow). Для программных маршрутизаторов поток статистики netflow можно принимать и обрабатывать локально на самом маршрутизаторе, или отправлять по сети (протокол передачи – поверх UDP) на принимающее устройство (коллектор).
Программа — коллектор может собирать сведения от многих источников сразу, имея возможность различать их трафик даже при пересекающихся адресных пространствах. При помощи дополнительных средств, таких как nprobe возможно также проводить дополнительную агрегацию данных, раздвоение потоков или конвертацию протоколов, что актуально при управлении большой и распределенной сетью с десятками маршрутизаторов.
Функции экспорта netflow поддерживают маршрутизаторы Cisco Systems, Mikrotik, и некоторые другие. Аналогичный функционал (с другими протоколами экспорта) поддерживается всеми крупными производителями сетевого оборудования.
Libpcap “снаружи”
Немного усложним задачу. Что, если ваше устройство доступа – аппаратный маршрутизатор другого производителя? Например, D-Link, ASUS, Trendnet и т.д. На нем, скорее всего, невозможно поставить дополнительное программное средство съема данных. Как вариант – интеллектуальное устройство доступа у вас есть, но настроить его не представляется возможным (нет прав, или оно управляется вашим провайдером). В таком случае можно собирать информацию о трафике непосредственно в точке стыка устройства доступа с внутренней сетью, пользуясь «аппаратными» средствами копирования пакетов. В таком случае непременно потребуется отдельно стоящий сервер с выделенной сетевой картой для приема копий Ethernet-пакетов.
Сервер должен использовать механизм сбора пакетов по методу libpcap, описанному выше, и наша задача — на вход выделенной для этого сетевой карты подать поток данных, идентичный выходящему из сервера доступа. Для этого можно использовать:
- Ethernet – хаб (hub): устройство, просто пересылающее пакеты между всеми своими портами без разбора. В современных реалиях его можно найти где-нибудь на пыльном складе, и применять такой метод не рекомендуется: ненадежно, низкая скорость (хабов на скорости 1 Гбит/с не бывает)
- Ethernet – коммутатор с возможностью зеркалирования (мирроринга, SPAN портов. Современные интеллектуальные (и дорогие) коммутаторы позволяют копировать на указанный порт весь трафик (входящий, выходящий, оба) другого физического интерфейса, VLANа, в том числе удаленного (RSPAN)
- Аппаратный раздвоитель, который может потребовать установки для сбора двух сетевых карт вместо одной – и это помимо основной, системной.
Естественно, вы можете настроить SPAN-порт и на самом устройстве доступа (маршрутизаторе), если оно это позволяет – Cisco Catalyst 6500, Cisco ASA. Вот пример такой конфигурации для коммутатора Cisco:monitor session 1 source vlan 100 ! откуда берем пакеты
monitor session 1 destination interface Gi6/3! куда выдаем пакеты
SNMP
Что, если маршрутизатора под нашим контролем нет, с netflow связываться нет желания, нас не интересуют детали трафика наших пользователей. Они просто подключены в сеть через управляемый коммутатор, и нам надо просто грубо оценить объем трафика, приходящегося на каждый из его портов. Как вы знаете, сетевые устройства с возможностью удаленного управления поддерживают, и могут отобразить счетчики пакетов (байт), проходящих через сетевые интерфейсы. Для их опроса правильно будет использовать стандартизованный протокол удаленного управления SNMP. При помощи его можно достаточно просто получить не только значения указанных счетчиков, но также другие параметры, такие как имя и описание интерфейса, видимые через него MAC-адреса, и другую полезную информацию. Это делается как утилитами командной строки (snmpwalk), графическими SNMP-браузерами, так и более сложными программами мониторинга сети (rrdtools, cacti, zabbix, whats up gold и т.д.). Однако, данный метод имеет два существенных недостатка:
- блокировка трафика может производиться только путем полного отключения интерфейса, при помощи того же SNMP
- счетчики трафика, снимаемые по SNMP, относятся к сумме длин Ethernet-пакетов (причем unicast, broadcast и multicast по-отдельности), в то время как остальные описанные ранее средства дают величины относительно IP-пакетов. Это создает заметное расхождение (особенно на коротких пакетах) из-за оверхеда, вызванного длиной Ethernet-заголовка (впрочем, с этим можно приближенно бороться: L3_байт = L2_байт — L2_пакетов*38).
VPN
Отдельно стоит рассмотреть случай доступа пользователей к сети путем явного установления соединения к серверу доступа. Классическим примером может служить старый добрый dial-up, аналогом которого в современном мире являются VPN-службы удаленного доступа (PPTP, PPPoE, L2TP, OpenVPN, IPSEC)
Устройство доступа не только маршрутизирует IP-трафик пользователей, но также представляет из себя специализированный VPN-сервер, и терминирует логические туннели (часто зашифрованные), внутри которых передается пользовательский трафик.
Для учета такого трафика можно пользоваться как всеми средствами, описанными выше (и для глубокого анализа по портам/протоколам они хорошо подходят), так и дополнительными механизмами, которые предоставляют средства управления VPN-доступом. В первую очередь речь пойдет о протоколе RADIUS. Его работа – достаточно сложная тема. Мы же кратко упомянем, что контролем (авторизацией) доступа к VPN-серверу (RADIUS-клиенту) управляет специальное приложение (RADIUS-сервер), имеющее за собой базу (текстовый файл, SQL, Active Directory) допустимых пользователей с их атрибутами (ограничения по скорости подключения, назначенные IP-адреса). Помимо процесса авторизации, клиент периодически передает серверу сообщения аккаунтинга, информацию о состоянии каждой текущей работающей VPN-сессии, в том числе счетчики переданных байт и пакетов.
Заключение
Сведем все описанные выше методы сбора информации о трафике воедино:
Подведем небольшой итог. На практике существует большое количество методов присоединения управляемой вами сети (с клиентами или офисными абонентами) к внешней сетевой инфраструктуре, с использованием ряда средств доступа – программных и аппаратных маршрутизаторов, коммутаторов, VPN-серверов. Однако практически в любом случае можно придумать схему, когда информация о переданном по сети трафике может быть направлена на программное или аппаратное средство его анализа и управления. Возможно также, что это средство позволит осуществлять обратную связь с устройством доступа, применяя интеллектуальные алгоритмы ограничения доступа для отдельных клиентов, протоколов и прочего.
На этом закончу разбор матчасти. Из неразобранных тем остались:
- как и куда попадают собранные данные о трафике
- программное обеспечение для учета трафика
- чем отличается биллинг от простой “считалки”
- как можно накладывать ограничение на трафик
- учёт и ограничение посещенных веб-сайтов
Шаблоны взаимодействия для интернета вещей / Intel corporate blog / Habr
Прежде чем начать новый IoT-проект, стоит поразмыслить о том, какие шаблоны обмена информацией наилучшим образом для него подойдут. На самом деле, принять это решение следует как можно раньше, ещё до того, как выбраны протоколы, способы связи и вспомогательная инфраструктура разрабатываемой системы. В основе этой рекомендации лежит одна простая причина: не приняв подобное решение в самом начале, разработчик, по мере развития проекта, рискует сам себя загнать в угол, выбраться из которого можно будет лишь серьёзно переработав код, архитектуру, модель безопасности решения, и то, как оно взаимодействует с внешним миром.
Сегодня мы рассмотрим одиннадцать шаблонов взаимодействия в IoT-системах.
Шаблон «запрос – ответ»
Шаблон «запрос – ответ» (request – response), это, вероятно, самый широко известный шаблон обмена информацией. Его реализация предусматривает наличие клиента, или вызывающей стороны, который выполняет запросы к некоей службе, расположенной на сервере, предоставляющем услуги. Сервер ещё называют респондентом или ответчиком.
Шаблон «запрос – ответ»
Именно этот шаблон использует протокол HTTP. Он же является основой сервисно-ориентированных архитектур, веб-служб и REST-решений. Это практичный шаблон, в особенности, если архитектура проекта предусматривает наличие клиентских и серверных частей или ведущих и ведомых сущностей.
Помимо HTTP, шаблон «запрос – ответ» поддерживают такие протоколы, как Constrained Application Protocol (CoAP) и Extensible Messaging and Presence Protocol (XMPP).
Основной недостаток данного шаблона заключается в неравенстве участников обмена данными, что вполне очевидно проявляется в топологии интернета. Двунаправленный обмен данными, когда оба участника запрашивают данные друг у друга, может быть сложен в реализации, особенно если на пути данных имеются сетевые экраны.
Планируя использовать шаблон «запрос – ответ» в проекте, нужно решить, какие части системы будут клиентами, а какие – серверами. Если, например, некий датчик будет клиентом, а IoT-шлюз – сервером, датчик сам будет решать, когда ему передавать на сервер собственные показания. Сервер же, если ему понадобятся сведения с датчика, самостоятельно их запросить не сможет. Если же датчик сделать сервером, а шлюз – клиентом, датчик можно будет опрашивать когда угодно. Однако, тут есть одна проблема: если датчик недостаточно защищён, кто угодно сможет к нему подключиться. Если же в подобном решении задействована надёжная система безопасности, то, как следствие, усложнится способ взаимодействия клиента и сервера, да и сама система в целом. Возможно, в проект нужно будет добавить дополнительные службы, датчики придётся оснащать более мощным аппаратным обеспечением. Кроме того, всем этим будет сложнее управлять.
Шаблон «подписка на события»
Этот шаблон (event subscription) позволяет клиенту подписываться на события заданного типа на сервере. Сервер оповещает клиента всякий раз, когда происходит интересующее его событие. Как результат, отпадает необходимость в постоянном опросе сервера.
Шаблон «подписка на события»
Продвинутый механизм подписки на события может включать в себя требования, зависящие от клиента, касающиеся того, какие именно события и при каких условиях его интересуют. Преимущества использования подписки на события перед ранее рассмотренным шаблоном «запрос – ответ», заключаются в том, что для обмена данными между клиентом и сервером нужно примерно в два раза меньше сообщений. Кроме того, данные передаются клиенту при возникновении некоего события, а не по запросу, что снижает до минимума время между возникновением некоей ситуации, интересующей клиента, и моментом, когда он об этом узнает.
Протоколы, которые поддерживают этот шаблон, включают в себя CoAP, XMPP и General Event Notification Architecture, который является частью архитектуры Universal Plug and Play, базирующейся на HTTP.
Шаблон «асинхронный обмен сообщениями»
Асинхронный обмен сообщениями (asynchronous messaging) предусматривает возможность отправки сообщений между равноправными системами, находящимися на одной ступени иерархии. Этот шаблон подразумевает двунаправленный обмен сообщениями.
Шаблон «асинхронный обмен сообщениями»
Если используемый протокол поддерживает асинхронный обмен сообщениями, на его основе можно построить любые другие шаблоны передачи данных.
Среди протоколов, которые поддерживают данный шаблон, можно назвать XMPP, Advanced Message Queuing Protocol (AMQP), и, на уровне IP – User Datagram Protocol (UDP). Однако, в случае с применением UDP для реализации этого шаблона, возможны проблемы с сетевыми экранами.
Шаблон «надёжная доставка сообщений»
Приложениям, выполняющим критически важные функции, необходимо знать, что сообщение было доставлено получателю как минимум один раз. Собственно говоря, при использовании шаблона асинхронного обмена данными это требование выполняется. Сообщение может потеряться в пути, но использование шаблона «запрос – ответ» позволяет запросить отправку сообщения снова, до тех пор, пока не будет получено подтверждение (или ответ) от стороны, которая должна сообщение получить. Тут нужно учитывать, что потеряться может и сообщение, и ответ о его получении, поэтому данный шаблон гарантирует, что сообщение будет доставлено как минимум один раз. Однако, то, что сообщение будет доставлено получателю не более одного раза (или не менее одного раза), не очень подходит некоторым приложениям, например, таким, которые задействуют концепцию транзакций или выполняют подсчёт сообщений.
Применение шаблона надёжной доставки сообщений (reliable messaging) даёт гарантию того, что сообщение будет доставлено получателю в точности один раз. Среди протоколов, поддерживающих надёжную доставку сообщений, можно отметить Message Queuing Telemetry Transport (MQTT), AMQP. Кроме того, благодаря открытым расширениям, подобный функционал поддерживают HTTP и XMPP
Шаблон «многоадресная передача сообщений»
Предыдущий шаблон занят обменом сообщениями между двумя объектами. Иногда, однако, требуется более эффективный подход, если одну и ту же информацию нужно, в одно и то же время, отправить нескольким получателям. Самый простой из шаблонов, реализующих подобный функционал – это «многоадресная передача сообщений» (multicasting). В рамках этого шаблона отправитель отсылает одно сообщение через промежуточное звено системы (это может быть брокер или маршрутизатор), после чего сообщение пересылается нескольким получателям, каждый из которых зарегистрировался для получения подобных сообщений.
Шаблон «многоадресная передача сообщений»
Благодаря использованию данного шаблона можно снизить нагрузку на сеть, так как отправителю не нужно самостоятельно слать одно и то же сообщение каждому, кто его ожидает. На самом деле, отправителю даже не нужно знать, кто именно получит сообщение. Этот шаблон может быть весьма полезен во множестве ситуаций. Например, при синхронизации множества устройств или при распределении одних и тех же данных между несколькими получателями. Многоадресную передачу сообщений поддерживают протоколы XMPP, AMQP и UDP.
Здесь уместно высказать некоторые предостережения. Касаются они использования многоадресной передачи сообщений для реализации других схем связи.
Так, хотя этот шаблон и можно использовать для снижения нагрузки на сеть, часто к нему обращаются как к способу обхода ограничений в используемом протоколе, а также – для реализации на базе некоего протокола шаблона «подписка на события». Если, например, использовать многоадресную передачу сообщений для того, чтобы уменьшить задержки в сетях, где нужно, но невозможно, реализовать шаблон «подписка на события», данный шаблон приведёт не к снижению, а к повышению нагрузки на сеть. Кроме того, систему с многоадресной передачей данных сложнее защитить.
Что касается повышения эффективности использования пропускной способности сети при использовании многоадресной передачи данных, то ресурсы можно сэкономить лишь в том случае, если получатели потребляют большую часть полученных данных. Если же значительная доля передаваемых таким образом данных не используется получателями – это повод рассмотреть другие шаблоны взаимодействия.
Шаблон «издатель – подписчик»
Шаблон «издатель – подписчик» (publish – subscribe) является расширением шаблона многоадресной доставки сообщений. Принципиальная разница между ними заключается в том, что переданные сообщения сохраняются на промежуточном узле. Эти сообщения, или ссылки на них, затем распределяются по заинтересованным в них подписчикам.
Особенности реализации шаблона зависят от используемого протокола, зависит от него, а также от настроек промежуточного узла, и то, какие именно сообщения хранятся. Это может быть только самое свежее сообщение, или заданное количество сообщений, или все сообщения.
Здесь, кроме того, важна разница в передаче самого сообщения и ссылки на него, так как это влияет на требуемую полосу пропускания сети, и, как результат, на производительность решения.
Если подписчики используют большинство сообщений, то передача самих сообщений более эффективна, как и в случае с многоадресной передачей данных. Если же фактическое потребление данных получателями зависит от неких дополнительных факторов, то эффективнее передавать ссылки на сообщения. Они меньше, чем сами сообщения, а подписчики, вероятнее всего, используют лишь небольшое их число для того, чтобы получить те сообщения, на которые указывают ссылки. В подобном случае, для того, чтобы получить сообщение по ссылке, требуется выполнять дополнительные обращения к узлу хранения сообщений по модели «запрос – ответ».
Шаблон «издатель – подписчик» поддерживают такие протоколы, как MQTT, AMQP, XMPP.
Шаблон «очередь»
Очереди, а конкретно – очереди FIFO – это шаблон обмена данными, который позволяет одной или большему количеству сущностей отправлять некие сообщения или задания для обработки в очередь, после чего один или несколько получателей получают эти сообщения в том порядке, в котором они были поставлены в очередь.
Шаблон «очередь»
Очередь обычно находится на промежуточном узле, или в сети, к которой подключены все участники обмена данными. Очереди – это замечательное средство для балансировки нагрузки. В очередь собирают задания из различных источников и распределяют их среди существующих обработчиков, возможно, обладающих разной производительностью.
Используя очередь, можно избежать жёсткой связи между системами, передающими данные, и системами, эти данные получающими и обрабатывающими. В результате, в зависимости от реальной рабочей нагрузки на систему, можно увеличивать или уменьшать количество приёмников и передатчиков данных. Среди протоколов, о которых мы уже говорили, лишь AMQP обладает встроенной поддержкой очередей.
Шаблон «брокеры сообщений»
Брокеры сообщений (message brokers) обычно являются стандартизированными компонентами вспомогательной сетевой инфраструктуры IoT-проектов. Они красиво решают проблемы, вызываемые ограничениями, которые накладывают сетевые экраны на двунаправленный обмен данными между устройствами. Брокер позволяет сущностям подключаться к нему, занимаясь передачей сообщений между подключёнными к нему клиентами. Так как все подключения выполнены через брокера, только брокер должен быть доступен из интернета. Сетевому экрану не нужно принимать или перенаправлять входящие подключения к устройствам, как было бы нужно при использовании протокола, обеспечивающего связь равноправных систем, жёстко ограниченного подобной моделью обмена сообщениями.
Помимо управления сообщениями, брокеры могут предоставлять подключённым клиентам дополнительные службы. Например, брокер может выступать посредником при реализации шаблона многоадресного обмена сообщениями, шаблонов «издатель – подписчик» и «очередь».
Кроме того, брокеры сообщений обычно предоставляют службы аутентификации клиентов. Это облегчает работу в распределённых сетях, где проверка подлинности устройств может оказаться непростой задачей. Таким образом, если брокер может сообщать о статусе уже аутентифицированных участников системы, включённых в обмен данными, другие участники могут использовать эту информацию для принятия решений в сфере безопасности. Это, к тому же, избавляет от необходимости реализации собственной схемы аутентификации на каждом участнике обмена данными.
Хотя обмен сообщениями между равноправными системами – это лишь один из вариантов организации связи, подобные решения должны предусматривать аутентификацию клиентов. Иначе серьёзно пострадает безопасность системы. Если же используется протокол, который включает в себя брокеры сообщений, то, вероятнее всего, не понадобится разрабатывать собственные вспомогательные службы, которые позволят решению работать надёжно и безопасно.
Протоколы XMPP, AMQP и MQTT, в той или иной форме, задействуют этот шаблон.
Шаблон «федерация»
«Федерация» (federation) – это важный шаблон, в котором некая глобальная сеть разбивается на логические части. Это позволяет осуществлять глобальное масштабирование решения и обеспечивает всё необходимое для его естественного роста.
Шаблон «федерация»
Основная идея здесь – позволить увеличивать размеры решения, не ограничивая при этом производительность существующей сетевой инфраструктуры, используя подход «разделяй и властвуй».
При осуществлении связи без брокеров, например, как при использовании протоколов HTTP и CoAP, федеративная структура имеется на уровне домена. Каждый домен указывает на собственный набор IP-адресов, с ним связан собственный веб-сервер. В систему можно добавлять новые веб-сервера, в новых доменах, не ограничивая доступ к существующим системам. Такой подход – один из основных ключей к успеху Всемирной паутины.
При использовании протоколов, предусматривающих наличие брокеров и поддерживающих федерации, брокеры соединяются между собой для маршрутизации сообщений. Каждый брокер управляет аутентификацией в собственном домене и знает, как подключаться к другим доменам для перенаправления в них сообщений. Кроме того, федеративные сети с брокерами предоставляют удобное решение проблемы глобальной идентификации участников обмена данными.
Наиболее широко известный протокол, использующий брокеров и федерации – Simple Mail Transfer Protocol (SMTP). Среди протоколов, о которых мы говорим в этом материале, умеющих работать с брокерами, федерацию поддерживает лишь XMPP.
Шаблон «обнаружение»
Рассмотрим условный пример. Пусть, у нас имеется некое изготовленное на заводе устройство, которое планируется использовать в IoT-системе. Если его, например, планируется применять в системе с многоадресной передачей данных, мы сразу же столкнёмся с некоторыми сложностями, связанными с интеграцией устройств в систему.
Заключаются они в том, что «вещи» осведомлены только о собственной идентификационной информации (это может быть что-то вроде MAC-адреса), но ничего не знают ни о том, как они будет «видны» в сети, к которой их планируется подключить, ни о некоем главном сетевом устройстве, с которым им придётся взаимодействовать.
После установки и настройки (чем больше автоматизирована настройка – тем лучше), «вещи» узнают о своей сетевой идентификационной информации, но не о том, как подключиться к главному устройству. В свою очередь, главному устройству известен собственный сетевой адрес, а также – заводские данные «вещей» (которые, например, можно быстро ввести в систему, отсканировав наклейки на коробках), но не сетевые данные других устройств.
Шаблон обмена сообщениями «обнаружение» (discovery) позволяет создать механизм, с помощью которого производится сопоставление сетевых идентификационных данных подчинённых устройств с сетевыми данными главного узла. Делается это с использованием общих знаний об исходных идентификационных параметрах подчинённых устройств.
Шаблон «обнаружение»
Данный шаблон реализуется с использованием «реестра вещей» (Thing Registry), доступного по сети как самим «вещам», так и главному устройству. Клиенты регистрируются в реестре, а главное устройство обращается к ним через реестр, используя лишь их заводские идентификаторы. Если запрос успешен, то сетевые идентификационные данные каждого из участников обмена данными отправляются другому, и оба, таким образом, знают, как друг с другом взаимодействовать. Существует расширение XMPP, которое поддерживает этот шаблон.
Шаблон «делегирование доверия»
В интернете важна возможность принятия взвешенных решений в области безопасности. При использовании шаблона «делегирование доверия» (delegation of trust) конечные устройства перенаправляют запросы к более надёжно защищённой, доверенной системе в реальном времени, а после получения ответа выполняют некие действия.
Шаблон «делегирование доверия»
Действия доверенной сущности, при поступлении новых запросов от клиентских систем, могут быть основаны, например, на машинном обучении, либо на настройках, которые задаёт администратор, возможно, реагируя на запросы системы при поступлении ей новых запросов.
Для того, чтобы можно было реализовать этот шаблон, необходимо использовать асинхронный двунаправленный обмен сообщениями. Существует расширение XMPP, которое поддерживает делегирование доверия.
Итоги
В заключение хотелось бы отметить, что, придерживаясь стандартов и открытых спецификаций, можно улучшить совместимость разработки в сфере IoT с существующими системами. Аналогично, используя открытые, стандартизированные, взаимозаменяемые компоненты, можно избежать необходимости создания дорогой инфраструктуры. А правильный выбор шаблона обмена данными – это отличный способ обезопасить себя от серьёзной переработки проекта на поздних стадиях его развития.
Некоторые из шаблонов, о которых мы говорили, могут увеличить сложность проекта в самом начале работы над ним, но эти дополнительные издержки – ничто по сравнению со стоимостью возможных будущих неувязок. Например, сложностей, связанных с интеграцией в существующую среду. Сразу такое предусмотреть почти невозможно, однако, правильный выбор шаблона поможет избежать подобных проблем.