{{위키데이터 속성 추적}}
{{소프트웨어 정보
|name=lwIP
|logo=
|screenshot=
|caption=
|author=Adam Dunkels
|developer=lwIP developers group
|released=
|discontinued=
|latest release version=2.1.2
|latest release date={{시작 날짜와 나이|2018|12|22|df=yes/no}}
|latest preview version=
|latest preview date=
|programming language=[[C (프로그래밍 언어)|C]]
|operating system=다수
|platform=임베디드 시스템
|size=
|language=
|genre=IP 스택
|license=Modified BSD license
|website={{URL|http://savannah.nongnu.org/projects/lwip/}}
}}
'''lwIP'''('''lightweight IP''')는 [[임베디드 시스템]]에서 널리 사용되는 [[오픈 소스 소프트웨어|오픈 소스]] [[인터넷 프로토콜 스위트|TCP/IP 스택]]이다. lwIP는 스웨덴 컴퓨터 과학 연구소 (Swedish Institute of Computer Science)의 Adam Dunkels 에 의해 처음 개발되었으며 현재는 전 세계 개발자 네트워크에 의해 개발 및 유지 관리되고 있다.

lwIP는 많은 임베디드 시스템 제조업체에서 사용한다.  예로 [[알테라]] (니오스 II [[운영 체제|운영체제]]), [[아날로그 디바이스]] ([[블랙핀|블랙 핀]] [[디지털 신호 처리 장치|DSP의]] 칩),<ref><div> " [http://www.analog.com/static/imported-files/application_notes/EE-312_Rev2.pdf Blackfin 프로세서를 사용하여 복잡한 VDK / LwIP 애플리케이션 구현하기", Kaushal Sanghai, Analog Devices Inc. 2008년 9월] {{웨이백|url=http://www.analog.com/static/imported-files/application_notes/EE-312_Rev2.pdf |date=20120320004849 }} </div></ref> [[자일링스]],<ref><div> [http://www.xilinx.com/support/documentation/application_notes/xapp1026.pdf Siva Velusamy, LightWeight IP (lwIP) 애플리케이션 예제, 자일링스, 2009년 6월] </div></ref> [[허니웰|하니웰]] (FAA 인증 항법 시스템의 일부)과 [[프리스케일 세미컨덕터|프리 스케일 세미컨덕터]] (자동차 마이크로 컨트롤러용 이더넷 스트리밍 SW)가 있다.

== lwIP 네트워크 스택 ==
lwIP 네트워크 스택 구현의 초점은 풀 스케일 TCP 스택을 사용하면서도 리소스 사용을 줄이는 것이다.<ref name="qi_hui"/>  따라서 lwIP는 수십 킬로바이트의 여유 RAM과 코드를 위한 약 40킬로바이트 이상의 ROM이 있는 임베디드 시스템에서 사용하기에 적합하다.

== lwIP 프로토콜 구현 ==
[[인터넷 프로토콜 스위트|TCP/IP 스택]] 외에도 lwIP에는 네트워크 인터페이스, 운영 체제 에뮬레이션 계층, 버퍼 및 메모리 관리 섹션과 같은 몇 가지 중요한 부분이 있다.  운영 체제 에뮬레이션 계층과 네트워크 인터페이스를 통해 lwIP 모듈과 [[커널 (컴퓨팅)|운영 체제 커널]] 간에 공통 인터페이스를 제공하므로 lwIP 모듈을 운영 체제에 이식 할 때 lwIP의 네트워크 스택이 제대로 작동 할 수 있다.<ref name="qi_hui"/>

[[인터넷 계층]]에서 lwIP의 네트워크 스택에는 여러 네트워크 인터페이스를 통한 패킷 전달을 처리할 수 있는 [[인터넷 프로토콜|IP]] (Internet Protocol) 구현이 포함된다.<ref name="qi_hui">{{서적 인용|url=https://books.google.com/books?id=oT4_AAAAQBAJ&pg=PA639&dq=%22LwIP%22&hl=sv&sa=X&ei=WERBUsuHAsvN4QTW7YHoBA&redir_esc=y#v=onepage&q=%22LwIP%22&f=false|제목=Software engineering and knowledge engineering : theory and practice|성=(ed.)|이름=Yanwen Wu|연도=2010|출판사=Springer|위치=Berlin|쪽=639|isbn=978-3-642-03717-7}}</ref>  [[IPv4]]와 [[IPv6]] 모두 lwIP v2.0.0부터 듀얼 스택을 지원한다. 네트워크의 유지 보수 및 디버깅을 위해 lwIP는 구현 [[인터넷 제어 메시지 프로토콜|ICMP]] (인터넷 제어 메시지 프로토콜)을 도입한다.<ref name="qi_hui" />  [[인터넷 그룹 관리 프로토콜|IGMP]] (Internet Group Management Protocol)는 멀티 캐스트 트래픽 관리를 지원한다.  MLD를 포함한 [[ICMPv6]]은 IPv6 사용을 지원하기 위해 구현된다.

[[데이터 링크 계층]]에서 [[이더넷]]용 lwIP의 인터넷 프로토콜 (IP)을 지원하려면 IPv4 [[주소 결정 프로토콜|ARP]] (Address Resolution Protocol) 구현이 필요하며 IPv6 Neighbor Discovery Protocol이 필요하다. lwIP는 데이터 링크 계층에서 [[점대점 프로토콜|PPP]] (Point-to-Point Protocol) 구현 위에서 작동 될 수도 있다. [[전송 계층]]에서 lwIP는 [[혼잡 제어]], RTT 추정 및 빠른 복구/ 빠른 재전송을 사용하여 [[전송 제어 프로토콜|TCP]] (전송 제어 프로토콜)를 구현한다.<ref name="qi_hui"/>  [[사용자 데이터그램 프로토콜|UDP]] (사용자 데이터그램 프로토콜)는 실험적인 UDP-Lite 확장으로 구현된다.

=== API 및 소켓 ===
lwIP는 향상된 네트워크 스택 성능을 위한 특수한 no-copy API ([[API|Application Programming Interface]])를 제공한다.  버클리 소켓 API는 선택 사항이다.<ref name="qi_hui"/>  [[네트워크 소켓|원시 소켓]] 또는 원시 pcb는 사용된 API에 따라 제공된다.<ref><div> [http://www.nongnu.org/lwip/ lwIP 함수 문서] </div></ref>

=== 응용 계층 지원 ===
응용 계층에서 lwIP 네트워크 스택은 다음 프로토콜의 구현을 통해 지원 될 수 있다.  개인 MIB ( 관리 정보 기반 원 및 MIB 컴파일러가있는 v1, v2 또는 v3의 [[간이 망 관리 프로토콜|SNMP]] (단순 네트워크 관리 프로토콜) 에이전트, [[도메인 네임 시스템|DNS]] (Domain Name System)가 지원된다.

lwIP TCP/IP 스택을 구현하는 운영 체제는 응용 계층에서 IPv4 [[동적 호스트 구성 프로토콜|DHCP]] (동적 호스트 구성 프로토콜) 클라이언트 또는 IPv4 링크-로컬 주소 (일명. 자동 IP)와 같은 다양한 지원 클라이언트 및 서버를 제공 할 수 있다. 특수화 된 원시 API 응용 프로그램에는 [[HTTP]] 서버, [[네트워크 타임 프로토콜|SNTP]] 클라이언트, [[간이 우편 전송 프로토콜|SMTP]] 클라이언트, [[넷바이오스|NetBIOS]] 네임 서버, mDNS 응답자, [[MQTT]] 클라이언트 및 [[TFTP]] 서버가 포함된다.

== OS 구현 ==
lwIP는 [[ReactOS]]와 Genode<ref>{{웹 인용|url=https://genode.org/documentation/release-notes/9.11#Light-weight_IP_stack__lwIP_|제목=Release notes for the Genode OS Framework 9.11}}</ref>에서 네트워크 스택으로 사용되며 [[미닉스|Minix]]와 [[GNU 허드|GNU Hurd]]에서 네트워크 서버를 구현하는 데 사용할 수 있다.

== 같이 보기 ==

* 마이크로 IP ( uIP )

== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.109.1795&rep=rep1&type=pdf Adam Dunkels' initial Lwip paper]
* [http://savannah.nongnu.org/projects/lwip/ lwIP 개발]
* [http://lwip.wikia.com/wiki/LwIP_Wiki lwIP 문서 위키]
* [http://www.nongnu.org/lwip/ lwIP 함수 홈페이지]
* [https://web.archive.org/web/20010604054508/http://www.sics.se/~adam/lwip/ lwIP former homepage (obsolete)]

[[분류:임베디드 시스템]]