嵌入式網(wǎng)絡那些事——STM32物聯(lián)實戰(zhàn)
-
【作 者】朱升林 歐陽駿 楊晶 著
【I S B N 】978-7-5170-3312-7
【責任編輯】張玉玲
【適用讀者群】科技
【出版時間】2015-07-30
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數(shù)】496
【千字數(shù)】687
【印 張】31
【定 價】¥68
【叢 書】暫無分類
【備注信息】
簡介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書
本書面向網(wǎng)絡TCP/IP協(xié)議初學者以及大量嵌入式網(wǎng)絡開發(fā)人員,從當下流行的嵌入式網(wǎng)絡協(xié)議棧LwIP的源代碼入手,詳細講解TCP/IP協(xié)議的各層機制及其實現(xiàn)原理。同時,通過搭建簡單的實驗環(huán)境,本書還詳細闡述LwIP在嵌入式設備組網(wǎng)過程中的移植過程、應用編程案例、編程框架、注意事項等。
本書共分為四大部分,第一部分講解基于STM32平臺下LwIP的移植過程,其中包括了LwIP代碼組織結(jié)構(gòu)與特點,以及LwIP裸機移植通用流程;第二部分,以LwIP源代碼為基礎,以網(wǎng)絡數(shù)據(jù)包在協(xié)議棧內(nèi)部的遞交順序做導向,結(jié)合TCP/IP協(xié)議基本知識,依次講解LwIP內(nèi)核各個模塊的實現(xiàn)機制,包括數(shù)據(jù)包管理、網(wǎng)絡接口管理、ARP、IP、ICMP、UDP、TCP等;第三部分,講解LwIP上層API實現(xiàn)機制,以及常見的網(wǎng)絡應用程序結(jié)構(gòu)以及編程方法,以及LwIP其他高級應用,如IGMP、DNS、DHCP等;第四部分,講解內(nèi)核調(diào)試、協(xié)議棧穩(wěn)定性和性能、并發(fā)服務器設計等,以及LwIP在具體項目中的應用和實踐過程,同時還包括了LwIP在實際應用中常見的問題及解決方法。
本書可作為TCP/IP學習者的快速入門及精通的指導書籍,還可作為廣大嵌入式網(wǎng)絡開發(fā)人員的參考手冊。
本書附帶源代碼,讀者可以從中國水利水電出版社網(wǎng)站和萬水書苑上下載,網(wǎng)址為:http://www.waterpub.com.cn/softdown/和http://www.dgboyong.cn。
骨灰級一線嵌入式專家“五木”嘔心力作
基于STM32實戰(zhàn)環(huán)境,直觀感受各層協(xié)議在嵌入式設備組網(wǎng)過程中的實際應用,學習TCP/IP不再是紙上淡兵
最實用的STM32學習資料,最新鮮的實戰(zhàn)例程,輕輪詼諧,簡單直白
從協(xié)議棧原理及使用方法,到編程框架,講解透徹
從性能與穩(wěn)定性測試,到問題定位與調(diào)試,干貨多多
前 言
兩三年前,當整個世界都在大力倡導物聯(lián)網(wǎng)、宣揚物聯(lián)網(wǎng)改變世界的時候,很多人還一直覺得它是很虛幻的東西。而如今,物聯(lián)網(wǎng)技術(shù)卻實實在在地出現(xiàn)在了我們的生活中。物聯(lián)網(wǎng)涉及到一系列廣泛的技術(shù),并沒有完全統(tǒng)一的標準,其本質(zhì)是所有物體通過一定的方式連入互聯(lián)網(wǎng),能夠共享自身的一些信息,這些信息或為用戶使用,或成為用戶遠程控制設備的基礎。物聯(lián)網(wǎng)當前已經(jīng)存在了多種純熟的入網(wǎng)技術(shù),比如Wi-Fi、以太網(wǎng)、ZigBee、GPRS/3G/4G等。不同的應用場合,根據(jù)產(chǎn)品成本和應用特性的考慮,設備可以選擇不同的入網(wǎng)方法。
當前在物聯(lián)網(wǎng)領(lǐng)域,既有像華為這樣的世界級大公司,也有像Sigfox這樣的新型創(chuàng)業(yè)型公司。物聯(lián)網(wǎng)的一個重要方向是上十億百億的小物體的互聯(lián),這些小設備入網(wǎng)并不以大數(shù)據(jù)量交換為目的,它們只是簡單地上報自身狀態(tài),或者使用傳感器完成某些簡單檢測功能,比如垃圾箱需要入網(wǎng),在適當?shù)臅r候上報自身的儲存狀態(tài);售貨機需要入網(wǎng),以上報售貨狀態(tài),是否需要補貨;防盜門需要入網(wǎng),可隨時上報異常開關(guān)狀態(tài);珍惜動物需要入網(wǎng),方便對它們進行跟蹤保護,以免遭到非法捕殺等。類似于這樣的小型設備入網(wǎng)需求不勝枚舉,它們并不需要太大的數(shù)據(jù)量通信,或許每小時幾百字節(jié)的數(shù)據(jù)就足以滿足應用的要求。在這種需求下,使用傳統(tǒng)的入網(wǎng)方法無論從成本上還是從實現(xiàn)上都是難以接受的(Wi-Fi的有效范圍太小,移動網(wǎng)絡價格太貴,功耗太大)。“物體的互聯(lián)需要一張專門的無線互聯(lián)網(wǎng)”,這是Sigfox公司提出的一個觀點,它們正致力于為所有小物體入網(wǎng)構(gòu)建一張專有的網(wǎng)絡,這張網(wǎng)絡可以和目前的2G/3G/4G網(wǎng)絡相匹敵。Sigfox的設計中有一種基于超窄帶技術(shù)的物聯(lián)網(wǎng)基站,它能向設備提供超遠距離的無線互聯(lián)(10~20公里),以犧牲數(shù)據(jù)通信速率為前提,設備的無線功率損耗將降至最低,據(jù)Sigfox透露這樣一款小型設備在一塊普通電池的供應下能持續(xù)工作數(shù)年之久,而設備的每個模塊成本可以降到幾美元,每年的設備連接維護費也僅為1美元多一點。
Sigfox成功地解決了小型設備入網(wǎng)的功耗和成本問題,為世界上數(shù)以億計的設備連入互聯(lián)網(wǎng)提供了完美的解決方案。“成為物體而非人的運營商”是Sigfox目前的發(fā)展方向,目前該公司已將技術(shù)提交給了歐洲電信標準協(xié)會,希望將其專有技術(shù)變成標準。值得指出的是,華為也正致力于遠距離低功耗無線通信技術(shù)的研發(fā),這點同Sigfox的技術(shù)不謀而合,這也許是未來小物體互聯(lián)發(fā)展的熱點。或許在不久的將來,我們就會見證另一個中國移動、中國電信的誕生。
以此為契機,越來越多的小設備會連入互聯(lián)網(wǎng),盡管在物理層上各種入網(wǎng)方案存在差別,但在這之上,嵌入式設備入網(wǎng)需要使用標準的TCP/IP協(xié)議,目前業(yè)界可以使用的TCP/IP協(xié)議棧較少,嵌入式設備入網(wǎng)比較流行的解決方案主要是使用硬件TCP/IP芯片或者收費TCP/IP協(xié)議棧軟件,這兩種方案一定程度上增加了設備的成本,使用靈活性也受到一定限制,進而阻礙了嵌入式網(wǎng)絡產(chǎn)品的大力發(fā)展。
LwIP是TCP/IP協(xié)議的一種開源實現(xiàn),具有豐富完善的功能,最新版本還支持DHCP、DNS等服務,適合于在32位的嵌入式處理器上使用。LwIP作為一款開源軟件,可免費使用,能作為設備入網(wǎng)的一種比較完美的解決方案,由于其代碼量小,特別適合于小型嵌入式領(lǐng)域使用。目前LwIP在國內(nèi)已經(jīng)有了一定的市場占有量,但是相關(guān)的資料仍然缺乏,缺少專業(yè)的書籍對協(xié)議棧原理、使用方法、編程框架、性能與穩(wěn)定性測試、問題定位與調(diào)試等方面做詳細說明,這影響了LwIP在物聯(lián)網(wǎng)領(lǐng)域的廣泛使用以及大量開發(fā)者進入嵌入式網(wǎng)絡領(lǐng)域的腳步。
筆者的《嵌入式網(wǎng)絡那些事:LwIP協(xié)議深度剖析和實戰(zhàn)演練》一書在一定程度上滿足了開發(fā)者對LwIP相關(guān)知識的需求,在市場上也有很好的銷量,得到了讀者的好評。但是這本書還是存在一定的不足:一是書的開發(fā)平臺目前已經(jīng)停產(chǎn),由于不是目前最流行的嵌入式處理器,因此該書的實驗移植過程對很多讀者來說理解有困難;第二,該書更注重于LwIP理論的講解,以及對TCP/IP協(xié)議原理深入的學習,書中的實驗相對較簡單,這并不能滿足廣大開發(fā)者以及學校實驗環(huán)境的需求。因此,筆者一直籌劃推出本書作為第二版,主要在以下幾方面做了改進:首先會在目前流行的STM32處理器上完成所有實驗與測試,同時在應用上加入更多豐富實用的實戰(zhàn)例程,并且對于很多編程方法抽象出程序框架,開發(fā)者只要在這個框架基礎上做簡單的改動,便可以完成自己的應用程序;其次對于有一定經(jīng)驗的LwIP開發(fā)者,可能更加關(guān)注于內(nèi)核調(diào)試、協(xié)議棧穩(wěn)定性和性能相關(guān)內(nèi)容,本書也從這兩方面著手,提出了一定的實驗和方法,滿足廣大開發(fā)者的需求;再次,為了更方便初學者入門,本書豐富了socket標準接口編程方面的原理和實踐內(nèi)容,同時增加了并發(fā)服務器設計的相關(guān)知識,可以更好地滿足如今在市場上越來越復雜的聯(lián)網(wǎng)需求;最后,筆者從親自參與并設計的一款物聯(lián)網(wǎng)網(wǎng)關(guān)入手,從原理設計、需求分析、程序架構(gòu)設計、程序調(diào)試等方面詳細介紹LwIP在現(xiàn)實項目中的實戰(zhàn)經(jīng)驗,希望可以給廣大物聯(lián)網(wǎng)開發(fā)工程師帶來一定的參考意義。
寫本書的目的可以歸納為三點:第一,給需要使用LwIP的人一個借鑒和解決問題的方法,這也是當初《嵌入式網(wǎng)絡那些事:LwIP協(xié)議深度剖析和實戰(zhàn)演練》一書的寫作初衷;第二,也是最基礎的,寫給那些需要學習TCP/IP的同學,TCP/IP的重要性就不在這里多說了,遙想筆者當年畢業(yè)找工作之季,輾轉(zhuǎn)于各大公司的招聘面試場所,TCP/IP真的是面試官最青睞的問題,筆者也恰好因為在這方面有著獨到的理解,因此順利拿下了國內(nèi)外眾多知名企業(yè)的offer,所以本書也想告訴那些正在努力的同學,學習TCP/IP是絕對值得的,這是一條康莊大道;第三,也是最重要的,嵌入式網(wǎng)絡離不開實踐,本書以目前流行的STM32處理器作為實踐平臺,讀者能在實驗平臺上實際運行、調(diào)試網(wǎng)絡應用程序,更可以修改協(xié)議棧內(nèi)核,修改的每一行代碼都能在實驗板上看出實際效果。
網(wǎng)絡編程大神們可以繞道了,這里沒有IPSec,沒有SSL,沒有并發(fā)服務器,沒有每秒上億次的服務請求,我們玩的是低端玩意;神秘黑客們也可以繞道了,這里沒有系統(tǒng)漏洞,沒有文件系統(tǒng),沒有賬號,玩不轉(zhuǎn)木馬,您都不屑于和我們較真。本書的使用者定位在嵌入式初學者、網(wǎng)絡初學者以及對LwIP應用有興趣或疑問的同學,你們一定可以在本書中找到想要的東西。
本書背景
TCP/IP技術(shù)是目前最流行的IT技術(shù)之一,也是當代互聯(lián)網(wǎng)及相關(guān)技術(shù)應用、發(fā)展的基石。近年來,TCP/IP技術(shù)在各大高校儼然已成為學習和研究的熱點;而另一方面,TCP/IP知識也成了各IT企業(yè)招聘時關(guān)注的重點問題。對于廣大TCP/IP初學者來說,要真正掌握并精通TCP/IP協(xié)議其實是有難度的:首先,TCP/IP是個非常龐大的協(xié)議簇,其源代碼一般只存在于各個大型操作系統(tǒng)內(nèi)核中,協(xié)議的整體結(jié)構(gòu)對于使用者來說不可見,學習者只能使用系統(tǒng)內(nèi)部提供的API完成網(wǎng)絡編程功能,但對協(xié)議內(nèi)部的實現(xiàn)細節(jié)并不明了,這樣TCP/IP的學習者只能停留在上層應用,如Socket編程的層次,而事實上,了解協(xié)議內(nèi)部運作細節(jié)是編寫高效可靠應用程序的基礎;其次,目前市場上針對TCP/IP的書籍較少,而與TCP/IP協(xié)議內(nèi)部機制相關(guān)的實驗書籍就更加缺乏了,讀者只能從書本上學到一些關(guān)于TCP/IP的基礎理論知識,但很難將這些理論用于實際編程實踐中,因為系統(tǒng)內(nèi)核對于讀者來說并不可見。
目前,嵌入式產(chǎn)品連入互聯(lián)網(wǎng)已成了越來越多企業(yè)關(guān)注的熱點,這使得在嵌入式產(chǎn)品上移植TCP/IP協(xié)議成為一種必然的趨勢。LwIP是應用于嵌入式領(lǐng)域的一款開源TCP/IP協(xié)議,它的實現(xiàn)同BSD的實現(xiàn)有很大的相似性,可以作為TCP/IP協(xié)議的典型代表,其功能完備,除了實現(xiàn)TCP/IP的基本通信功能外,其新版本還支持DNS、SNMP、DHCP、IGMP等高級應用功能。當前網(wǎng)絡上關(guān)于LwIP的討論很多,但市場上卻鮮見相關(guān)書籍。
本書特點
理論與實踐結(jié)合是本書編寫的一個重要出發(fā)點,不但讓讀者掌握TCP/IP理論知識,而且讓讀者通過實驗深入地理解并運用這些知識,達到學以致用的目的。首先,整個協(xié)議棧對讀者來說全部可見,這樣讀者能對TCP/IP協(xié)議有宏觀的把握,摒棄掉TCP/IP以往神秘的面紗;本書以網(wǎng)絡數(shù)據(jù)包在協(xié)議棧內(nèi)部的遞交順序為編寫導向,思路明顯,條理清楚,語言精簡幽默,更利于讀者對TCP/IP協(xié)議基本知識的理解;最后,本書內(nèi)容大部分建立在讀者開發(fā)經(jīng)驗之上,其中包括了很多LwIP在實際應用中遇到的問題及其解決方法,這對大部分剛接觸LwIP的嵌入式開發(fā)人員來說,有很大的指導意義。
概括來講,本書具有如下特點:
輕松詼諧的語言、簡單直白的講解能讓讀者擺脫閱讀時的枯燥感覺,技術(shù)學習也可以很輕松。從LwIP協(xié)議棧移植到網(wǎng)絡應用程序設計,內(nèi)容由淺入深,知識點覆蓋全面,特別適合于嵌入式初學人員。
協(xié)議與實現(xiàn)的完美結(jié)合。著眼于TCP/IP基本理論,以LwIP源代碼為基礎,全面講解TCP/IP協(xié)議的原理與具體實現(xiàn),全部源代碼對讀者可見,TCP/IP不再神秘,講解通俗,步驟詳細。每個案例的開發(fā)步驟都是以通俗易懂的語言闡述,并穿插圖片和表格。
理論與實踐并重。每章均配有實戰(zhàn)例程,讀者能直觀感受到各層協(xié)議在嵌入式設備組網(wǎng)過程中的實際應用,學習TCP/IP不再是紙上談兵。基于目前流行的STM32實驗平臺,可以幫助開發(fā)者快速上手嵌入式網(wǎng)絡編程,本書的許多實驗都可以抽象成一個基本的編程框架,學習者在學習的同時可以對框架進行填充裁剪等,基于框架快速完成應用程序開發(fā)。
目的明確,實用性強。本書可以作為嵌入式網(wǎng)絡開發(fā)人員的指導手冊,提供的許多應用程序可以直接用在開發(fā)項目中,縮短開發(fā)周期,節(jié)省開發(fā)成本;本書還會介紹并發(fā)服務器設計、協(xié)議棧性能測試、協(xié)議棧調(diào)試手段等知識,可以幫助開發(fā)者處理項目調(diào)試遇到的各種問題。
LwIP協(xié)議棧全部用C語言寫成,所有代碼對用戶可見,用戶可以宏觀地把握整個協(xié)議的代碼組織結(jié)構(gòu)。在本書中,通過在實驗板上移植、使用協(xié)議棧,讀者可以清楚地知道TCP/IP協(xié)議內(nèi)部各個機制的實現(xiàn)方法以及不同參數(shù)設置對協(xié)議棧內(nèi)核性能的影響,比如:如何自行配置TCP發(fā)送超時間隔與重發(fā)次數(shù)以滿足特定場合的需求,又如用戶可否根據(jù)實際使用情況更改TCP狀態(tài)機以提高內(nèi)核效率等。通過各個實驗,讀者可以清楚地看到整個協(xié)議的運行過程,加深對協(xié)議的理解。
組織結(jié)構(gòu)
本書以開源TCP/IP協(xié)議棧——LwIP的源代碼為基礎,詳細為讀者講解TCP/IP協(xié)議的內(nèi)部各層結(jié)構(gòu)與實現(xiàn)細節(jié),既包括ARP、ICMP、IGMP、IP、UDP、TCP等基本協(xié)議知識,也包括DHCP、DNS等高級應用知識,以LwIP為起點學習TCP/IP,將為廣大讀者各方面的學習創(chuàng)造捷徑。同時,LwIP代碼組織和實驗平臺搭建簡單,讀者可以方便地進行協(xié)議棧內(nèi)部的相關(guān)實驗。
如何簡單快速地在當前流行的STM32處理器上完成協(xié)議棧移植,如何快速上手協(xié)議棧應用編程,如何移植現(xiàn)有的通用網(wǎng)絡應用程序是許多讀者關(guān)心的重點。LwIP如何移植,有沒有一套普遍適用的流程,各種編程接口的調(diào)用規(guī)則與實際使用例子,都是本書中將涉及到的內(nèi)容。本書的許多應用程序代碼可以為開發(fā)者提供一個普遍使用的程序框架,開發(fā)者只需要在這個基礎上做簡單改動就可以編寫出適合自己的網(wǎng)絡應用程序。對于有一定經(jīng)驗的LwIP開發(fā)者來說,可能更加關(guān)注于內(nèi)核調(diào)試、協(xié)議棧穩(wěn)定性和性能、并發(fā)服務器設計等方面的內(nèi)容,也更期望看到LwIP在具體項目中的應用和實踐過程,這些也都是本書將涉及的內(nèi)容。
TCP/IP技術(shù)是互聯(lián)網(wǎng)技術(shù)發(fā)展的基礎,在各軟硬件IT企業(yè)招聘面試中,TCP/IP相關(guān)知識成為面試官青睞的問題,對于廣大學子來說,精通TCP/IP相關(guān)知識無疑將為自己打開一道成功擇業(yè)的大門。但目前很多人想學習TCP卻無處下手,這也成為許多初學者面臨的問題。通過本書,從基于STM32的網(wǎng)絡實驗入手,深入貫通TCP/IP理論及其應用,通過學習,讀者可以對協(xié)議棧、TCP/IP細節(jié)有很好的把握;另一方面,嵌入式系統(tǒng)的組網(wǎng)技術(shù)是目前流行的技術(shù),嵌入式網(wǎng)絡方向也是未來的熱點發(fā)展方向,本書將從嵌入式裸機出發(fā),向讀者講解網(wǎng)絡協(xié)議棧移植過程以及應用編程細節(jié),同時也包括了一些開發(fā)過程中常見的各種問題及解決方法,因此,對LwIP應用開發(fā)者來說,本書將是一本重要的指導手冊。
編者與致謝
本書由朱升林、歐陽駿、楊晶著,粟思科審。最后,筆者想感謝一年多來一直陪伴和幫助我的人,沒有你們的幫助和付出,這本書不會這么順利地完成,因為你們的存在,使得這段時光更加珍貴。
感謝LwIP技術(shù)交流群(群號:193936206、224362301)中的上千位網(wǎng)友,是你們每天孜孜不倦的學習和討論,讓LwIP這款開源軟件這幾年在國內(nèi)有了快速的成長和發(fā)展,謝謝你們的支持和肯定,大家的相互探討也讓我學到了很多東西。
感謝我的家人,是你們的寬容和細心幫我克服了生活中的許多困難和難題,你們的默默支持和付出是我繼續(xù)完成此書的最大動力。
同時參與本書編寫工作的還有:王治國、鐘曉林、王娟、胡靜、楊龍、張成林、方明、王波、陳小軍、雷曉 、李軍華、陳曉云、方鵬、龍帆、劉亞航、凌云鵬、陳龍、曹淑明、徐偉、楊陽、張宇、劉挺 、單琳、吳川、李鵬、李巖、朱榕、陳思濤和孫浩,在此一并表示感謝。
配套服務
感謝成都智造者科技有限公司(www.smartmaker.cn)為本書提供的STM32F103VET6-EV開發(fā)平臺,該平臺定位為物聯(lián)網(wǎng)領(lǐng)域的首款綜合性實驗平臺,本書基于該平臺的以太網(wǎng)接口實現(xiàn)了嵌入式產(chǎn)品的以太網(wǎng)入網(wǎng)實戰(zhàn)。此外,該平臺預留的接口可方便地擴展該公司的其他物聯(lián)網(wǎng)模塊,如ZigBee模塊、藍牙模塊、RFID模塊等,能快速地實現(xiàn)物聯(lián)網(wǎng)領(lǐng)域多種實踐。
本書中的所有實驗代碼讀者可以通過中國水利水電出版社或萬水書苑網(wǎng)站下載,網(wǎng)址為http://www.waterpub.com.cn/ softdown/和http://www.dgboyong.cn以下方式獲得。由于作者水平所限,網(wǎng)絡技術(shù)日新月異,本書難免存在錯誤和不妥之處,懇請廣大讀者批評指證。我們?yōu)樽x者和用戶盡心服務,圍繞協(xié)議、產(chǎn)品和項目市場,探討應用與發(fā)展,發(fā)掘熱點與重點;開展相關(guān)教學工作。TCP/IP協(xié)議俱樂部QQ:183090495,電子郵件hwhpc@163.com,歡迎TCP/IP協(xié)議愛好者和用戶聯(lián)系我們。
共同探討一直是學習的一種高效方式,值得指出的是,本書最后一節(jié)的LwIP常見問題與解決方法就得益于眾多網(wǎng)友的反饋,這里,再次對他們表示感謝。
第1章 實驗平臺背后的故事 1
1.1 嵌入式網(wǎng)絡技術(shù)一統(tǒng)江湖 1
1.1.1 嵌入式網(wǎng)絡的發(fā)展現(xiàn)狀 1
1.1.2 嵌入式LwIP協(xié)議棧 4
1.2 基于STM32的實驗平臺淺析 6
1.2.1 STM32處理器的興起 6
1.2.2 實驗平臺簡介 9
1.2.3 網(wǎng)卡連接情況 11
1.3 本書主要內(nèi)容 12
第2章 LwIP協(xié)議棧初體驗 15
2.1 廬山真面目之LwIP代碼結(jié)構(gòu) 15
2.1.1 LwIP簡介 15
2.1.2 源代碼結(jié)構(gòu) 17
2.2 怎樣用SI閱讀源代碼 22
2.3 千里之行從LwIP框架做起 27
2.3.1 協(xié)議棧分層思想 27
2.3.2 進程模型 30
2.3.3 協(xié)議棧編程接口 31
第3章 LwIP移植初探——無操作系統(tǒng)模擬層 35
3.1 移植說明 35
3.2 移植頭文件 37
3.3 網(wǎng)卡驅(qū)動編寫 40
3.4 安裝系統(tǒng)時鐘 47
3.5 協(xié)議棧初始化 47
3.6 查詢接收數(shù)據(jù)包 49
3.7 數(shù)據(jù)包中斷接收 51
3.8 如何定位Ping問題 53
第4章 內(nèi)核動力之源——內(nèi)存管理 55
4.1 內(nèi)存管理背后的故事 55
4.1.1 內(nèi)存管理概述 55
4.1.2 常見內(nèi)存分配策略 57
4.2 以不變應萬變——動態(tài)內(nèi)存池 59
4.2.1 數(shù)據(jù)結(jié)構(gòu)描述 59
4.2.2 函數(shù)實現(xiàn) 65
4.3 見招拆招——動態(tài)內(nèi)存堆 67
4.3.1 數(shù)據(jù)結(jié)構(gòu)描述 67
4.3.2 函數(shù)實現(xiàn) 69
4.4 其他內(nèi)存分配策略 74
第5章 網(wǎng)絡數(shù)據(jù)包——內(nèi)核血液 78
5.1 數(shù)據(jù)包管理的必要性 78
5.1.1 LwIP的分層特點 78
5.1.2 協(xié)議進程模型 80
5.2 數(shù)據(jù)包管理原理大揭密 80
5.2.1 數(shù)據(jù)包結(jié)構(gòu)pbuf 81
5.2.2 pbuf的類型 82
5.2.3 數(shù)據(jù)包申請函數(shù) 85
5.2.4 數(shù)據(jù)包釋放函數(shù) 88
5.2.5 其他數(shù)據(jù)包操作函數(shù) 90
第6章 網(wǎng)絡抽水機——網(wǎng)絡接口管理 92
6.1 引言 92
6.2 接口管理的始與末 93
6.2.1 數(shù)據(jù)結(jié)構(gòu) 93
6.2.2 函數(shù)實現(xiàn) 96
6.3 特殊的網(wǎng)絡接口——環(huán)回 99
6.3.1 實現(xiàn)原理 99
6.3.2 應用程序環(huán)回通信實戰(zhàn) 102
6.4 如何動態(tài)更改IP地址 109
6.4.1 重要函數(shù) 109
6.4.2 實戰(zhàn)程序 110
第7章 漫漫鵲橋路——ARP協(xié)議 113
7.1 ARP協(xié)議之掃盲篇 113
7.1.1 物理地址與網(wǎng)絡地址 113
7.1.2 ARP協(xié)議的本質(zhì) 115
7.2 關(guān)鍵數(shù)據(jù)結(jié)構(gòu) 117
7.2.1 ARP表 117
7.2.2 ARP報文 121
7.3 ARP之數(shù)據(jù)包引進來 126
7.3.1 以太網(wǎng)數(shù)據(jù)包遞交 126
7.3.2 ARP數(shù)據(jù)包處理 129
7.3.3 ARP攻擊 131
7.3.4 ARP緩存表的更新 132
7.4 ARP之數(shù)據(jù)包走出去 137
7.4.1 ARP層數(shù)據(jù)處理總流程 138
7.4.2 廣播包與多播包的發(fā)送 138
7.4.3 單播包的發(fā)送 140
第8章 互聯(lián)網(wǎng)身份證——網(wǎng)際協(xié)議(IP) 144
8.1 IP協(xié)議之掃盲班 144
8.1.1 概述 144
8.1.2 IP地址 145
8.1.3 特殊IP地址 147
8.1.4 子網(wǎng)劃分與子網(wǎng)掩碼 148
8.1.5 網(wǎng)絡地址轉(zhuǎn)換(NAT) 150
8.1.6 單播、多播與廣播 151
8.2 什么是IP數(shù)據(jù)報 153
8.2.1 數(shù)據(jù)報組成結(jié)構(gòu) 153
8.2.2 數(shù)據(jù)結(jié)構(gòu) 158
8.3 IP數(shù)據(jù)報之走出去 159
8.3.1 發(fā)送數(shù)據(jù)報 159
8.3.2 數(shù)據(jù)報分片 162
8.4 IP數(shù)據(jù)報之引進來 166
8.4.1 數(shù)據(jù)報接收 166
8.4.2 分片重裝數(shù)據(jù)結(jié)構(gòu) 171
8.4.3 分片重裝函數(shù) 174
8.4.4 分片插入與檢查 178
第9章 互聯(lián)網(wǎng)醫(yī)生——ICMP協(xié)議 182
9.1 ICMP掃盲班 182
9.1.1 ICMP協(xié)議 182
9.1.2 報文交付 183
9.1.3 報文類型 184
9.1.4 報文格式 185
9.1.5 差錯報文 185
9.1.6 查詢報文 188
9.2 ICMP實現(xiàn)大起底 189
9.2.1 數(shù)據(jù)結(jié)構(gòu) 189
9.2.2 發(fā)送差錯報文 191
9.2.3 ICMP報文的處理 192
9.2.4 ping命令 196
9.2.5 ICMP洪水 197
9.3 如何發(fā)送Ping請求 198
9.3.1 實現(xiàn)原理——raw_pcb 199
9.3.2 發(fā)送ping請求 200
9.3.3 測試結(jié)果 203
第10章 Raw API無招勝有招之UDP篇 205
10.1 UDP協(xié)議掃盲班 205
10.1.1 傳輸層協(xié)議 205
10.1.2 UDP協(xié)議 206
10.1.3 端口號 207
10.1.4 UDP報文的交付 208
10.1.5 UDP報文格式 209
10.1.6 UDP偽首部與校驗和 210
10.2 UDP數(shù)據(jù)結(jié)構(gòu)詳解 212
10.2.1 報文首部結(jié)構(gòu) 212
10.2.2 控制塊 212
10.3 UDP RAW編程秘籍 216
10.3.1 使用UDP編程 216
10.3.2 新建控制塊 216
10.3.3 綁定控制塊 217
10.3.4 連接控制塊 218
10.3.5 其他控制塊操作函數(shù) 219
10.4 UDP RAW編程初體驗 220
10.4.1 UDP編程秘訣 220
10.4.2 回送程序 221
10.4.3 測試結(jié)果 222
10.4.4 回調(diào)編程的缺陷 224
10.5 內(nèi)核報文處理細節(jié) 224
10.5.1 報文的發(fā)送 224
10.5.2 報文接收與遞交 228
10.6 挑戰(zhàn)更復雜的UDP應用 231
10.6.1 使用TFTP傳送文件 231
10.6.2 應用程序?qū)崿F(xiàn) 234
10.6.3 TFTP測試結(jié)果 242
第11章 Raw API無招勝有招之TCP篇 244
11.1 TCP協(xié)議大揭秘 244
11.1.1 TCP的必要性 244
11.1.2 TCP的特性 245
11.1.3 連接的定義 247
11.1.4 數(shù)據(jù)流編號 248
11.1.5 滑動窗口 248
11.2 TCP入門——報文 249
11.2.1 報文格式 249
11.2.2 TCP選項 251
11.2.3 緊急數(shù)據(jù) 252
11.2.4 強迫數(shù)據(jù)交互 253
11.2.5 報文首部數(shù)據(jù)結(jié)構(gòu) 253
11.3 TCP基礎——連接 254
11.3.1 建立連接 254
11.3.2 斷開連接 255
11.3.3 復位連接 256
11.3.4 TCP狀態(tài)轉(zhuǎn)換圖 257
11.3.5 特殊的狀態(tài)轉(zhuǎn)換 259
11.4 TCP核心——控制塊 260
11.4.1 控制塊數(shù)據(jù)結(jié)構(gòu) 260
11.4.2 控制塊鏈表 263
11.4.3 接收窗口 264
11.4.4 發(fā)送窗口 264
11.5 TCP RAW編程秘訣 265
11.5.1 控制塊新建 265
11.5.2 控制塊綁定 267
11.5.3 控制塊偵聽 267
11.5.4 控制塊連接 268
11.5.5 發(fā)送數(shù)據(jù) 270
11.5.6 關(guān)閉連接 270
11.5.7 其他函數(shù) 272
11.6 TCP RAW編程初體驗 272
11.6.1 TCP編程本質(zhì) 272
11.6.2 HTTP服務器 278
11.6.3 打不死的客戶端 280
11.7 TCP輸出處理細節(jié)放送 283
11.7.1 報文段緩沖 283
11.7.2 報文段構(gòu)建 285
11.7.3 報文段發(fā)送 287
11.8 TCP輸入處理細節(jié)放送 289
11.8.1 TCP層函數(shù)調(diào)用流程 289
11.8.2 報文輸入 291
11.8.3 TIME_WAIT狀態(tài)的報文處理 294
11.8.4 LISTEN狀態(tài)的報文處理 294
11.8.5 SYN攻擊 296
11.8.6 TCP狀態(tài)機函數(shù) 297
11.8.7 TCP數(shù)據(jù)輸入 301
11.9 可靠的傳輸服務 305
11.9.1 超時重傳與RTT估計 306
11.9.2 慢啟動與擁塞避免 311
11.9.3 快速重傳與快速恢復 314
11.9.4 糊涂窗口與避免 316
11.9.5 零窗口探查 319
11.9.6 保活機制 321
11.9.7 TCP定時器 322
11.10 挑戰(zhàn)更復雜的TCP應用 327
11.10.1 Telnet服務器 327
11.10.2 測試結(jié)果 333
第12章 LwIP乾坤大挪移——操作系統(tǒng)
模擬層 335
12.1 模擬層是怎樣煉成的 336
12.1.1 移植綜述 336
12.1.2 添加文件 338
12.1.3 修改頭文件lwipopts.h 339
12.1.4 頭文件sys_arch.h 339
12.1.5 全局變量與初始化 340
12.1.6 信號量函數(shù) 341
12.1.7 郵箱函數(shù) 343
12.1.8 創(chuàng)建新進程 348
12.1.9 修改內(nèi)核初始化函數(shù) 349
12.1.10 移植結(jié)果測試 350
12.2 Sequential API牛刀小試 350
12.2.1 回顯服務器 351
12.2.2 Web服務器 352
12.2.3 操作系統(tǒng)下的raw API 355
第13章 Sequential API大顯身手 356
13.1 探秘內(nèi)核定時事件 356
13.1.1 定時結(jié)構(gòu) 356
13.1.2 定時鏈表 357
13.1.3 內(nèi)核進程 359
13.1.4 處理定時事件 361
13.2 論消息機制的重要性 363
13.2.1 消息結(jié)構(gòu) 363
13.2.2 數(shù)據(jù)包消息 364
13.2.3 協(xié)議棧API實現(xiàn) 365
13.2.4 API消息 367
13.3 協(xié)議棧接口全搜羅 369
13.3.1 用戶數(shù)據(jù)緩沖netbuf 369
13.3.2 如何操作數(shù)據(jù)緩沖 371
13.3.3 連接結(jié)構(gòu)netconn 373
13.3.4 內(nèi)核回調(diào)接口 375
13.3.5 協(xié)議棧API秘籍 377
13.4 Sequential API大會戰(zhàn) 383
13.4.1 網(wǎng)頁控制設備 383
13.4.2 UDP性能測試 386
13.4.3 TCP性能測試 388
13.4.4 并發(fā)服務器 390
第14章 萬劍歸宗之Socket編程 395
14.1 套接字接口來龍去脈 395
14.1.1 如何實現(xiàn)Socket 395
14.1.2 套接字函數(shù)秘籍 397
14.2 Socket實戰(zhàn)大串燒 401
14.2.1 智能的TCP客戶端 402
14.2.2 UDP時間服務器 404
14.2.3 Winsock客戶端設計 406
14.3 基于Select的并發(fā)服務器 408
14.3.1 神奇的Select函數(shù) 409
14.3.2 Select原理全解析 410
14.3.3 Select實戰(zhàn)——并發(fā)服務器 419
第15章 LwIP工程實戰(zhàn)——物聯(lián)網(wǎng)關(guān) 424
15.1 項目背景 424
15.1.1 中央空調(diào)系統(tǒng)與溫控器 424
15.1.2 新需求的出現(xiàn) 427
15.1.3 要做什么與如何去做 430
15.2 智能網(wǎng)絡溫控器 431
15.2.1 溫控器實現(xiàn)方案 431
15.2.2 Modbus TCP服務器 432
15.3 物聯(lián)網(wǎng)關(guān)設計 440
15.3.1 物聯(lián)網(wǎng)關(guān)實現(xiàn)方案 440
15.3.2 網(wǎng)關(guān)服務器 441
15.4 現(xiàn)場調(diào)試與測試 446
15.4.1 溫控器測試 446
15.4.2 物聯(lián)網(wǎng)關(guān)測試 447
第16章 天下之術(shù)皆為我用—— LwIP高級篇 449
16.1 外網(wǎng)訪問之道——域名解析 449
16.1.1 域名系統(tǒng)(DNS) 449
16.1.2 DNS牛刀小試 450
16.1.3 下載外網(wǎng)數(shù)據(jù) 453
16.2 如何自動分配IP地址——DHCP 456
16.2.1 DHCP大講堂 456
16.2.2 DHCP之實現(xiàn)詳解 458
16.2.3 是騾子是馬——遛遛D(zhuǎn)HCP 460
16.3 如何實現(xiàn)組播——Internet組管理 464
16.3.1 IGMP協(xié)議大講堂 464
16.3.2 IGMP組播實踐 465
第17章 最后的戰(zhàn)役 468
17.1 如何配置協(xié)議棧 468
17.1.1 內(nèi)核配置文件opt.h 468
17.1.2 如何提高TCP性能 471
17.2 內(nèi)核調(diào)試常用方法 472
17.2.1 內(nèi)核日志輸出 472
17.2.2 網(wǎng)絡調(diào)試助手 474
17.2.3 Wireshark抓包 475
17.3 為了更好的明天 476
17.3.1 常見移植問題 476
17.3.2 常見應用問題 478
17.4 故事結(jié)局 483
參考文獻 484
- 計算機網(wǎng)絡實訓教程 [主編 張浩軍 趙玉娟]
- HCIA-Datacom認證題庫分類精講 [主 編 韓立剛]
- 網(wǎng)絡規(guī)劃設計師備考一本通 [夏杰 編著]
- 計算機網(wǎng)絡基礎 [主編 宋焱宏 李安邦]
- 網(wǎng)絡工程師備考一本通 [夏杰 編著]
- 軟件定義網(wǎng)絡技術(shù)與實踐 [主編 但唐仁]
- 計算機網(wǎng)絡技術(shù)項目化教程(微課版) [主編 王艷萍 安華萍]
- 網(wǎng)絡系統(tǒng)集成 [主編 唐繼勇 孫夢娜]
- 計算機網(wǎng)絡基礎創(chuàng)新教程(模塊化+課程思政版) [主編 唐繼勇 李旭]
- 路由交換技術(shù)項目化教程 [主編 范國娟]
- 計算機網(wǎng)絡創(chuàng)新教程 [韓立剛 編著]
- 數(shù)據(jù)通信與計算機網(wǎng)絡(第三版) [主 編 季福坤 錢文光]
- 計算機網(wǎng)絡技術(shù)基礎項目式教程 [主 編 柳 青 曾德生]
- 遨游數(shù)字時代——全球IT高管網(wǎng)絡安全秘籍 [[美] Palo Alto Networks 編]
- 計算機網(wǎng)絡基礎教程 [主 編 趙志茹 張尼奇 王宏斌]
- 計算機網(wǎng)絡技術(shù)基礎 [陳家遷]
- 網(wǎng)絡規(guī)劃設計師5天修煉 [朱小平 施游 編著]
- 計算機網(wǎng)絡實驗指導 [主編 吳東]
- 網(wǎng)絡工程師5天修煉(第三版) [朱小平 施游 編著]
- 計算機網(wǎng)絡原理與應用(第二版) [何小東 編著]
- 計算機網(wǎng)絡技術(shù)實訓教程 [主編 高良誠]
- 云計算與網(wǎng)絡安全 [主編 肖睿 徐文義]
- AutoCAD 網(wǎng)絡工程設計教程 [主編 劉通 董燦]
- 計算機網(wǎng)絡實訓創(chuàng)新教程(基于Cisco IOS) [主編 韓立剛]
- 計算機網(wǎng)絡原理創(chuàng)新教程 [主編 韓立剛]
- 深入理解計算機網(wǎng)絡 [王達]
- 交換機路由器配置與管理實訓教程 [主編 孫飛顯 靳曉婷]
- 網(wǎng)絡安全技術(shù)項目化教程 [主編 段新華 宋風忠]
- 計算機網(wǎng)絡基礎任務教程 [彭德林 金忠偉]
- 計算機網(wǎng)絡基礎應用 [主編 楊智勇 唐宏 ]