Введение

Открытый стек TCP/IP lwIP (lightweight IP) — широко используемый стек TCP/IP с открытым исходным кодом, разработанный для встраиваемых систем. Изначально lwIP был разработан Адамом Дункельсом в Шведском институте компьютерных наук, а в настоящее время разрабатывается и поддерживается глобальным сообществом разработчиков. lwIP используется многими производителями встраиваемых систем, включая Intel/Altera, Analog Devices, Xilinx, TI, ST и Freescale.

Стек сети lwIP

Основная цель реализации сетевого стека lwIP — минимизировать потребление ресурсов при сохранении полнофункционального стека TCP. Это делает lwIP подходящим для использования во встраиваемых системах, располагающих десятками килобайт свободной оперативной памяти и примерно 40 килобайтами памяти для кода ROM.

Реализации протокола lwIP

Помимо стека TCP/IP, lwIP включает в себя несколько других важных компонентов, таких как сетевой интерфейс, слой эмуляции операционной системы, буферы и модуль управления памятью. Слой эмуляции операционной системы и сетевой интерфейс обеспечивают возможность портирования сетевого стека на различные операционные системы, предоставляя единый интерфейс между кодом lwIP и ядром операционной системы. Для обслуживания сети и отладки lwIP поддерживает протокол ICMP (Internet Control Message Protocol).

Поддержка уровня приложений

На уровне приложений сетевой стек lwIP может поддерживаться посредством реализации следующих протоколов: DNS (система доменных имен), агент SNMP (простой протокол управления сетью) версий v1, v2 или v3, с поддержкой частных MIB (баз информации управления) и компилятором MIB. Операционные системы, реализующие стек TCP/IP lwIP, могут предоставлять различные клиенты и серверы на уровне приложений, такие как клиент IPv4 DHCP (протокол динамической конфигурации хоста) или IPv4-адреса локальной ссылки (AutoIP). К специализированным приложениям, использующим прямой API, относятся: HTTP-сервер, клиент SNTP, клиент SMTP, сервер имен NetBIOS, ответчик mDNS, клиент MQTT и TFTP-сервер.

Реализация ОС

lwIP используется в качестве сетевого стека в ReactOS и Genode и может быть использован в Minix и GNU Hurd для реализации сетевых серверов.