2016-11-26 2 views
-3

Знание теории взаимодействия семи слоев и управления данными в теории - это одно, а то, как один реализует это в реальном мире с реальным кодом, является другим.Практическая реализация слоев OSI в код

Я хочу знать, как эти слои реализованы на практике (например, ПК, поскольку он использует все слои в отличие от маршрутизатора и т. Д.) - каждый слой представляет собой отдельный процесс, который имеет стандартизованный API (так что есть много пакетов программного обеспечения, которые работают вместе) или что-то вроде сетевого драйвера для конкретной установки HW/SW, отвечающей за все это, используя общие библиотеки и т. д.? Или это какой-то другой совершенно другой подход?

Причина, по которой я прошу об этом, заключается в том, что я хочу создать свою собственную сеть на частоте 868 МГц, и я хочу использовать какой-то существующий код (например, исправление ошибок DataLink и такой код), потому что это просто путь за пределами моего мастерства), но и написать собственный код сетевого уровня, чтобы настроить способ взаимодействия устройств.

+0

Я знаю, что я ссылаюсь на ПК, и это подразумевает, что я говорю о TCP/IP, и что он не работает точно так же, как и спецификация OSI REFERENCE Model, но тот факт, что TCP/IP был сделан на основе стандарта OSI. – areuz

+1

Фактически, TCP/IP приходился на модель OSI, а модель OSI по-прежнему остается моделью, а не стандартом. Модель OSI была создана, чтобы попытаться объяснить, как будет работать что-то в идеальном мире. Единственное, что я знаю, что на самом деле пытались реализовать OSI, было IS-IS. –

+0

IS-IS: https://en.m.wikipedia.org/wiki/IS-IS –

ответ

2

что-то вроде сетевого драйвера для конкретного HW/SW установки отвечает за все это

Да. В большинстве современных операционных систем сетевой стек реализован в ядре по соображениям производительности и безопасности.

Производительность: Большая часть работы идет на обработку пакета, поэтому более эффективно выполнять эту работу в ядре перед отправкой данных прикладного уровня в приложение, связанное с данным сокетом.

Охрана: Ядро предотвращает выполнение пользователями проблемных вещей, таких как подделка их IP-адреса или наводнение другого хоста сообщениями ICMP.

Хорошим ресурсом для просмотра будет Linux kernel source code.

  • net - Здесь вы найдете все основные устройства и протокольных реализаций (IP, TCP, UDP и т.д.)
    • dev.c - Устройство управления
    • ipv4 - IPv4 и UDP, TCP v4
    • ipv6 - IPv6 и UDP, TCP v6
  • drivers/net - драйвер сетевого устройства s
+1

Да, я хотел найти исходный код LoraWAN, и вы указали мне прямо на него, фактически на версию IPv6, так что даже лучше. – areuz