freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析(存儲(chǔ)版)

  

【正文】 是直接指向網(wǎng)絡(luò)驅(qū)動(dòng)收發(fā)接口函數(shù)的。 typedef enum { PBUF_RAM, /* pbuf data is stored in RAM */ PBUF_ROM, /* pbuf data is stored in ROM */ PBUF_REF, /* pbuf es from the pbuf pool */ PBUF_POOL /* pbuf payload refers to RAM */ } pbuf_type。 u8_t pbuf_header(struct pbuf *p, s16_t header_size)。 err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from)。 如果是 ip 報(bào)文,該接口就調(diào)用 etharp_ip_input 進(jìn)行 arp更新,并調(diào)用 ip_input 接口,將報(bào)文提交給 ip 層。其主要入口函數(shù)為: err_t ip_input(struct pbuf *p, struct if *inp) 該接口通過(guò)判斷輸入報(bào)文的協(xié)議類(lèi)型,將其輸入到相應(yīng)的上層協(xié)議模塊中去。最后啟動(dòng) dhcp 申請(qǐng)。 從源碼分析看,上述的接口在應(yīng)用 lwip 的協(xié)議棧時(shí),需要重點(diǎn)關(guān)注。應(yīng)用層調(diào)用 ip_write()函數(shù),接著 tcp_write() 函數(shù)再將控制權(quán)交給 tcp_enqueue() 函數(shù),這個(gè)函數(shù)會(huì)在必要時(shí)將數(shù)據(jù)分割為適當(dāng)大小的 TCP 段,然后再把這些 TCP 段放到所屬連接的 傳輸隊(duì)列中。如果這個(gè) TCP 段由一個(gè)不被承認(rèn)的 ACK應(yīng)答數(shù)據(jù)構(gòu)成,數(shù)據(jù)將會(huì)從緩沖區(qū)移走,它所占用的存儲(chǔ)區(qū)被收回。 。當(dāng)該 TCP 所屬的連接正處于接受網(wǎng)絡(luò)數(shù)據(jù)的狀態(tài),tcp_receive()函數(shù)將被調(diào)用。圖中左半邊部分是數(shù)據(jù)發(fā)送的處理部分,右半部分是數(shù)據(jù)接收的處理部分。上面一個(gè)用于請(qǐng)求應(yīng)答超時(shí)處理。 主要的接口原型如下: err_t dhcp_start(struct if *if) 該接口用于設(shè)備啟動(dòng) dhcp 模塊,主要是客戶端的功能。并在 etharp_query中調(diào)用 etharp_send_ip來(lái)發(fā)送最終組合報(bào)文。其主要入口函數(shù)為: err_t ether_input(struct pbuf *p, struct if *if) 該入口函數(shù)通過(guò)判斷輸入報(bào)文 p的協(xié)議類(lèi)型來(lái)決定是按照 arp協(xié)議進(jìn)行處理還是將該報(bào)文提交到 IP 協(xié)議。 void pbuf_chain(struct pbuf *head, struct pbuf *tail)。 struct pbuf *pbuf_alloc(pbuf_layer l, u16_t size, pbuf_type type)。主要的文件包括 、 、 。當(dāng)我們要向網(wǎng)絡(luò)中發(fā)送一個(gè)數(shù)據(jù)時(shí),我們調(diào)用 output 函數(shù)指針指向的那個(gè)函數(shù)進(jìn)行數(shù)據(jù)的發(fā)送工作。 if LWIP_LOOPBACK_MAX_PBUFS u16_t loop_t_current。 u32_t ifoutoctets。 /** number of this interface */ u8_t num。 if LWIP_DHCP /** the DHCP client state information for this if */ struct dhcp *dhcp。 struct ip_addr mask。所有的程序就在 tcpip_thread 這個(gè)進(jìn)程里運(yùn)行(這里說(shuō)的是使用 RAW API 接口的情況)。 tcpip_init_done = initfunc。 3.模塊及源文件介紹 【 1】 配置模塊 配置模塊的文件主要包含在 include/lwip/ 里(這里及下文所指的路徑均為相對(duì)路徑) 。其中文件夾 PPP是關(guān)于點(diǎn)對(duì)點(diǎn)協(xié)議的,不必關(guān)心 【 5】 port 目錄 ,如圖 圖 目錄下的文件列表 第 10 頁(yè) 共 18 頁(yè) 這個(gè)文件夾下面關(guān)于 arch 目錄,這個(gè)目錄是移植時(shí)候主要修改的目錄。 第 8 頁(yè) 共 18 頁(yè) 2. 各個(gè)文件夾介紹 【 1】 api目錄 ,如圖 圖 api目錄下的文件 列表 這個(gè)文件夾下面主要提供的是 conn API 和 BSD socket API 。 include 目錄:主要是 LWIP協(xié)議棧使用的自定義的一些頭文件。 第 7 頁(yè) 共 18 頁(yè) 二、 LWIP 源碼 分析 1. LWIP 協(xié)議棧的架構(gòu) LWIP 協(xié)議棧源碼的架構(gòu)如下圖 所示: 圖 LWIP 協(xié)議棧源碼架構(gòu) api目錄: 應(yīng)用程序接口文件,包括 conn 和 BSD 2種 API。我們最熟悉的 TCP 協(xié)議, UDP 協(xié)議,以及我們使用 ping 命令時(shí)采用的ICMP 協(xié)議都處在這一層。 LWIP 主要提供了三種接口供用戶使用。下面一章將分析 LWIP的源碼,結(jié)合源碼介紹這些模塊。缺點(diǎn)就是,每層之間進(jìn)行數(shù)據(jù)交互的時(shí)候必須要進(jìn)行復(fù)制,而數(shù)據(jù)的復(fù)制是很耗時(shí)的,這就降低了實(shí)時(shí)性。 第 1 頁(yè) 共 18 頁(yè) LWIP 協(xié)議棧及接口提取 Version 2020/06/20 第 2 頁(yè) 共 18 頁(yè) 版本 姓名 部門(mén) 郵件 作者 雷巖 審閱 第 3 頁(yè) 共 18 頁(yè) 版本歷史 版本 日期 修訂 姓名 Rev 2020/11/07 First Draft leiyan 第 4 頁(yè) 共 18 頁(yè) 目錄 一、 LWIP 介紹 ................
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1