Практическое внедрение слоев OSI в код

Знание теории о том, как эти семь уровней взаимодействуют и манипулируют данными в теории, — это одно, а то, как реализовать это в реальном мире с помощью реального кода, — другое.

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

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

-2

Решение

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

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

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

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

Хороший ресурс, на который можно посмотреть Исходный код ядра Linux.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]