2024年3月11日发(作者:)

RT-Thread进阶之网络框架

展开全文

1、网卡组件(netdev)

netdev 组件主要作用是解决设备多网卡连接时网络连接问题,用

于统一管理各个网卡信息与网络连接状态,并且提供统一的网卡调试

命令接口。其主要功能特点如下所示:

抽象网卡概念,每个网络连接设备可注册唯一网卡。

提供多种网络连接信息查询,方便用户实时获取当前网卡网络状

态;

建立网卡列表和默认网卡,可用于网络连接的切换;

提供多种网卡操作接口(设置 IP、DNS 服务器地址,设置网卡

状态等);

统一管理网卡调试命令(ping、ifconfig、netstat、dns 等命

令);

网卡概念:

网卡概念介绍之前先了解协议栈相关概念,协议栈是指网络中各

层协议的总和,每种协议栈反映了不同的网络数据交互方式,RT-

Thread 系统中目前支持三种协议栈类型:lwIP 协议栈、AT Socket 协

议栈、WIZnet TCP/IP硬件协议栈。每种协议栈对应一种协议簇类型

(family),上述协议栈分别对应的协议簇类型为:AF_INET、AF_AT、

AF_WIZ。

网卡的初始化和注册建立在协议簇类型上,所以每种网卡对应唯

一的协议簇类型。Socket 套接字描述符的创建建立在 netdev 网卡基

础上,所以每个创建的 Socket 对应唯一的网卡。协议簇、网卡和

socket 之间关系如下图所示:

1.1 netdev数据结构

每个网卡对应唯一的网卡结构体对象,其中包含该网卡的主要信

息和实时状态,用于后面网卡信息的获取和设置。

网卡状态:

up/down:底层网卡初始化完成之后置为 up 状态,用于判断网