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

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

ID:25156939

大?。?36.51 KB

頁數(shù):18頁

時間:2018-11-18

lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析_第1頁
lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析_第2頁
lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析_第3頁
lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析_第4頁
lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析_第5頁
資源描述:

《lwip協(xié)議棧架構(gòu)與設(shè)計(jì)解析》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、LWIP協(xié)議棧及接口提取Version1.02012/06/20第18頁共18頁版本1.0姓名部門郵件作者雷巖Leiyan3521@163.com審閱第18頁共18頁版本歷史版本日期修訂姓名Rev1.02011/11/07FirstDraftleiyan第18頁共18頁目錄一、LWIP介紹5二、LWIP源碼分析71.LWIP協(xié)議棧的架構(gòu)72.各個文件夾介紹83.模塊及源文件介紹10三、LWIP協(xié)議棧處理數(shù)據(jù)流程17四、接口提取18第18頁共18頁一、LWIP介紹首先說明一下,這篇文檔的主要目的是提取網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)的函數(shù)接口。然后用我們自己的驅(qū)動網(wǎng)卡的接口函數(shù)替代程

2、序中的接口。如果對LWIP協(xié)議棧本身沒什么興趣的,可以跳過第一、二、三章,直接閱讀第四章,使用我們的接口代替第四章的接口就行了。寫第一、二、三章的主要目的是為了方便理解數(shù)據(jù)的發(fā)送和接收在LWIP協(xié)議棧中是如何進(jìn)行處理的。這便于我們理解提取出來的接口。LWIP是瑞典計(jì)算機(jī)科學(xué)院開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼的輕量級的TCP/IP協(xié)議棧。傳統(tǒng)的,或者說是典型的TCP/IP協(xié)議族的設(shè)計(jì)都是按照分層的思想來設(shè)計(jì)的。這樣設(shè)計(jì)有個好處,就是每層相對于其他層獨(dú)立,代碼方便理解。缺點(diǎn)就是,每層之間進(jìn)行數(shù)據(jù)交互的時候必須要進(jìn)行復(fù)制,而數(shù)據(jù)的復(fù)制是很耗時的,這就降低了實(shí)時性。LWI

3、P采用了一種不同的設(shè)計(jì)方式來實(shí)現(xiàn)TCP/IP協(xié)議族。LWIP各層之間沒有明顯的界限,各層之間都可以訪問到共享在內(nèi)存中的數(shù)據(jù)。因?yàn)楦鲗佣伎梢栽L問共享內(nèi)存,所以這就避免了內(nèi)存復(fù)制產(chǎn)生的性能損失。但是并不是說LWIP就沒有分層的概念了。只不過LWIP各層都是邏輯意義上的層。每個協(xié)議都以模塊的形式被實(shí)現(xiàn)。而這些模塊就共同組成了LWIP整體。下面一章將分析LWIP的源碼,結(jié)合源碼介紹這些模塊。了解各個協(xié)議是怎么通過模塊被實(shí)現(xiàn)的。其中這里最主要的是TCP協(xié)議模塊的實(shí)現(xiàn)。TCP協(xié)議在LWIP協(xié)議棧中占得比例最大,有將近一半的代碼是專門用來實(shí)現(xiàn)TCP協(xié)議的。所以重點(diǎn)會分析TCP協(xié)議。

4、并且無線音頻項(xiàng)目采用的也是TCP協(xié)議傳輸數(shù)據(jù)。LWIP邏輯上被分為四個層:應(yīng)用層,傳輸層,網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層。如下圖1.1所示:第18頁共18頁圖1.1LWIP協(xié)議棧的分層模型應(yīng)用層主要是使用LWIP協(xié)議棧開發(fā)相應(yīng)的網(wǎng)絡(luò)通信程序。LWIP主要提供了三種接口供用戶使用。三種接口分別為RAWAPI,NetconnAPI和BSDSocketAP。其中RAWAPI主要是采用回調(diào)函數(shù)的方式來完成數(shù)據(jù)的發(fā)送和接收,RAWAPI接口寫的應(yīng)用程序與LWIP協(xié)議棧處在同一個進(jìn)程(或者稱任務(wù))中。NetconnAPI和BSDSocketAP工作于多線程方式中,要使用者兩種接口,必須有多任

5、務(wù)的操作系統(tǒng)的支持。這次項(xiàng)目采用的接口是RAWAPI。關(guān)于RAWAPI接口如何寫應(yīng)用層程序,另寫了一個專門的文檔介紹。這里不列出。傳輸層。我們最熟悉的TCP協(xié)議,UDP協(xié)議,以及我們使用ping命令時采用的ICMP協(xié)議都處在這一層。這一層提供了一些專門的接口,用于處理與應(yīng)用層和網(wǎng)絡(luò)層的數(shù)據(jù)傳送(注明,這里說的數(shù)據(jù)傳送并不是指數(shù)據(jù)的拷貝。事實(shí)上,LWIP協(xié)議棧使用的是內(nèi)存共享技術(shù),各層都能訪問這段共享內(nèi)存,各層傳遞的就是數(shù)據(jù)結(jié)構(gòu)指針,所以LWIP協(xié)議棧降低了內(nèi)存復(fù)制所產(chǎn)生的性能損失)。關(guān)于這層函數(shù),會在下面進(jìn)行具體說明。網(wǎng)絡(luò)層主要的協(xié)議是IP協(xié)議。這一層主要是對底層接收

6、的數(shù)據(jù)包進(jìn)行發(fā)送,轉(zhuǎn)發(fā),丟棄組合等功能。網(wǎng)絡(luò)接口層是和底層硬件驅(qū)動交互的層。我們所需要提取的網(wǎng)絡(luò)接口就在這一層。第18頁共18頁二、LWIP源碼分析1.LWIP協(xié)議棧的架構(gòu)LWIP協(xié)議棧源碼的架構(gòu)如下圖2.1所示:圖2.1LWIP協(xié)議棧源碼架構(gòu)api目錄:應(yīng)用程序接口文件,包括netconn和BSD2種API。這個文件夾主要是為了方便應(yīng)用程序編寫而為應(yīng)用層提供的API接口。core目錄:ICMP,IP,TCP,UDP協(xié)議的實(shí)現(xiàn)文件,以及一些輔助函數(shù),LWIP實(shí)現(xiàn)的核心代碼。其中這個文件夾里面實(shí)現(xiàn)TCP協(xié)議的代碼量幾乎占了整個lwip協(xié)議棧的一半。重點(diǎn)會討論TCP協(xié)議。

7、在此也可以簡單看出LWIP協(xié)議棧沒有嚴(yán)格區(qū)分傳輸層和網(wǎng)絡(luò)層,因?yàn)閭鬏攲拥拇a和網(wǎng)絡(luò)層的代碼放在一個文件夾里實(shí)現(xiàn)了。目錄里還提供了RAWAPI接口的實(shí)現(xiàn)。RAWAPI接口和上面兩種接口一樣,都是為了方便應(yīng)用程序編寫而為應(yīng)用層提供的API接口。include目錄:主要是LWIP協(xié)議棧使用的自定義的一些頭文件。netif目錄:這個目錄里主要實(shí)現(xiàn)的是ARP協(xié)議。當(dāng)然還有一些PPPOE等協(xié)議。當(dāng)然PPPOE協(xié)議不是我們所關(guān)心的。port目錄:最后寫這個目錄,主要是因?yàn)檫@個目錄是我們最終所要修改的一個目錄??梢钥吹酱四夸浵掳粋€ethernetif.c文件。這

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。