Оригинальный автор(ы) | Адам Данкельс |
---|---|
Разработчик(и) | группа разработчиков lwIP |
Стабильный релиз | 2.2.0 [1] / 25 сентября 2023 г. ( 2023-09-25 ) |
Репозиторий |
|
Написано в | С |
Операционная система | несколько |
Платформа | встроенные системы |
Тип | IP-стек |
Лицензия | Измененная лицензия BSD |
Веб-сайт | www.nongnu.org/lwip/ |
lwIP ( легкий IP ) — это широко используемый стек TCP/IP с открытым исходным кодом , предназначенный для встраиваемых систем . Первоначально lwIP был разработан Адамом Данкельсом в Шведском институте компьютерных наук , а в настоящее время разрабатывается и поддерживается всемирной сетью разработчиков.
lwIP используется многими производителями встраиваемых систем, включая Intel/Altera , Analog Devices , [2] Xilinx , [3] TI , ST и Freescale .
Целью реализации сетевого стека lwIP является сокращение использования ресурсов при сохранении полномасштабного стека TCP. [4] Это делает lwIP пригодным для использования во встраиваемых системах с десятками килобайт свободной оперативной памяти и местом для примерно 40 килобайт кода ROM.
Помимо стека TCP/IP , lwIP имеет несколько других важных частей, таких как сетевой интерфейс , уровень эмуляции операционной системы, буферы и раздел управления памятью. Уровень эмуляции операционной системы и сетевой интерфейс позволяют перенести сетевой стек в операционную систему, поскольку он обеспечивает общий интерфейс между кодом lwIP и ядром операционной системы . [4]
Сетевой стек lwIP включает реализацию IP (Internet Protocol) на уровне Интернета , которая может обрабатывать пересылку пакетов через несколько сетевых интерфейсов. [4] IPv4 и IPv6 поддерживаются в двухстековом режиме, начиная с lwIP v2.0.0. [5] Для обслуживания и отладки сети lwIP реализует ICMP (Internet Control Message Protocol). [4] IGMP (Internet Group Management Protocol) поддерживается для управления многоадресным трафиком. В то время как ICMPv6 (включая MLD ) реализован для поддержки использования IPv6. [ требуется ссылка ]
lwIP включает реализацию IPv4 ARP (протокол разрешения адресов) и IPv6 Neighbor Discovery Protocol для поддержки Ethernet на канальном уровне . LwIP также может работать поверх реализации PPP (протокола точка-точка) на канальном уровне. [ необходима ссылка ]
На транспортном уровне lwIP реализует TCP (протокол управления передачей) с контролем перегрузки, оценкой RTT и быстрым восстановлением/быстрой повторной передачей. [4] UDP (протокол пользовательских датаграмм) реализован с экспериментальными расширениями UDP-Lite . [ требуется ссылка ]
lwIP предоставляет специализированный интерфейс прикладного программирования (API) без копирования для повышения производительности сетевого стека. API сокетов Berkeley является необязательным. [4] Сырые сокеты или сырые pcbs (блоки управления протоколом) предоставляются в зависимости от используемого API. [6]
На прикладном уровне сетевой стек lwIP может поддерживаться посредством реализации следующих протоколов. DNS (система доменных имен), агент SNMP (простой протокол сетевого управления) в v1, v2 или v3 с поддержкой частной MIB ( база данных управления ) и компилятор MIB.
Операционные системы, реализующие стек lwIP TCP/IP, могут предоставлять ряд поддерживающих клиентов и серверов на уровне приложений. Например, клиент IPv4 DHCP (Dynamic Host Configuration Protocol) или локальные адреса IPv4 (AutoIP). Специализированные приложения raw API включают: HTTP- сервер, SNTP- клиент, SMTP- клиент, сервер имен NetBIOS , ответчик mDNS , клиент MQTT и сервер TFTP . [ необходима цитата ]
lwIP используется в качестве сетевого стека в ReactOS и Genode [7] и может использоваться в Minix и GNU Hurd для реализации сетевых серверов.