Где работают слои модели OSI в операционной системе?

Модель OSI описывает их как слои. Но где эти уровни фактически работают в операционной системе? Например, где и что на самом деле делает TCP? Все эти уровни описываются как использование протоколов или «правил», но как это правило реализуется? Все ли это происходит в сетевом адаптере? Существует ли конкретная служба, работающая в фоновом режиме, которая обрабатывает каждый протокол?

Я вижу, что DHCP и DNS выполняются службами на фоне операционной системы Windows, когда я открываю диспетчер задач. Это приятно и легко понять. Имеется ли у TCP собственный фоновый сервис или он действительно реализован в коде приложения с использованием сетевой библиотеки? То же самое происходит с ARP, IP и Ethernet. У NIC есть программа, работающая с ARP, IP и Ethernet и где именно?

3 голоса | спросил Artur 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 19 Sep 2015 14:18:14 +0300 2015, 14:18:14

3 ответа


1

Во-первых, модель OSI - это теоретическая модель, она не соответствует действительности точно. Также, как правило, модели слоя отображают только слои, которые фактически добавляют или удаляют что-то из пакета.

Следующий ответ опускает некоторые мелкие детали. Кроме того, некоторые детали могут различаться между операционными системами, я больше всего разбираюсь в Linux, некоторые вещи могут быть разными в других операционных системах.

Сетевой контроллер логически разделен на две части: «MAC» и «PHY». В некоторых случаях MAC и PHY могут быть интегрированы в один и тот же чип.

PHY делает следующее.

  • Преобразование между кодированием на уровне провода и потоком двоичных блоков данных.
  • Обнаружение, когда линия занята (для полудуплексных физических слоев).
  • Обнаружение начала и входящих кадров.
  • Создание специальных кодировок на уровне провода для начала и конца кадров.

MAC делает следующее.

  • Перевод между потоками данных со скоростью передачи и кадрами в буфере, который ОС может читать /записывать.
  • Генерация /проверка /удаление преамбулы и FCS.
  • Уведомление ОС через прерывания, когда входящие кадры были доставлены в буфер.
  • Внедрение контроля доступа к среде при необходимости.
  • Установка входящих кадров по MAC-адресу назначения.

Ядро реализует следующее.

  • Говоря с MAC (используя модуль драйвера).
  • Построение и интерпретация кадров Ethernet (минус преамбула и FCS).
  • Реализация ARP (или ND для IPv6) для перевода между IP и MAC-адресами.
  • Реализация построения и интерпретации IP-пакетов.
  • Перенаправление пакетов в правильный интерфейс на основе таблицы маршрутизации.
  • Фильтрация пакетов, NAT и т. д.
  • Основные транспортные протоколы, такие как TCP и UDP.
  • Некоторые части ICMP.

Демоны и инструменты, запущенные за пределами ядра, но считающиеся частью реализации ОС.

  • DHCP
  • DNS-кеш (если используется).
  • Диагностика, такая как ping и traceroute.
  • Конфигурация функций ядра.

Библиотеки, загруженные приложением, обычно используются для реализации файлов, которые работают поверх TCP /UDP, включая:

  • соединение SSL /TLS
  • DNS
  • HTTP
ответил Peter Green 24 AM00000040000005031 2016, 04:03:50
2

Модель OSI представляет собой теоретическое представление или руководство. Реальный мир часто очень отличается.

Вы не получите ответ, который не изменится в зависимости от обстоятельств. Многое зависит от самой ОС, поскольку разные ОС делают что-то по-другому.

Легко связать некоторые слои с различными частями компьютера (например, физическим уровнем как NIC, но даже это не охватывает весь слой-1). Слой-7 выглядит просто как прикладное приложение, но часто это сложнее; иногда сама ОС или некоторое дополнение - это конечный источник /пункт источника 7.

Много раз линии между слоями OSI размыты, или несколько слоев включены в один. Иногда вещи имеют ногу в одном слое, работая в другом слое.

ответил Ron Maupin 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 19 Sep 2015 20:26:09 +0300 2015, 20:26:09
2

Аппарат «NIC» просто отправляет Ethernet-кадры на провод и получает их. Операционная система имеет «драйвер» для программирования сетевого адаптера, поскольку это аппаратная задача.

Тогда в Операционной системе (модули в ядре) есть программное обеспечение, которое обрабатывает общие задачи «ethernet». Он отправляет сетевые кадры типа «тип» на «клиентов», у которых есть абонемент для него. Протокол ARP-помощника является одним из них, IP является популярным.

Модули TCP и UDP являются клиентами IP. ICMP также является клиентом IP (но IP также использует его как «клиент» icmp, это немного запутывает).

Все они имеют программные интерфейсы от ядра к пользовательскому уровню (часто это «сокет-библиотека»).

A Программы, такие как «веб-сервер», выполняются как фоновое приложение и подключается к tcp-модулю, запрашивая каждый ip-пакет с Destination TCP-Port 80.

Программа, подобная интернет-браузеру, использует tcp-модуль для подключения к удаленным серверам с TCP-портом 80, локальный порт здесь не имеет значения.

Когда был создан TCP /IP, модель OSI была несуществующей, поэтому отношения между слоями OSI не так понятны как в новых Networkprotocols (appletalk, например: -)

ответил BitEaster 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 20 Sep 2015 19:57:41 +0300 2015, 19:57:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132