深入学习lwip

深入学习lwip
引入:
       物联网时代,我们的终端设备都需要连入互联网中,将终端各个节点的信息进行汇总,上传到云进行大数据分析,最终得到用户想要的信息。作为开发者的角度,设备连网后可以远程升级程序,远程调试等,大大降低了生产调试人的工作量。而我们的设备呢,接入网络比较常见的方式就是连接网线啊,或者内置wifi模块,或者接了GPRS的模块等。
单片机的以太网方案,可参考以前的文章
https://blog.csdn.net/lzs940320/article/details/101625133
wifi模块主要说esp8266可看也看以前文章(便宜,稳定,很多大厂都在用)
https://blog.csdn.net/lzs940320/article/details/101634027
无论哪种方法,最终都会涉及到TCP/IP协议栈。
而在我们的终端设备中一般内存都比较小,主频比较低,常用的一般就是Lwip轻量级的网络协议栈(ESP8266中就在lwip上进行的优化),为什么选用lwip,它有什么优点,我这就不多说了,用它就对了。

我们接下来以我的思路来逐步学习。一般我们要想用这个源码,肯定要去官方下载,然后了解他的移植方法,然后进行使用。

一.源码的文件夹结构

深入学习lwip

 

 

二.lwip基础知识

看到了源码结构,肯定有点蒙,这么多的文件,这么多的功能,之间怎么联系的呢,他是一个轻量级的网络协议栈,提到网络协议栈,我们肯定就联想到TCP/IP协议栈,当然他们之间的原理是一样的。

深入学习lwip

1)网络结构:
接下来我们说一下网络结构。
学过网络的都知道

OSI模型七层结构:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。

TCP/IP 协议四层结构:应用层,传输层,网络层,网络接口层。

常用的五层协议:应用层(TFTP,HTTP,FTP,DNS,Telnet),传输层(TCP,UDP),网络层(IP,ICMP(ping),RIP,OSPF,BGP,IGMP),数据链路层(SLIP,CSLIP,PPP,ARP,RARP,MTU),物理层。

例:小A在小B处买了一本书,小B叫来了快递公司快递员小C,小C检查包装,并在包装上填写好物品名称,收获人,地址等信息,然后将包裹带回了快递公司给了物流处,物流处查看包装信息后是北京的包裹,就将包裹放在飞机上运往北京,北京快递员小D接收到后,检查包裹,查看地址,将包裹配送给小A。
 
小A和小B处在最上层,相当于应用层,依赖快递员小C和小D的服务。小C和小D为传输层,负责对书检查,打包等工作,填入地址等信息。快递公司物流处属于网络层,根据客户信息决定将包裹发到哪里,飞机属于网络接口层,以自己的方式完成物流处递交来的包裹运输。

(2)宏观上了解一下四层协议,一些概念我们平时经常听到,但是并不知道他有什么用。

其实无论是庞大的tcp/ip协议还是linux系统,最开始的时候都是一个基本的核,后来根据遇到的问题,不断累加上去的,只要明白每层,每个概念出现的意义,应用时我们就会比较顺手,有些部分我们要做到适可而止,会用,会调用就可以了。
 

三.lwip核心功能

内存管理机制和数据包管理机制

深入学习lwip

lwip一般常和stm32一块使用,移植方法看原子的或者火哥的,这里就不重复写了。