Что такое интерфейсы в компьютерных сетях
В этом разделе описываются общие понятия сетевого интерфейса в Windows, включая способы их идентификации в коде и их свойствах.
Этот раздел предназначен для аудитории разработчиков как для Windows классических приложений, так и для сетевых драйверов режима ядра. Тем не менее некоторые сведения, представленные здесь, также могут быть полезны для системных администраторов, управляющих сетевыми интерфейсами с помощью командлетов PowerShell.
Базовые понятия компьютерных сетей
В многоуровневой модели организации компьютерной сети используются некоторые понятия, которые необходимо обязательно усвоить. Это понятия сервис, интерфейс и протокол.
p, blockquote 14,0,0,0,0 -->
Сервис это те функции, которые реализует уровень. Например, уровень может обеспечивать гарантированную доставку данных, от одного приложения к другому или поиск маршрутов большой составной сети, некоторые узлы, которых могут выходить из строя, а также появляться новые.
p, blockquote 15,0,0,0,0 -->
Интерфейс это набор примитивных операций, которые нижний уровень предоставляет верхнему. На картинке интерфейс помечен красной стрелкой.
p, blockquote 16,0,0,0,0 -->
p, blockquote 17,0,0,0,0 -->
Уровень N предоставляет некоторые операции верхнему уровню и пользуется операциями, которые ему в свою очередь предоставляет нижний уровень через интерфейс уровня N-1.
p, blockquote 18,0,0,0,0 -->
Протокол это правила и соглашения, используемые для связи N одного компьютера с уровнем N другого компьютера.
p, blockquote 19,0,0,0,0 -->
Почему важно разделять эти понятия? Этот традиционный подход в проектировании связан с необходимостью разделения интерфейса и реализации. Пользователи или вышестоящие уровни взаимодействуют с интерфейсом уровня. Они понимают, что должен делать этот уровень в описании его сервиса и вызывают некоторые функции интерфейса. Протокол же является реализацией этого взаимодействия и он скрыт от вышестоящих уровней и от пользователей. Это означает, что можно заменить один протокол другим и в работе вышестоящих уровней ничего менять не придется. С другой стороны можно вносить некоторые изменения в интерфейсы внутри одного компьютера, но он все равно может взаимодействовать с другими компьютерами, если использует один и тот же протокол. Благодаря этому, по сети между собой, успешно взаимодействуют компьютеры работающие на разных платформах, например windows или linux, которые содержат внутри себя совершенно разные наборы интерфейсов.
p, blockquote 20,0,0,0,0 -->
Протокол SSH
SSH (secure shell) – это протокол шифрования, реализованный на прикладном уровне, который может использоваться для безопасного обмена данными с удаленным сервером. На этом протоколе основано много дополнительных технологий.
Существует много других важных протоколов, которые не охвачены в этой статье. Однако теперь вы знакомы с базовыми сетевыми протоколами и их применением.
Рассмотрим понятия протоколы, интерфейсы и сервисы на примере транспортного уровня, стека протоколов TCP/IP.
p, blockquote 1,0,0,0,0 -->
p, blockquote 2,0,0,0,0 -->
Заключение
Создание компьютерных сетей это тяжелая задача, целиком решить которую, практически невозможно. Поэтому выполняется декомпозиция сложной задачи на отдельные, более простые части с помощью шаблона “Уровень”.
Маршрутизация работает на сетевом уровне модель взаимодействия открытых систем OSI. Маршрутизация — это поиск маршрута доставки пакета в крупной составной сети через транзитные узлы, которые называются маршрутизаторы.
p, blockquote 1,0,0,0,0 -->
p, blockquote 2,0,0,0,0 -->
Маршрутизация состоит из двух этапов:
p, blockquote 4,0,0,0,0 -->
Протокол управления доступом к среде
Media access control, или протокол управления доступом к среде используется для различения устройств. Предполагается, что каждое устройство получает уникальный MAC-адрес, который отличает его от любого другого устройства в Интернете.
Присваивание оборудованию MAC-адресов позволяет ссылаться на устройство по уникальному значению, даже если программное обеспечение устройства изменило его имя.
Media access control является одним из базовых протоколов канального уровня.
Протокол TCP
Протокол TCP (transmission control protocol) – протокол управления передачей данных. Он реализован на транспортном уровне модели IP/TCP и используется для установления безопасных соединений.
TCP – один из протоколов, которые помещают данные в пакеты. Затем он передает пакеты удаленному концу соединения, используя методы нижних уровней. На другом конце соединения он может проверять ошибки, запрашивать определенные фрагменты и повторно собирать информацию в один логический элемент для отправки на прикладной уровень.
Протокол создает соединение до передачи данных при помощи трёхэтапного квитирования. Этот способ позволяет участникам соединения подтвердить запрос и согласовать способ обеспечения безопасности данных.
После отправки данных соединение сбрасывается с помощью механизма четырёхэтапного квитирования.
Протокол TCP используется в электронной почте, WWW, FTP, SSH. Можно с уверенностью сказать, что без TCP интернет не был бы таким, каким мы его знаем сегодня.
Только следующий шаг!
Часто возникает вопрос, что делать, если сеть для который пришел пакет находится не за одним маршрутизатором? Чтобы в неё попасть, нужно пройти не через один, а через несколько маршрутизаторов, что в этом случае нужно вносить в таблицу маршрутизации.
p, blockquote 26,0,0,0,0 -->
p, blockquote 27,0,0,0,0 -->
В таблицу маршрутизации записываем только первый шаг, адрес следующего маршрутизатора, все что находится дальше нас не интересует.
p, blockquote 28,0,0,0,0 -->
Считаем, что следующий маршрутизатор должен знать правильный маршрут до нужной нам сети, он знает лучше следующий маршрутизатор, тот знает следующий шаг и так далее, пока не доберемся до нужные нам сети.
p, blockquote 29,0,0,0,0 -->
p, blockquote 30,1,0,0,0 -->
Таблица маршрутизации Windows
Продолжим рассматривать маршрутизатор D, у него есть три интерфейса. Ниже на картинке представлен вид таблицы маршрутизации для windows, которые в качестве идентификатора интерфейса используют ip-адрес, который назначен этому интерфейсу. Таким образом в столбце интерфейс есть 3 ip-адреса, которые соответствуют трем интерфейсам маршрутизатора.
p, blockquote 17,0,0,0,0 -->
p, blockquote 18,0,0,0,0 -->
Столбец шлюз, говорит что делать с пакетом, который вышел через заданный интерфейс. Для сетей, которые подключены напрямую к маршрутизатору D, в столбце шлюз, указывается «подсоединен», которое говорит о том, что сеть подключена непосредственно к маршрутизатору и передавать пакет нужно напрямую в эту сеть.
p, blockquote 19,0,0,0,0 -->
p, blockquote 20,0,0,0,0 -->
Если же нам нужно передать пакет на следующий маршрутизатор то в поле шлюз указывается ip-адрес этого маршрутизатора.
p, blockquote 21,0,0,0,0 -->
p, blockquote 22,0,0,0,0 -->
Сетевые уровни
Сетевое взаимодействие часто представляют в виде горизонтальных соединений между хостами, однако реализация такого взаимодействия распределяется по вертикали по всему компьютеру или сети.
Существует множество встроенных друг в друга технологий и протоколов, которые упрощают сетевое взаимодействие. Каждый последующий, более высокий уровень упрощает использование необработанных данных приложениями и пользователями.
Это также позволяет использовать более низкие уровни для обработки трафика, не тратя время и силы на разработку новых протоколов и приложений.
Когда машина отправляет данные, они попадают на высший сетевой уровень и фильтруются каждым последующим уровнем. На самом низком уровне происходит фактическая передача на другую машину, после чего данные фильтруются уровнями в обратном порядке.
Каждый уровень может добавить оболочку вокруг полученных данных, что поможет следующим уровням понять, что делать с данными при их передаче.
Протокол ICMP
Обычно ICMP-пакеты передаются, когда пакет другого типа сталкивается с какой-либо проблемой. В основном, они используются как механизм обратной связи для сетевых коммуникаций.
Длина маски подсети
Рассмотрим пример. Маршрутизатор принял пакет на ip-адрес (192.168.100.23), в таблице маршрутизации есть 2 записи (192.168.100.0/24 и 192.168.0.0/16) под который подходит этот ip-адрес, но у них разная длина маски. Какую из этих записей выбрать? Выбирается та запись, где маска длиннее, предполагается, что запись с более длинной маской содержит лучший маршрут интересующей нас сети.
p, blockquote 50,0,0,0,0 -->
Чтобы понять почему так происходит, давайте рассмотрим составную сеть гипотетического университета. Университет получил блок ip-адресов, разделил этот блок ip-адресов на две части, и каждую часть выделил отдельному кампусу.
p, blockquote 51,0,0,0,0 -->
p, blockquote 52,0,0,0,0 -->
На кампусе находятся свои маршрутизаторы, на которых сеть была дальше разделена на части предназначенные для отдельных факультетов. Разделение сетей производится с помощью увеличения длины маски, весь блок адресов имеет маску / 16, блоки кампусов имеют маску / 17, а блоки факультетов / 18.
p, blockquote 53,0,0,0,0 -->
Ниже показан фрагмент таблицы маршрутизации на маршрутизаторе первого кампуса. Он содержит путь до сети первого факультета, 2 факультета, до обще университетской сети, который проходит через университетский маршрутизатор, а также маршрут по умолчанию в интернет, который тоже проходит через обще университетский маршрутизатор.
p, blockquote 54,0,0,0,0 -->
p, blockquote 55,0,0,0,0 -->
p, blockquote 56,0,0,0,0 -->
p, blockquote 57,0,0,0,0 -->
И так получается, что выбирается всегда маршрут с маской максимальной длины. Общие правила выбора маршрутов следующие.
- Самая длинная маска 32 — это маршрут конкретному хосту, если в таблице маршрутизации есть такой маршрут, то выбирается он.
- Затем выполняется поиск маршрута подсети с маской максимальной длины.
- И только после этого используется маршрут по умолчанию, где маска / 0 под которую подходят все ip-адреса.
Следует отметить, что таблица маршрутизации есть не только у сетевых устройств маршрутизаторов, но и у обычных компьютеров в сети. Хотя у них таблица маршрутизации гораздо меньше.
- Как правило такая таблица содержит описание присоединенной сети, который подключен данный компьютер.
- Адрес маршрутизатора по умолчанию (шлюз или gateway) через который, выполняется подключение к интернет, или к корпоративной сети предприятия.
- А также могут быть дополнительные маршруты к некоторым знакомым сетям, но это необязательно.
Для того чтобы просмотреть таблицу маршрутизации, можно использовать команды route или ip route (route print (Windows); route и ip route (Linux)).
p, blockquote 60,0,0,0,0 --> p, blockquote 61,0,0,0,1 -->
Маршрутизация — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы.
Декомпозиция: шаблон “Уровни”
Компьютерные сети строятся в виде набора уровней организованного один над другим. Каждый уровень решает одну или несколько тесно связанных между собой задач.
p, blockquote 9,0,0,0,0 -->
p, blockquote 10,0,0,0,0 -->
Например, уровень 1, который находится само близко к среде передачи данных, обеспечивает просто передачу данных по этой среде не вникая в их содержание.
p, blockquote 11,0,1,0,0 -->
Уровень предоставляет сервис вышестоящему уровню, вышестоящие уровни уже могут решать более сложные задачи. например, поиск маршрутов составной сети.
p, blockquote 12,0,0,0,0 -->
p, blockquote 13,0,0,0,0 -->
Протокол FTP
FTP (file transfer protocol) – это протокол передачи файлов. Он также находится на прикладном уровне и обеспечивает способ передачи полных файлов с одного хоста на другой.
Этот протокол по своей природе небезопасен, поэтому его не рекомендуется использовать в любой открытой сети (если только он не реализован как общедоступный ресурс, предназначенный только для загрузки файлов).
Сетевые интерфейсы
Интерфейсы являются сетевыми точками связи компьютера. Каждый интерфейс связан с физическим или виртуальным сетевым устройством.
Как правило, на вашем сервере будет один настраиваемый сетевой интерфейс для каждой имеющейся Ethernet-карты или беспроводной интернет-карты.
Кроме того, сервер определит виртуальный сетевой интерфейс (loopback, или localhost). Он используется как интерфейс для соединения приложений и процессов на одном компьютере с другими приложениями и процессами. Во многих инструментах он упоминается как интерфейс «lo».
Администраторы часто используют один интерфейс (обычно eth0) для обслуживания трафика в Интернете, а другой интерфейс (eth1) – для локальной или частной сети.
Протокол UDP
UDP (user datagram protocol) – это протокол пользовательских датаграмм, популярный сопутствующий протокол для TCP, который также реализуется на транспортном уровне.
Основное отличие между UDP и TCP состоит в том, что UDP предоставляет небезопасную передачу данных. Он не проверяет, были ли данные получены на другом конце соединения. Часто это считается серьёзным недостатком, однако некоторым функциям необходим именно такой механизм.
Поскольку UDP не проверяет получения данных, он намного быстрее, чем TCP. Он не устанавливает соединение с удаленными нодами, а просто передаёт данные на этот хост.
Такие простые транзакции используются в простых взаимодействиях (например, для запроса сетевых ресурсов). UDP также является отличным протоколом для передачи данных с одной машины на множество клиентов в режиме реального времени. Он идеально подходит для VOIP, игр и других приложений, которые должны работать без задержки.
Инкапсуляция
p, blockquote 31,0,0,0,0 -->
p, blockquote 32,0,0,0,0 -->
p, blockquote 33,0,0,1,0 -->
p, blockquote 34,0,0,0,0 -->
p, blockquote 35,0,0,0,0 -->
p, blockquote 36,0,0,0,0 -->
p, blockquote 37,0,0,0,0 -->
p, blockquote 38,0,0,0,0 -->
p, blockquote 39,0,0,0,0 -->
p, blockquote 40,0,0,0,0 -->
p, blockquote 41,0,0,0,0 -->
p, blockquote 42,0,0,0,0 -->
p, blockquote 43,0,0,0,0 -->
Зачем разделять понятия протокол и интерфейс
Это стандартная практика в информационных технологиях, описание и реализация должны быть отделены друг от друга. Так делается во многих языках программирования и других технологиях.
p, blockquote 10,0,0,0,0 -->
Модель OSI
OSI (Open Systems Interconnect) – это базовая модель взаимодействия открытых систем, которая состоит из 7 уровней:
- 7 – Прикладной: уровень, с которым чаще всего взаимодействуют пользователи и пользовательские приложения. Он отвечает за передачу служебных данных, предоставляет приложениям сведения об ошибках и формирует запросы к следующему уровню.
- 6 – Представительский уровень (или уровень представления) отвечает за организацию данных при пересылке и преобразование данных в формат приложений.
- 5 – Сеансовый уровень управляет соединением. Он создаёт, поддерживает и сбрасывает соединения между нодами.
- 4 – Транспортный уровень отвечает за обработку и соединение между другими уровнями модели, а также за передачу данных от отправителя к получателю.
- 3 – Сетевой уровень обеспечивает маршрутизацию данных между нодами сети, транслирует логические адреса и имена в физические. Также этот уровень определяет путь передачи данных
- 2 – Канальный уровень отвечает за установление и поддержку надёжных соединений между нодами или устройствами сети.
- 1 – Физический уровень – нижний уровень модели; отвечает за обработку физических устройств, которые используются для установления соединения. Этот уровень включает в себя простое программное обеспечение, которое управляет физическими соединениями, а также аппаратное обеспечение (например, Ethernet).
Записи в таблице маршрутизации
Откуда появляются записей в таблице маршрутизации? Есть два варианта статическая маршрутизация и динамическая маршрутизация.
p, blockquote 41,0,0,0,0 -->
При статической маршрутизации, записи в таблице маршрутизации настраиваются вручную, это удобно делать если у вас сеть небольшая и изменяется редко, но если сеть крупная, то выгоднее использовать динамическую маршрутизацию, в которой маршруты настраиваются автоматически. В этом случае маршрутизаторы сами изучают сеть с помощью протоколов маршрутизации RIP, OSPF, BGP и других.
p, blockquote 42,0,0,0,0 -->
Преимущество динамической маршрутизации в том, что изменение в сети могут автоматически отмечаться в таблице маршрутизации. Например, если вышел из строя один из маршрутизаторов, то маршрутизаторы по протоколам маршрутизации об этом узнают, и уберут маршрут, который проходит через этот маршрутизатор. С другой стороны, если появился новый маршрутизатор, то это также отразится в таблице маршрутизации автоматически.
p, blockquote 43,0,0,0,0 -->
Изоляция решений
Причем, в компьютерных сетях у нас есть два вида изоляций решений. Изоляция решений (ИР) внутри одного компьютера и ИР при взаимодействии между компьютерами по сети.
p, blockquote 11,0,0,0,0 -->
Метрика
Можно заметить, что в нашей схеме в одну и ту же сеть, например вот в эту (10.2.0.0/16) можно попасть двумя путями, первый путь проходят через один маршрутизатор F, а второй путь через два маршрутизатора B и E.
p, blockquote 31,0,0,0,0 -->
p, blockquote 32,0,0,0,0 -->
В этом отличие сетевого уровня от канального. На канальном уровне у нас всегда должно быть только одно соединение, а на сетевом уровне допускаются и даже поощряются для обеспечения надежности несколько путей к одной и той же сети.
p, blockquote 33,0,0,0,0 -->
Какой путь выбрать? Для этого используются поле метрика таблицы маршрутизации.
p, blockquote 34,0,0,0,0 -->
p, blockquote 35,0,0,0,0 -->
Метрика это некоторое число, которые характеризует расстояние от одной сети до другой. Если есть несколько маршрутов до одной и той же сети, то выбирается маршрут с меньшей метрикой.
p, blockquote 36,0,0,0,0 -->
p, blockquote 37,0,0,0,0 -->
Раньше, метрика измерялось в количестве маршрутизаторов, таким образом расстояние через маршрутизатор F было бы один, а через маршрутизаторы B и E два.
p, blockquote 38,0,0,0,0 -->
p, blockquote 39,0,0,0,0 -->
Однако сейчас метрика учитывает не только количество промежуточных маршрутизаторов, но и скорость каналов между сетями, потому что иногда бывает выгоднее пройти через два маршрутизатора, но по более скоростным каналам. Также может учитываться загрузка каналов, поэтому сейчас метрика — это число, которое учитывает все эти характеристики. Мы выбираем маршрут с минимальной метрикой в данном примере выше, будет выбран первый маршрут через маршрутизатор F.
p, blockquote 40,0,0,0,0 -->
Протокол IP
Протокол IP – один из основных протоколов сети Интернет. IP-адреса уникальны в каждой сети и позволяют машинам обращаться друг к другу через сеть. Протокол реализован на сетевом уровне модели IP/TCP.
Сети могут быть связаны между собой, но трафик должен быть маршрутизирован при пересечении границ сети. Этот протокол предусматривает небезопасную сеть и несколько путей к тому же адресату.
Существует несколько различных реализаций протокола IP. Наиболее распространенной реализацией является IPv4, хотя из-за нехватки доступных адресов IPv4 и улучшения возможностей протоколов все более популярным становится IPv6.
Протокол и интерфейс
Интерфейс предполагает реальное взаимодействие внутри одного компьютера, где уровень N вызывает функции нижележащего уровня. Например, программист может использовать интерфейс сокетов, создать сокет и записать в него данные.
p, blockquote 21,0,0,0,0 -->
В отличии от интерфейса, протокол использует виртуальное взаимодействие. Уровни на разных компьютерах не имеют возможности взаимодействовать друг с другом напрямую, кроме тех уровней, которые непосредственно взаимодействуют с физической средой. Единственный способ передать какую-то информацию, это использовать заголовок протокола соответствующего уровня.
p, blockquote 22,1,0,0,0 -->
Обзор
Сетевой интерфейс — это точка подключения двух частей сетевого оборудования или уровней протокола. Как правило, это представлено физической сетевой картой (NIC) для подключения между компьютером и частной или общедоступной сетью. Однако он также может принимать форму программного компонента, такого как интерфейс замыкания на себя ( 127.0.0.1 для IPv4 или ::1 IPv6).
Сетевые интерфейсы определяются целевой службой интернет-инженерии (IETF) в RFC 2863 и не должны определяться Windows. Подробные вопросы о значении идентификаторов сетевых интерфейсов, например ifIndex, см. в определениях IETF. В оставшейся части этого раздела рассматриваются Windows сведения о реализации.
Протоколы
Сетевые технологии подразумевают совмещение нескольких различных протоколов. Таким образом, одна часть данных может быть передана с помощью нескольких протоколов, встроенных друг в друга.
Рассмотрим самые популярные и распространённые протоколы, начиная с протоколов низкого уровня.
Между компьютерами
С другой стороны, при взаимодействии между компьютерами, постоянными сохраняются протоколы. А интерфейсы и программы, которые находятся внутри компьютера, скрыты от других компьютеров и устройств. За счет этого, обеспечивается возможность взаимодействия по сети устройств, использующих разные операционные системы. Несмотря на значительные внутренние различия, в составе программ и интерфейсов, отлично взаимодействуют между собой, так как они используют один и тот же набор протоколов tcp ip.
p, blockquote 13,0,0,0,0 -->
Разделение интерфейса и протокола необходимо, чтобы отделять описание от реализации .
Зачем разделять интерфейс и сервис
p, blockquote 15,0,0,0,0 -->
Эти понятия важно различать, чтобы правильно проектировать сети, протоколы и сетевые технологии.
p, blockquote 16,0,0,0,0 -->
Сервис этот абстрактное описание того, что делает уровень. Оно позволяет сформулировать, чтобы мы хотели, чтобы уровень делал, не привязываясь ни к каким конкретным деталям реализации. Например, стек протоколов tcp ip предоставляет на транспортном уровне, два типа сервисов:
Интерфейс ТУ в стеке протоколов TCP IP использует один сервис — сокеты. Через интерфейс мы можем получить доступ к сервисам двух уровней, для этого при создании сокетов нам нужно указать разные константы и вызывать некоторые разные операции. Например, при ненадежной доставки дейтаграмм ( блок информации ) нам не нужно устанавливать соединение.
p, blockquote 18,0,0,1,0 -->
Сервисы — абстрактное описание функций
p, blockquote 19,0,0,0,0 -->
Представим, что мы не ограничиваем себя текущей реализацией стека протоколов tcp ip, а подумаем, какие есть сервисы на транспортном уровне и чего бы нам еще хотелось.
p, blockquote 20,0,0,0,0 -->
p, blockquote 21,0,0,0,0 -->
p, blockquote 22,0,0,0,0 -->
Многие приложения, которые используют протокол udp, например служба имён DNS, отправляет короткий запрос, ждет в течении некоторого времени ответа и если ответ не пришел, запрос отправляется снова.
p, blockquote 23,0,0,0,0 --> p, blockquote 24,0,0,0,1 -->
На самом деле это типовая ситуация, которая используется часто и кажется нерациональным перекладывать эту работу на приложения, если есть возможность предоставить такой тип сервиса прямо в стеке протоколов tcp/ip. Было разработано несколько протоколов ТУ, которые реализуют такой сервис, но к сожалению они не пользуются большой популярностью.
Очень просто построить сеть, которая соединяет два персональных компьютера (ПК), расположенных на вашем столе. Но представьте, что ваша задача построить крупную сеть, которая объединяет все ПК в мире.
p, blockquote 1,0,0,0,0 -->
p, blockquote 2,0,0,0,0 -->
Идентификаторы и свойства сетевого интерфейса
В Windows сетевой интерфейс можно идентифицировать разными способами. Некоторые из этих идентификаторов используются для различения сетевых интерфейсов друг от друга, но не все идентификаторы одинаково подходят для этой задачи из-за их разных свойств. Как правило, сетевые интерфейсы определяются сетевым адресом внешних компонентов. Например, это может быть идентификатор узла и номер порта или просто уникальный идентификатор узла.
В коде сетевой интерфейс можно идентифицировать различными способами. В следующей таблице описаны способы идентификации сетевого интерфейса вместе со связанными свойствами. Мы рекомендуем использовать GUID интерфейса (ifGuid) для программирования, если для конкретного API не требуется другой идентификатор сетевого интерфейса.
В следующей таблице полужирные ячейки представляют свойство, желательное для сетевых программистов.
Идентификатор | Размер | Уникально в системе | Уникальна в мире | Прогнозируемо | Перезапускается, если сетевой адаптер удален | Сохраняется при перезагрузке | Конечные пользователи могут изменяться в любое время | Драйверы могут изменяться в любое время | Общее знакомство с конечными пользователями | Всегда присутствует |
---|---|---|---|---|---|---|---|---|---|---|
ifIndex | 4 байта | Да | Нет | Нет | Да | Нет 1 | Нет | Нет | Некоторые2 | Да |
NetLuid | 8 байт | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Да |
ifGuid | 16 байт | Да | Обычно 3 | Нет | Нет | Да | Нет | Нет | Нет | Да |
ifAlias | 514 байт | Да для сетевых карт4 | Нет | Иногда5 | Да | Да | Да | Нет | Да | Обычно4 |
ifDescr | 514 байт | Обычно 6 | Нет | Нет | Да | Да | Нет | Да | Да | Обычно |
ifPhysAddress (MAC ADDRESS) | От 0 до 32 байт | Как правило, для сетевых карт | Как правило, для сетевых карт | Да | Привязка к оборудованию | Да | Нет | Нет | Да | Обычно7 |
Идентификатор экземпляра PnP | До 400 байт | Да | Нет | Нет | Да | Да | Нет | Нет | Нет | Как правило, для сетевых карт8 |
Расположение PnP (номер слота PCI) | До 400 байт | Да | Нет | Да | Да | Да | Нет | Нет | Иногда. | Иногда8,9 |
Примечания к предыдущей таблице:
- Еслиindexes не гарантируется стабильным во время перезагрузки, даже если они часто получают то же значение, что и предыдущая загрузка. Поэтому не рекомендуется использовать драйверы , за исключением случаев, когда это требуется API.
- Некоторые netsh команды принимают ifIndex или index в качестве входных данных. Поэтому некоторые пользователи с правами администратора знакомы со свойством ifIndex , если они часто используют netsh команду.
- Если компьютер клонирован или изображен, некоторые идентификаторы GUID могут совпадать. Кроме того, некоторые специальные сетевые интерфейсы, такие как встроенный интерфейс Teredo, могут иметь одинаковый GUID на всех компьютерах.
- NetCfg принудительно применяет, что ifAlias является непустой строкой и является уникальным среди всех сетевых адаптеров. Однако поставщик интерфейса NDIS не делает. Thererfore, можно найти специальные сетевые интерфейсы с повторяющимися или пустыми именами. Чаще всего это видно с командами LBFO.
- Только если встроенное ПО поддерживает согласованное именование устройств. Напечатав, серверы имеют эту функцию.
- NetCfg назначает уникальный ifDescrs всем сетевым интерфейсам. Однако драйверы могут вызывать API, чтобы изменить ifDescr на что-либо, включая то, что не является уникальным. Некоторые сторонние пакеты программного обеспечения делают это.
- Не все типы мультимедиа имеют MAC-адрес. Например, некоторые туннели не имеют этой концепции и просто объявляют массив байтов нулевой длины в качестве сетевого адреса.
- Присутствует только в сетевых интерфейсах, поддерживаемых устройством PnP. Например, интерфейсы замыкания на себя, интерфейсы фильтра легких весов, интерфейсы, предоставляемые поставщиком интерфейсов NDIS, и некоторые специальные встроенные сетевые адаптеры не поддерживают их.
- Только некоторые автобусы PnP поддерживают идентификатор расположения PnP. Встроенные шины PCI и USB выполняются, а устройства с корневым перечислением не выполняются.
Связанные темы
Определения базы сведений об управлении (MIB) для сетевых интерфейсов см. в rfC 2863.
Сведения о сетевых интерфейсах NDIS в сетевых драйверах см. в разделе "Сетевые интерфейсы NDIS".
Базовое понимание сетевых технологий необходимо любому человеку, который имеет отношение к управлению сервером. Эти знания помогут вам запустить и отладить работу сетевых сервисов и своевременно обнаружить проблемы.
В данной статье представлен базовый обзор общих сетевых терминов и протоколов, а также характеристики различных уровней сетевого взаимодействия.
Транспортный уровень TCP/IP
Рассмотрим пример для транспортного уровня (ТУ) стека протоколов tcp ip. В стеке протоколов, есть два протокола транспортного уровня, tcp и udp. Они используются, чтобы транспортные уровни различных хостов взаимодействовали друг с другом.
p, blockquote 7,0,0,0,0 -->
В качестве интерфейса ТУ используется интерфейс сокетов. С использованием интерфейса сокетов пишут программы, которые взаимодействуют с сетью на ТУ.
p, blockquote 8,0,0,0,0 -->
p, blockquote 9,0,0,0,0 -->
Базовые понятия компьютерных сетей
Сети строятся в виде нескольких уровней организованными один над другим. И каждый уровень предоставляет сервис вышестоящему уровню. Сервис описывает, что полезного делает уровень.
p, blockquote 3,0,0,0,0 -->
p, blockquote 4,0,0,0,0 -->
Интерфейс, он находится внутри одного компьютера и задает набор примитивных операций, который верхний уровень должен вызвать для того, чтобы воспользоваться сервисом нижестоящего уровня.
p, blockquote 5,0,0,0,0 -->
Протокол это набор правил и соглашений, которыми пользуются уровни разных хостов, для взаимодействия друг с другом по сети.
p, blockquote 6,0,1,0,0 -->
Сложность создания сетей
Эта задача намного сложнее, нужно подумать, как работать с большим количеством разной аппаратуры, которая будет подключаться к этой сети. О программном обеспечении, которое будет использоваться. Такая сеть должна быть надёжной и работать, даже если сломаются некоторые из её устройств.
p, blockquote 3,0,0,0,0 -->
Сеть должна иметь возможность развиваться, вы можете добавлять в сеть новые компьютеры или подключать к вашей сети, существующие большие сети целых стран или континентов.
p, blockquote 4,0,0,0,0 -->
Как правило, невозможно построить такую компьютерную сеть, в которой хватает ресурсов для объединения всех пользователей и со всеми одновременно. В результате вам нужно будет решать, как распределять между пользователями ограниченные, имеющиеся ресурсы и что делать, если в сети происходит перегрузка. Например, сотовая сеть работает стабильно почти всегда, но бывает время, например новый год, когда много людей начинают звонить друг другу и поздравлять с праздником. В это время сеть практически не работает.
p, blockquote 5,0,0,0,0 -->
В такой большой сети нужно обеспечить качество обслуживания, некоторые данные требуется передавать без искажения. Например, вы закачиваете большой файл, но для таких данных возможна задержка. Для других типов данных, для голосовой связи, для видеоконференций необходимо передавать данные, как можно быстрее, пусть даже часть из них потеряется. Если пропадет один из кадров видеоконференции, то человек скорей всего этого не заметит.
p, blockquote 6,0,0,0,0 -->
Также важно обеспечивать безопасность, чтобы злоумышленники не украли через сеть деньги у пользователей или персональные данные и многое другое.
p, blockquote 7,0,0,0,0 -->
p, blockquote 8,0,0,0,0 -->
Модель TCP/IP
Модель TCP/IP (набор протоколов Internet) – ещё одна популярная модель, которая состоит из 4 уровней (они совпадают с некоторыми уровнями OSI):
- Прикладной уровень отвечает за обмен данными между приложениями. Здесь работает большинство сетевых приложений. Конечный пользователь будет видеть удалённое приложение как локальное.
- Транспортный уровень поддерживает взаимодействие между процессами. Этот уровень использует порты для обращения к различным сервисам. Он может создавать небезопасные и безопасные соединения в зависимости от типа используемого протокола.
- Сетевой уровень обеспечивает передачу данных между нодами сети. IP-адреса используются как способ удаленного доступа к системам.
- Канальный уровень описывает среду, принципы и характеристики передачи данных. Он устанавливает соединения между соседними нодами для отправки данных.
Архитектура сети
Для решения сложной задачи, построения большой, крупной составной сети используется декомпозиция. Но здесь есть ряд вопросов, а именно, сколько уровней должно быть в сети?
p, blockquote 23,0,0,0,0 -->
Какие уровни должны быть?
p, blockquote 24,0,0,0,0 -->
Какие функции должны выполняться и на какому ровне?
p, blockquote 25,0,0,0,0 -->
Это всё задаётся архитектурой сети, которая задает набор уровней и протоколы, которые на них используются. Интерфейсы не входят в архитектуру, так как они могут быть разные на разных программно аппаратных платформах.
p, blockquote 26,0,0,0,0 -->
Другое полезное понятие это стек протоколов, иерархически организованный набор протоколов, достаточный для организации взаимодействия по сети.
p, blockquote 27,0,0,0,0 -->
Эталонные модели организации сетей
Можно придумать большое количество архитектур сети, которые будут хороши для той или иной ситуации. Но если мы хотим строить крупные сети, которые могут соединяться друг с другом, нам необходимо соблюдать стандарты на организации сетей. Такие стандарты называются эталонными моделями.
p, blockquote 28,0,0,0,0 -->
Сейчас популярны две эталонные модели это модель взаимодействия открытых систем (ISO OSI). Это юридический стандарт международной организации стандартизации. Она включает 7 уровней, но не включает протоколы. Модель отличается хорошей теоретической проработкой. Именно в этой модели впервые были разделены понятия сервиса, интерфейса и протокола. На практике эта модель не используется.
p, blockquote 29,0,0,0,0 -->
Другая эталонная модель TCP/IP это De facto стандарт на основе одноименного, популярного стека протоколов. В этой модели всего 4 уровня. Основную ценность модели tcp ip составляют протоколы. Так как они широко используются на практике и составляют основу интернет.
p, blockquote 30,0,0,0,0 -->
Внутри компьютера
Когда мы работаем внутри одного компьютера, то есть пишем программы, которые будут работать с сетью, мы используем интерфейсы. На транспортном уровне это интерфейс сокетов. Реализация сетевого взаимодействия, которая выполнена в протоколах, скрыта от нас. Таким образом, если протоколы изменятся, то нам не придётся менять нашу программу.
p, blockquote 12,1,0,0,0 -->
Варианты действий маршрутизатора
В качестве примера, рассмотрим схему составной сети, здесь показаны отдельные подсети, для каждой подсети есть ее адрес и маска, а также маршрутизаторы, которые объединяют эти сети.
p, blockquote 5,0,0,0,0 -->
p, blockquote 6,0,0,0,0 -->
Рассмотрим маршрутизатор D, на него пришел пакет, и маршрутизатор должен решить, что ему делать с этим пакетом. Начнем с того, какие вообще возможны варианты действий у маршрутизатора. Первый вариант, сеть которой предназначен пакет подключена непосредственно к маршрутизатору. У маршрутизатора D таких сетей 3, в этом случае маршрутизатор передает пакет непосредственно в эту сеть.
p, blockquote 7,0,0,0,0 -->
p, blockquote 8,0,0,0,0 -->
Второй вариант, нужная сеть подключена к другому маршрутизатору (А), и известно, какой маршрутизатор нужен. В этом случае, маршрутизатор D передает пакет на следующий маршрутизатор, который может передать пакет в нужную сеть, такой маршрутизатор называется шлюзом.
p, blockquote 9,0,0,0,0 -->
p, blockquote 10,0,0,0,0 -->
Третий вариант, пришел пакет для сети, маршрут которой не известен, в этом случае маршрутизатор отбрасывает пакет. В этом отличие работы маршрутизатора от коммутатора, коммутатор отправляет кадр который он не знает куда доставить на все порты, маршрутизатор так не делает. В противном случае составная сеть очень быстро может переполнится мусорными пакетами для которых не известен маршрут доставки.
p, blockquote 11,0,0,0,0 -->
- Во-первых у маршрутизатора есть несколько интерфейсов, к которым подключены сети. Нужно определить в какой из этих интерфейсов отправлять пакет.
- Затем нужно определить, что именно делать с этим пакетом. Есть 2 варианта, можно передать пакет в сеть (192.168.1.0/24), либо можно передать его на один из маршрутизаторов подключенные к этой сети. Если передавать пакет на маршрутизатор, то нужно знать, какой именно из маршрутизаторов подключенных к этой сети, выбрать для передачи пакета.
p, blockquote 13,0,0,0,0 -->
Протокол DNS
DNS (domain name system) – это система доменных имен. Этот протокол прикладного уровня предоставляет удобный механизма именования интернет-ресурсов. Он связывает доменное имя с IP-адресом и позволяет вам обращаться к сайтам по имени в вашем браузере.
Таблица маршрутизации Linux
В операционной системе linux таблица маршрутизации выглядит немного по-другому, основное отличие это идентификатор интерфейсов. В linux вместо ip-адресов используется название интерфейсов. Например, wlan название для беспроводного сетевого интерфейса, а eth0 название для проводного интерфейса по сети ethernet.
p, blockquote 23,0,0,0,0 -->
p, blockquote 24,0,0,0,0 -->
Также здесь некоторые столбцы удалены для сокращения (Flags, Ref и Use). В других операционных системах и в сетевом оборудовании вид таблицы маршрутизации может быть несколько другой, но всегда будут обязательны столбцы ip-адрес, маска подсети, шлюз, интерфейс и метрика.
p, blockquote 25,0,0,0,0 -->
Таблица маршрутизации
Эту информацию маршрутизатор хранит в таблице маршрутизации. На картинке ниже показан ее упрощенный вид, в которой некоторые служебные столбцы удалены для простоты понимания.
p, blockquote 14,0,0,0,0 -->
p, blockquote 15,0,1,0,0 -->
p, blockquote 16,0,0,0,0 -->
Основные сетевые термины
В данном разделе вы найдёте определения основных терминов и понятий, имеющих отношение к созданию и управлению сетями.
Конечно, этот список нельзя назвать исчерпывающим – он содержит только основные понятия, которые используются в сетевых технологиях.
Видимость для разработчиков
В предыдущей таблице все свойства, кроме свойств Plug and Play (PnP), видны классическим приложениям пользовательского режима и драйверам режима ядра через общий заголовок (Netioapi.h). Свойства PnP видны через заголовок Devpkey.h и используются как классическими приложениями пользовательского режима, так и драйверами режима ядра. Например, см. документацию ПО DEVPKEY .
API вспомогательного IP-адреса также доступен для классических приложений пользовательского режима и драйверов режима ядра.
Поверхность API UWP предоставляет только свойство ifGuid напрямую. Однако разработчикам приложений UWP можно импортировать функцию GetIfTable2 с помощью P/Invoke, если они необходимы для доступа к другим свойствам сетевого интерфейса.
Маршрут по умолчанию
p, blockquote 44,0,0,0,0 -->
В таблице маршрутизации назначается специальный маршрутизатор по умолчанию, на которой отправляются все пакеты для неизвестных сетей, как правило это маршрутизатор, который подключен к интернет.
p, blockquote 45,0,0,1,0 -->
Предполагается что этот маршрутизатор лучше знает структуру сети, и способен найти маршрут в составной сети. Для обозначения маршрута по умолчанию, в таблице маршрутизации используются четыре нуля в адресе подсети и четыре нуля в маске (0.0.0.0, маска 0.0.0.0), а иногда также пишут default.
p, blockquote 46,0,0,0,0 -->
Ниже пример маршрута по умолчанию в таблице маршрутизации в операционной системе linux.
p, blockquote 47,0,0,0,0 -->
p, blockquote 48,0,0,0,0 -->
Ip-адрес и маска равны нулю, в адрес и шлюз указываются ip-адрес маршрутизатора по умолчанию.
p, blockquote 49,0,0,0,0 -->
Читайте также: