LWIP学习记录1——认识

一、 LWIP是什么,有什么作用

Lwip是一个阉割版的TCP/IP协议栈,开源的,它只实现了TCP/IP协议栈大部分功能。

TCP/IP协议栈应该在生活中哪些产品?

交换机、路由器、光纤收发机等等,这些产品都是使用TCP/IP协议栈来实现的。

那么LWIP能做什么?

云台接入、无线网关、工控器、远程模块、网络摄像头、嵌入式NAT无线路由器(注:LWIP没有NAT协议,之所以能实现是因为我们在LWIP基础上添加了NAT协议)

二、结构框图

LWIP学习记录1——认识_第1张图片

应用层 用户选择协议发送数据,如HTTP \ MQTT......
应用层->传输层

无操作系统只能使用RAW接口进行发送;

带操作系统正常使用netconn接口和socket接口,当然也可以使用RAW接口;

一般是选择socket接口

传输层

两个协议,TCP和UDP,既可靠的和不可靠的两种

TCP(可靠的协议,TCP是在不可靠的信道上实现了可靠的连接与可靠的传输,当两个主机传输中数据丢失,我们主机会重新在发送,具备重传机制)

 UDP (不可靠的协议,当主机A传输到主机B中,数据丢失了,主机A是不会重新发送)

传输层->网络层 就是ip4.c文件,把传输层数据添加上传输层首部然后递交给我网络层
网络层

在这有三个重要的协议,IP ARP ICMP

IP协议,分片和重组,我们都知道以太网帧不能超过1500字节,超过就要分包,那么重组就是接收端接收到进行排序组合成一个大的数据包

ARP协议:获取对方主机MAC地址,MAC地址主要作用是数据转发

ICMP协议有两个报文:一个是查询报文(Ping ....)一个是查错报文

网络层->数据链路层

有三个文件:netif \ ethernet \ sys_arch.c

netif:是一个虚拟网卡,我们硬件上可以板载多种网络接口(比如:wifi 、 以太网等接口),那么如何管理呢?我们就是使用netif进行管理,netif使用了统一接口来对不同的硬件进行抽象

ethernet:主要把网络层数据递交给MAC内核

sys_arch.c:应用于OS操作系统中,里面定义了OSitc,例如信号量、邮箱、互斥锁;信号为了同步操作,邮箱发送数据,互斥锁优先级的防守

数据链路层 由MCU内嵌的MMAC内核实现的(这里比如是STM32  AT32 GD32等等)
数据链路层->物理层 介质接口,那么是由什么接口实现,就是根据RMII和MII这来各种接口实现发送,我们一般选择RMII进行转发(RMII只要9个引脚,MII需要14个引脚)

三、封装框图

有了上一步的基础认知,那么传输就要一层一层嵌套传输,下图就是数据封装图

LWIP学习记录1——认识_第2张图片

你可能感兴趣的:(LWIP学习记录1——认识)