Перейти до вмісту

lwIP

Матеріал з Вікіпедії — вільної енциклопедії.
lwIP
ТипIP stack
АвториАдам Данкельс
РозробникlwIP developers group
Перший випуск1.0.0[1] 10 серпня, 2004; 22 роки тому (2004-08-10)
Стабільний випуск2.2.1[2] (6 лютого, 2025; 20 місяців тому (2025-02-06))
Версії2.0.3 (16 вересня 2017)[3]
Платформаembedded systems
Операційна системаmultiple
Мова програмуванняC
ЛіцензіяModified BSD license
Репозиторійgit.savannah.nongnu.org/cgit/lwip.git
Вебсайтwww.nongnu.org/lwip/

lwIP ( lightweight IP ) — це широко використовуваний стек TCP/IP з відкритим кодом, розроблений для вбудованих систем Початково lwIP розробив Адамом Данкельсом у 2001 року у Шведському інституті комп'ютерних наук, а нині розробляється та підтримується всесвітньою мережею розробників.

lwIP використовують багато виробників вбудованих систем, включаючи Intel/Altera, Analog Devices, [4] Xilinx, [5] TI, ST та Freescale .

Мережевий стек lwIP

[ред. | ред. код]

Реалізація мережевого стека lwIP орієнтована на зменшення використання ресурсів за збереження повноцінного TCP-стека. [6] Це робить lwIP придатним для використання у вбудованих системах із десятками кілобайтів вільної оперативної пам'яті та можливістю розмістити близько 40 кілобайтів коду в ПЗП.

Реалізації протоколів lwIP

[ред. | ред. код]

Окрім TCP/IP-стека, lwIP має кілька інших важливих складових, як-от мережевий інтерфейс, рівень емуляції операційної системи, буфери та підсистему керування пам'яттю. Рівень емуляції операційної системи та мережевий інтерфейс дають змогу перенести мережевий стек в операційну систему, оскільки забезпечують спільний інтерфейс між кодом lwIP та ядром операційної системи.[6]

Мережевий стек lwIP містить реалізацію IP (Internet Protocol) на міжмережевому рівні, яка здатна виконувати пересилання пакетів через кілька мережевих інтерфейсів.[6] Починаючи з lwIP v2.0.0, IPv4 та IPv6 підтримуються у режимі подвійного стека (dual stack).[7] Для обслуговування та діагностики мережі lwIP реалізує ICMP (Internet Control Message Protocol).[6] Для керування багатоадресним трафіком підтримується IGMP (Internet Group Management Protocol). Для підтримки використання IPv6 реалізовано ICMPv6 (зокрема MLD).[джерело?]

lwIP містить реалізацію ARP (Address Resolution Protocol) для IPv4 та Neighbor Discovery Protocol для IPv6 для підтримки Ethernet на канальному рівні. lwIP також може працювати поверх реалізації PPP (Point-to-Point Protocol) на канальному рівні.[джерело?]

На транспортному рівні lwIP реалізує TCP (Transmission Control Protocol) з керуванням перевантаженням, оцінюванням RTT та механізмами швидкого відновлення/швидкої повторної передачі (fast recovery/fast retransmit).[6] UDP (User Datagram Protocol) реалізовано з експериментальними розширеннями UDP-Lite.[джерело?]

API та сокети

[ред. | ред. код]

lwIP надає спеціалізований програмний інтерфейс (API) без копіювання даних (no-copy) для підвищення продуктивності мережевого стека. API сокетів Берклі є необов'язковим.[6] Залежно від використовуваного API надаються неструктуровані сокети (raw sockets) або неструктуровані блоки керування протоколом (raw pcb, protocol control blocks).[8]

Підтримка прикладного рівня

[ред. | ред. код]

На прикладному рівні мережевий стек lwIP може підтримуватися завдяки реалізації наведених далі протоколів. Це DNS (Domain Name System) та агент SNMP (Simple Network Management Protocol) версій v1, v2 чи v3 із підтримкою приватної MIB (бази керівної інформації) та компілятором MIB.

Операційні системи, що реалізують TCP/IP-стек lwIP, можуть надавати низку допоміжних клієнтів і серверів на прикладному рівні. Наприклад, клієнт DHCP (Dynamic Host Configuration Protocol) для IPv4 або локальні адреси каналу IPv4 (AutoIP). До спеціалізованих застосунків на основі raw API належать: HTTP-сервер, клієнт SNTP, клієнт SMTP, сервер імен NetBIOS, відповідач mDNS, клієнт MQTT та сервер TFTP.[джерело?]

Реалізації в ОС

[ред. | ред. код]

lwIP використовується як мережевий стек у ReactOS та Genode[9], а також може застосовуватися у Minix та GNU Hurd для реалізації мережевих серверів.

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. ↑ lwIP has arrived!.
  2. ↑ lwIP 2.2.1 released. Архів оригіналу за 27 листопада 2023. Процитовано 18 лютого 2025.
  3. ↑ https://savannah.nongnu.org/forum/forum.php?forum_id=8953
  4. ↑ "Building Complex VDK/LwIP Applications Using Blackfin Processors ", Kaushal Sanghai, Analog Devices Inc. September 2008 [Архівовано 2012-03-20 у Wayback Machine.]
  5. ↑ Siva Velusamy, LightWeight IP (lwIP) Application Examples, Xilinx Inc. June 2009 (PDF). Архів (PDF) оригіналу за 1 березня 2012. Процитовано 11 листопада 2010.
  6. 1 2 3 4 5 6 Wu, Yanwen, ред. (2010). Software engineering and knowledge engineering : theory and practice. Berlin: Springer. с. 639. ISBN 978-3-642-03717-7.
  7. ↑ LwIP: Upgrading. Архів оригіналу за 31 березня 2019. Процитовано 3 квітня 2019.
  8. ↑ lwIP functions documentation. Архів оригіналу за 30 жовтня 2020. Процитовано 25 листопада 2007.
  9. ↑ Release notes for the Genode OS Framework 9.11.

Посилання

[ред. | ред. код]