久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4957|回復: 4
收起左側

LwIP TCP/IP協議棧的設計與實現_中文譯稿(共42頁pdf下載)

[復制鏈接]
ID:437008 發表于 2018-12-1 11:13 | 顯示全部樓層 |閱讀模式
最近開發需要使用LwIP協議,搜集到了[瑞典]Adam Dunkels著的書籍,發現有中文翻譯版,分享一波。
0.png
LwIP 是 TCP/IP 協議棧的一個實現。它的目的是減少內存使用率和代碼大小,使 LwIP 適用于資源受限系統比如嵌入式系統。為了減少處理和內存需求,LwIP 使用不需要任何數據復制的經過裁剪的 API。
本文描述了 LwIP 的設計與實現。描述了在協議棧實現中以及像內存與緩沖管理這樣的子系統中使用的算法和數據結構。本文還包括 LwIP 的參考手冊以及使用 LwIP 的代碼例子。

0.png
圖 2 所示的pbuf 是一個被鏈接的 pbuf例子,在這個 pbuf 鏈中第一個 pbuf是 PBUF RAM 類型,第二個是 PBUF ROM 類型,這意味著它所擁有的數據存儲在 pbuf子系統不能管理的存儲區:
0.png
圖 2  一個PBUF RAM類型的 pbuf鏈接了一個數據存儲在外部存儲區的PBUF ROM類型的pbuf

第三種 pbuf類型,PBUF POOL,圖 3 所示,它由分配自固定大小的 pbufs池里的固定大小的 pbufs組成。一個 pbuf鏈可以由 pbufs 的不同類型組成。

0.png
這三種類型擁有不同的使用目的。PBUF POOL 主要用于網絡設備驅動層,因為分配一個 pbuf 的操作可以快速完成,所以非常適合用于中斷處理。PBUF ROM 類型的 pbufs 用于應用程序要發送的數據放置在應用程序管理的存儲區的情況。在 pbuf已經移交給 TCP/IP 協議棧后,這些數據是不能被編輯修改的,因此這種 pbuf 類型主要用于數據被放置在 ROM 中的情況(因此名字是 PBUF ROM)。為 PBUF ROM 類型的pbuf 數據預置的包頭存儲在一個 PBUF RAM 類型的 pbuf中,這個 pbuf 被鏈接到這個 PBUF ROM 類型的pbuf 前面,如圖 2 所示。
PBUF RAM類型的pbuf還用于應用程序發送的數據被動態生成的情況。在這種情況下。
pbuf 系統不僅為應用數據分配內存,還要給為這些數據預置的包頭分配內存,見圖 1。pbuf系統不可能預先知道為這些數據預置什么樣的包頭,因而考慮最壞的情況。包頭大小在編譯時是可配置的。其實,收到的 pbufs是 PBUF POOL 類型,發送出的 pbufs是 PBUF ROM 或 PBUF RAM類型。

pbuf 的內部結構參見圖 1 到圖3。pbuf結構包括兩個指針,兩個長度字段,一個標志字段和一個引用計數(reference count)。next 字段是一個指向 pbuf 鏈中下一個 pbuf 的指針。payload 指針指向 pbuf 中數據的開始位置。len 字段包含 pbuf中數據內容的長度。tot_len 字段包含當前 pbuf 的長度與在這個 pbuf 鏈中隨后的所有 pbufs 的 len 字段之和。換句話說,tot_len 字段是 len 字段與 pbuf 鏈中隨后一個 pbuf 的 tot_len 字段的和。flags 字段標識 pbuf的類型,ref字段包含一個引用計數。next 和payload 字段是本地指針,它們占用的字節數與所使用的處理器架構有關。兩個長度字段為 16 位無符號整形,flags 和 ref 字段是 4 位寬。pbuf 結構的實際大小與所使用的處理器架構下的指針大小及最小對齊方式有關。在 32 位指針及 4 字節對齊的架構里,pbuf 的大小為 16 個字節長,在 16 位指針及 1 字節對齊的架構里,pbuf 為9 個字節長。 pbuf 模塊提供了操作 pbufs 的函數。分配一個 pbuf 使用 pbuf_alloc()函數,該函數能夠分配上面描述的三種類型中的任一類型 pbufs。pbuf_ref()函數增加引用計數;厥 pbuf 使用pbuf_free()函數,該函數首先要減少 pbuf 索引計數(reference count)。如果引用計數已經減為 0,這個 pbuf 被回收。pbuf_realloc()函數可以收縮 pbuf 大小,以恰好夠用的內存封裝數據。pbuf_header()函數調整 payload 指針和長度字段以便為 pbuf 中的數據預置包頭。pbuf_chain()與 pbuf_dechain()函數用于鏈接 pbufs。

6.2 內存管理
內存管理模塊支撐的 pbuf 機制很簡單。它負責處理內存連續區域的分配和回收以及收縮已分配內存塊的大小。內存管理模塊使用系統內存的一部分作為自己的專用區域,這確保了網絡系統不會使用系統中所有可用內存,即使網絡系統使用了所有自己的內存,也不會擾亂其它程序的操作。
在內部,內存管理模塊通過在每一個內存分配塊的頂部放置一個比較小的結構體來保存內存分配紀錄。這個結構體擁有三個成員變量,兩個指針一個標志,見圖 4。next 與 prev分別指向內存的下一個和上一個分配塊,used標志標示該內存塊是否已被分配。

完整的pdf格式文檔51黑下載地址(共42頁):
LwIP協議棧的設計與實現_中文譯稿.pdf (618.87 KB, 下載次數: 80)
回復

使用道具 舉報

ID:18591 發表于 2019-1-31 18:39 | 顯示全部樓層
感謝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回復

使用道具 舉報

ID:320935 發表于 2019-2-14 12:51 | 顯示全部樓層
感謝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回復

使用道具 舉報

ID:328121 發表于 2019-2-15 08:34 | 顯示全部樓層
謝謝分享!。
回復

使用道具 舉報

ID:513219 發表于 2019-5-14 19:29 | 顯示全部樓層
謝謝分享,。。。。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久黄色 | 91国产视频在线 | 欧美一区二区在线观看 | 一区二区高清不卡 | 中日韩毛片 | 亚洲欧美中文日韩在线v日本 | 久久久久久久久国产成人免费 | 福利片在线观看 | www精品美女久久久tv | 亚洲欧美综合精品久久成人 | 久久三区 | 欧美一区二区三区在线观看 | 日本在线网址 | 亚洲国产第一页 | 蜜臀av日日欢夜夜爽一区 | 国产在线一区二区三区 | 亚洲免费视频网址 | 国产精品亚洲一区 | 韩日精品视频 | 国产资源在线观看 | 国产一二区视频 | 亚州综合在线 | www.一区二区三区 | www.888www看片 | 精品久久久久久亚洲综合网 | 日本在线网址 | 国产黄色一级电影 | 久久精品国产亚洲夜色av网站 | 久久国产精品精品 | 国产精品日本一区二区在线播放 | 亚洲一区二区三区国产 | 国产一区电影 | 精品欧美乱码久久久久久 | 成人在线观看免费 | 99视频在线播放 | 国产精品成人国产乱一区 | 91中文在线观看 | 精品在线99 | 国产免费一区二区三区网站免费 | 亚洲一区二区综合 | 国产精品观看 |