LWIP的网络接口

1、网络接口结构

1.1、网络接口简介

       TCP/IP参考模型中网络分为4层:应用层、传输层、网络层和网络接口层。网络接口层就对应着我们实际的网卡,LWIP支持多网口设计,LWIP中使用netif来描述每种网络接口的特性,如接口的IP地址、接口状态等等。那么如果有多个网卡的话LWIP是如何来组织这些网卡呢?在LWIP中用链表netif_list来管理众多的网卡,当上层有数据要发送的时候LWIP会从netif_list链表中选择一个合适的网卡来将数据发送出去。

1.2、netif结构

netif结构体在文件netif.h中有定义,netif结构体中每个成员变量的含义如下:
      next:该字段指向下一个neitif类型的结构体,因为LWIP可以支持多个网络接口,当设备有多个网络接口的话LWIP就会把所有的netif结构体组成链表来管理这些网络接口。
       ipaddr,netmask和gw:分别为网络接口的IP地址、子网掩码和默认网关。
       input:此字段为一个函数,这个函数将网卡接收到的数据交给IP层。
       output:此字段为一个函数,当IP层向接口发送一个数据包时调用此函数。这个函数通常首先解析硬件地址,然后发送数据包。此字段我们一般使用etharp.c中的etharp_output()函数。 
linkoutput:此字段为一个函数,该函数被ARP模块调用,完成网络数据的发送。上面说的etharp_output函数将IP数据包封装成以太网数据帧以后就会调用linkoutput函数将数据发送出去。
      state:用来定义一些关于接口的信息,用户可以自行设置。
      mtu:网络接口所能传输的最大数据长度,一般设置为1500。
      hwaddr_len:网卡MAC地址长度,6个字节。
      hwaddr:MAC地址。
      flags:网络的接口状态,属性信息字段。
      name:网卡的名字。
      num:此字段为协议栈为每个网络接口设置的一个编号,编号从0开始。

2、相关函数

2.1、netif_add

netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,  ip_addr_t
                *gw, void *state, netif_init_fn init, netif_input_fn input)
就是把netif网络接口添加到网络list队列中,向网卡列表中添加一个网卡

2.2、netif_set_default

netif_set_default(struct netif *netif)
将这个网卡设置为默认网卡

2.3、netif_set_up

netif_set_up(struct netif *netif)
打开网卡

点击查看本文所在的专辑,STM32F207网络开发

关注公众号,第一时间收到文章更新

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongercjd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值