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網路開發
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/282802.html
標籤:嵌入式
上一篇:kali linux
下一篇:LWIP的網路介面
