嵌入式網(wǎng)絡(luò)那些事:LwIP協(xié)議深度剖析與實戰(zhàn)演練

簡介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書
本書面向網(wǎng)絡(luò)TCP/IP協(xié)議初學(xué)者以及大量嵌入式網(wǎng)絡(luò)開發(fā)人員,從當(dāng)下流行的嵌入式網(wǎng)絡(luò)協(xié)議棧LwIP的源代碼入手,詳細(xì)講解TCP/IP協(xié)議的各層機(jī)制及其實現(xiàn)原理。同時,通過搭建簡單的實驗環(huán)境,還詳細(xì)闡述LwIP在嵌入式設(shè)備組網(wǎng)過程中的移植過程、應(yīng)用編程案例、編程框架、注意事項等。
本書可以作為TCP/IP學(xué)習(xí)者的快速入門及精通的指導(dǎo)書籍,配以簡易的實驗平臺及專門的實驗例程,讀者可以輕松學(xué)習(xí)TCP/IP協(xié)議內(nèi)的各種機(jī)制,通過實驗驗證,達(dá)到理論與實踐結(jié)合的目的;對于嵌入式初學(xué)者來說,本書具有相關(guān)的實驗平臺,通過對實驗平臺的學(xué)習(xí)與使用,初學(xué)者能快速實現(xiàn)嵌入式入門;最后,本書可以作為廣大嵌入式網(wǎng)絡(luò)開發(fā)人員的參考手冊。
本書實例的完整源代碼可以從萬水書苑網(wǎng)站上下載,網(wǎng)址為:http://www.waterpub. com.cn/softdown/和http://www.hzxbc.cn。
骨灰級TCP/IP專家、風(fēng)靡網(wǎng)絡(luò)的電子書《LwIP協(xié)議棧源碼詳解》朱升林老師傾情分享
超精彩!延續(xù)了電子書的語言及內(nèi)容風(fēng)格,輕松詼諧,簡單直白
超實戰(zhàn)!完整的實驗環(huán)境配合詳細(xì)的實驗步驟,使你修改的每一行代碼都可以在實驗板上看到效果。
超實用!囊括作者多年開發(fā)經(jīng)驗,助您輕松解決LwIP應(yīng)用中遇到的問題
搞嵌入式開發(fā),必學(xué)LwIP,你懂的。
LwIP菜鳥到骨灰:
CHA 01故事前傳→CHA 02有備而無患 →CHA 03讓板子跑起來→CHA 04快馬加鞭……CHA 16最后的戰(zhàn)役
輕松詼諧的寫作手法+簡單易懂的語言+源自實戰(zhàn)的開發(fā)經(jīng)驗=一條輕松學(xué)習(xí)LwIP技術(shù)之路
終于有了繼續(xù)碼字的機(jī)會。一年前在網(wǎng)上發(fā)布了電子版《LwIP協(xié)議棧源碼詳解——TCP/IP協(xié)議的實現(xiàn)》一書,也因此結(jié)識了許多LwIP應(yīng)用及嵌入式網(wǎng)絡(luò)編程的愛好者,他們之中有的是學(xué)生,正在竭力規(guī)劃著自己的未來;有的是IT公司職員,正努力完成Boss交給的項目;更有創(chuàng)業(yè)者,希望在嵌入式網(wǎng)絡(luò)方向賺下人生的第一桶金。但不管怎么樣,很高興有這么多人在關(guān)心和使用著LwIP,關(guān)注著嵌入式網(wǎng)絡(luò)的發(fā)展未來。電子版書籍發(fā)布至今,受到了諸多讀者的肯定和歡迎,筆者也收到了很多讀者郵件,大部分是關(guān)于協(xié)議棧移植、應(yīng)用編程等方面的問題。筆者也與很多讀者在網(wǎng)上有過面對面的交流,一直堅信,相互學(xué)習(xí)與探討才是進(jìn)步的關(guān)鍵,他們的困惑與學(xué)習(xí)渴望讓我覺得自己應(yīng)該做更多的事情。其實網(wǎng)絡(luò)電子版并不完善,一次在和一個讀者偶然的聊天中,有了將這本書完善并出版的想法,“有價格的東西才會更有價值”,你可能會覺得這句話有錯誤,但不管你信不信,我是信了(雖然馬克思經(jīng)濟(jì)學(xué)理論不是這樣說的)。在讀者、朋友及家人的鼓勵和支持下,筆者最終將想法付諸于實踐,一是為完成以前偷懶沒有完成的任務(wù),二是將廣大讀者使用過程中遇到的問題總結(jié)出來,以供大家借鑒。
寫本書的目的可以歸納為三點:第一,給需要使用LwIP的人一個借鑒和解決問題的方法,這也是當(dāng)初寫電子版的初衷;第二,也是最基礎(chǔ)的,寫給那些需要學(xué)習(xí)TCP/IP的同學(xué),TCP/IP的重要性就不在這里多說了,遙想筆者當(dāng)年畢業(yè)找工作之季,輾轉(zhuǎn)來回于各大公司的招聘面試場所,TCP/IP真的是各個面試官最青睞的問題,筆者也恰好因為在這方面有著獨到的理解,因此順利拿下了國內(nèi)外眾多知名企業(yè)的offer,所以本書也想告訴那些正在努力的同學(xué),學(xué)習(xí)TCP/IP是絕對值得的,這是一條康莊大道;第三,也是最重要的,嵌入式網(wǎng)絡(luò)當(dāng)然離不開實踐,本書力求在講網(wǎng)絡(luò)協(xié)議之前,給學(xué)習(xí)嵌入式的同學(xué)一個基礎(chǔ)的、易上手的嵌入式學(xué)習(xí)過程,在此之后,讀者能在實驗平臺上實際運行、調(diào)試網(wǎng)絡(luò)應(yīng)用程序,更可以修改協(xié)議棧內(nèi)核,你改的每一行代碼都能在實驗板上看出實際效果。
網(wǎng)絡(luò)編程大神們可以繞道了,這里沒有IPsec、沒有SSL、沒有并發(fā)服務(wù)器、沒有每秒上億次的服務(wù)請求,我們玩的是低端玩藝兒;神秘黑客們也可以繞道了,這里沒有系統(tǒng)漏洞、沒有文件系統(tǒng)、沒有賬號、玩不轉(zhuǎn)木馬,您都不屑于和我們較真。本書的使用者定位在嵌入式初學(xué)者、網(wǎng)絡(luò)初學(xué)者以及對LwIP應(yīng)用有興趣或疑問的同學(xué),你們一定可以在本書中找到想要的東西。
本書背景
TCP/IP技術(shù)是目前最流行的IT技術(shù)之一,也是當(dāng)代互聯(lián)網(wǎng)及相關(guān)技術(shù)應(yīng)用、發(fā)展的基石。近年來,TCP/IP技術(shù)在各大高校儼然已成為學(xué)習(xí)和研究的熱點,而另一方面,TCP/IP知識也成了各IT企業(yè)招聘時關(guān)注的重點問題。對于廣大TCP/IP初學(xué)者來說,要真正掌握并精通TCP/IP協(xié)議其實是有難度的:首先,TCP/IP是個非常龐大的協(xié)議族,其源代碼一般只存在于各個大型操作系統(tǒng)內(nèi)核中,協(xié)議的整體結(jié)構(gòu)對于使用者來說不可見,學(xué)習(xí)者只能使用系統(tǒng)內(nèi)部提供的API完成網(wǎng)絡(luò)編程功能,但對協(xié)議內(nèi)部的實現(xiàn)細(xì)節(jié)并不明了,這樣TCP/IP的學(xué)習(xí)者只能停留在上層應(yīng)用,如Socket編程的層次,而事實上,了解協(xié)議內(nèi)部運作細(xì)節(jié)是編寫高效可靠應(yīng)用程序的基礎(chǔ);其次,目前市場上針對TCP/IP的書籍較少,而與TCP/IP協(xié)議內(nèi)部機(jī)制相關(guān)的實驗書籍就更加缺乏了,讀者只能從書本上學(xué)到一些關(guān)于TCP/IP的基礎(chǔ)理論知識,但很難將這些理論用于實際編程實踐中,因為系統(tǒng)內(nèi)核對于讀者來說并不可見。
目前,嵌入式產(chǎn)品連入互聯(lián)網(wǎng)已成了越來越多企業(yè)關(guān)注的熱點,這使得在嵌入式產(chǎn)品上移植TCP/IP協(xié)議成為一種必然的趨勢。LwIP是應(yīng)用于嵌入式領(lǐng)域的一款開源TCP/IP協(xié)議,它的實現(xiàn)同BSD的實現(xiàn)有很大的相似性,可以作為TCP/IP協(xié)議的典型代表,它的功能完備,除了實現(xiàn)TCP/IP的基本通信功能外,其新版本還支持DNS、SNMP、DHCP、IGMP等高級應(yīng)用功能。當(dāng)前網(wǎng)絡(luò)上關(guān)于LwIP的討論很多,但市場上卻鮮見相關(guān)書籍。
本書特點
理論與實踐結(jié)合,是本書編寫的一個重要出發(fā)點,不但讓讀者掌握TCP/IP理論知識,而且讓讀者通過實驗深入地理解并運用這些知識,達(dá)到學(xué)以致用的目的。首先,整個協(xié)議棧對讀者來說全部可見,這樣讀者能對TCP/IP協(xié)議有宏觀的把握,擯棄掉TCP/IP以往神秘的面紗;本書以網(wǎng)絡(luò)數(shù)據(jù)包在協(xié)議棧內(nèi)部的遞交順序為編寫導(dǎo)向,思路明顯,條理清楚,語言精簡幽默,更利于讀者對TCP/IP協(xié)議基本知識的理解;最后,本書內(nèi)容大部分建立在筆者開發(fā)經(jīng)驗之上,其中包括了很多LwIP在實際應(yīng)用中遇到的問題及其解決方法,這對大部分剛接觸LwIP的嵌入式開發(fā)人員來說,具有很強(qiáng)的指導(dǎo)意義。
概括來講,本書具有如下特點:
延續(xù)了電子版的寫作手法,輕松詼諧的語言、簡單直白的講解能讓讀者擺脫閱讀時的枯燥感覺,技術(shù)學(xué)習(xí)也可以很輕松。
協(xié)議與實現(xiàn)的完美結(jié)合。著眼于TCP/IP基本理論,以LwIP源代碼為基礎(chǔ),全面講解TCP/IP協(xié)議的原理與具體實現(xiàn),由于協(xié)議棧全部源代碼對讀者可見,因此TCP/IP不再神秘。
理論與實踐并重。對各層協(xié)議盡量提供實驗例程或測試方法,簡單的實驗搭建環(huán)境,讀者能直觀感受到各層協(xié)議在嵌入式設(shè)備組網(wǎng)過程中的實際應(yīng)用,每個案例的開發(fā)步驟都以通俗易懂的語言闡述,并穿插必要的圖片和表格,學(xué)習(xí)TCP/IP不再是紙上談兵。
目的明確,實用性強(qiáng)。以嵌入式設(shè)備組網(wǎng)為目的,結(jié)合了筆者的大量實際開發(fā)經(jīng)驗,從系統(tǒng)啟動代碼編寫到操作系統(tǒng)移植,從LwIP協(xié)議棧移植到網(wǎng)絡(luò)應(yīng)用程序設(shè)計,內(nèi)容由淺入深,知識點覆蓋全面,特別適合于嵌入式初學(xué)人員。
LwIP協(xié)議棧全部用C寫成,所有源代碼對讀者可見,讀者可以宏觀把握整個協(xié)議的代碼組織結(jié)構(gòu)。在本書中,通過在實驗板上移植、使用協(xié)議棧,讀者可以清楚地知道TCP/IP協(xié)議內(nèi)部各個機(jī)制的實現(xiàn)方法以及不同參數(shù)設(shè)置對協(xié)議棧內(nèi)核性能的影響,例如:如何自行配置TCP發(fā)送超時間隔與重發(fā)次數(shù)以滿足特定場合的需求,又如可否根據(jù)實際使用情況更改TCP狀態(tài)機(jī)以提高內(nèi)核效率,再如可否自行構(gòu)建靜態(tài)ARP緩存表以提高協(xié)議棧響應(yīng)效率,等等。通過實驗,讀者可以清楚地看到整個協(xié)議的運行過程,加深對協(xié)議的理解。
組織結(jié)構(gòu)
本書以開源TCP/IP協(xié)議棧——LwIP的源代碼為基礎(chǔ),詳細(xì)為讀者講解TCP/IP協(xié)議的內(nèi)部各層結(jié)構(gòu)與實現(xiàn)細(xì)節(jié),既包括ARP、ICMP、IGMP、IP、UDP、TCP等基本協(xié)議知識,也包括DHCP、DNS等高級應(yīng)用知識,以LwIP為起點學(xué)習(xí)TCP/IP,將為廣大讀者各方面的學(xué)習(xí)創(chuàng)造捷徑。同時,LwIP代碼組織和實驗平臺搭建簡單,讀者可以方便地進(jìn)行協(xié)議棧內(nèi)部的相關(guān)實驗,通過對平臺搭建過程的學(xué)習(xí),讀者也可以了解到許多嵌入式領(lǐng)域入門基礎(chǔ)知識,如匯編程序、C編程基礎(chǔ)、編譯鏈接原理、嵌入式處理器、內(nèi)存管理、操作系統(tǒng)、任務(wù)管理、任務(wù)通信機(jī)制等。
TCP/IP技術(shù)是互聯(lián)網(wǎng)技術(shù)發(fā)展的基礎(chǔ),在各軟硬件IT企業(yè)招聘面試上,TCP/IP的知識成了面試官青睞的問題,對于廣大學(xué)子來說,精通TCP/IP相關(guān)知識,無疑將為自己打開一道成功擇業(yè)的大門。但目前很多學(xué)者想學(xué)習(xí)TCP卻無處下手,這成了許多初學(xué)者面臨的問題,通過本書,不論是從宏觀還是細(xì)節(jié)上,讀者都可以對TCP/IP協(xié)議有很好的把握。另一方面,嵌入式設(shè)備組網(wǎng)技術(shù)是目前流行的技術(shù),LwIP由于開源免費、功能齊全、性能優(yōu)越等特點成了嵌入式網(wǎng)絡(luò)領(lǐng)域使用的熱點,本書將從裸機(jī)出發(fā),向讀者講解網(wǎng)絡(luò)協(xié)議棧移植過程以及應(yīng)用編程細(xì)節(jié),同時也包括了一些開發(fā)過程中常見的各種問題及解決方法,因此,對LwIP應(yīng)用開發(fā)者來說,本書將是一本重要的指導(dǎo)手冊。
編者與致謝
本書由朱升林著,粟思科審校。最后,筆者想感謝一年多以來一直陪伴和幫助我的人,沒有你們的幫助和付出,這本書不會這么順利的完成,因為你們的存在,使得這段時光更加珍貴。同時參與本書編寫工作的人員還有:王治國、鐘曉林、王娟、胡靜、楊龍、張成林、方明、王波、陳小軍、雷曉、李軍華、陳曉云、方鵬、龍帆、劉亞航、凌云鵬、陳龍、曹淑明、徐偉、楊陽、張宇、劉挺、單琳、吳川、李鵬、李巖、朱榕、陳思濤和孫浩,在此一并表示感謝。
感謝對本書電子版提出過改進(jìn)建議和支持的眾多網(wǎng)友朋友,感謝笑迎冬風(fēng),感謝sailing,感謝關(guān)海山,還有2K100、Aimar、M刀、WISCO……,還有許多不能在這里一一列出名字的網(wǎng)友,謝謝你們的支持和肯定,與大家的探討也讓我學(xué)到了很多東西。
感謝我的父母和親友們,是你們的寬容和細(xì)心幫我克服了生活中的許多困難和難題,你們的默默支持和付出是我完成此書的最大動力。
配套服務(wù)
我們?yōu)樽x者和用戶盡心服務(wù),圍繞協(xié)議、產(chǎn)品和項目市場,探討應(yīng)用與發(fā)展,發(fā)掘熱點與重點;開展相關(guān)教學(xué)工作。TCP/IP協(xié)議俱樂部QQ:183090495,電子郵件[email protected],歡迎TCP/IP協(xié)議愛好者和用戶聯(lián)系。
由于作者水平所限,網(wǎng)絡(luò)技術(shù)也日新月異,本書難免存在錯誤和不妥之處,懇請廣大讀者批評指證。共同探討,始終是學(xué)習(xí)的一種高效方式,值得指出的是,本書最后一節(jié)的LwIP常見問題與解決方法就得益于眾多網(wǎng)友的反饋,這里再次對他們表示感謝。
1.1 背景知識 1
1.1.1 嵌入式網(wǎng)絡(luò)概述 1
1.1.2 寫作背景 3
1.1.3 幾個疑問 4
1.2 TCP/IP掃盲班 5
1.2.1 OSI模型 5
1.2.2 TCP/IP協(xié)議 5
1.2.3 OSI模型 VS TCP/IP模型 7
1.2.4 嵌入式TCP/IP協(xié)議棧 8
1.3 旅行集結(jié)號 9
1.3.1 實驗環(huán)境說明 9
1.3.2 本書內(nèi)容概述 10
1.3.3 一起出發(fā) 12
第2章 有備而無患 13
2.1 傳說中的ARM微處理器 13
2.1.1 背景知識 13
2.1.2 存儲器組織結(jié)構(gòu) 15
2.1.3 指令系統(tǒng) 17
2.1.4 數(shù)據(jù)類型與存儲格式 19
2.1.5 處理器狀態(tài)與處理器模式 21
2.1.6 寄存器組織 23
2.1.7 異常處理 28
2.2 S3C44B0X初體驗 32
2.2.1 簡介 32
2.2.2 存儲管理器 34
2.2.3 中斷控制器 39
2.2.4 其他模塊 42
2.3 ARM匯編真經(jīng) 46
2.3.1 簡介 46
2.3.2 ARM指令集編碼格式 46
2.3.3 ARM尋址方式 48
2.3.4 ARM指令集簡介 53
2.3.5 ARM匯編語言 55
第3章 讓板子跑起來 65
3.1 ARM開發(fā)工具 65
3.1.1 ADS簡介 65
3.1.2 ARM匯編器 70
3.1.3 ARM編譯器 71
3.1.4 ARM連接器 78
3.2 程序的調(diào)試 83
3.2.1 幾種調(diào)試方式 83
3.2.2 AXD調(diào)試器 87
3.2.3 ARMulator的使用 90
3.3 編寫啟動代碼 91
3.3.1 開發(fā)板結(jié)構(gòu) 91
3.3.2 啟動代碼講解 92
3.3.3 幾個測試程序 108
第4章 快馬加鞭 115
4.1 嵌入式實時操作系統(tǒng) 116
4.1.1 概述 116
4.1.2 μC/OS-II的文件結(jié)構(gòu) 118
4.1.3 μC/OS-II中的任務(wù) 120
4.1.4 就緒任務(wù)的管理 126
4.1.5 任務(wù)堆棧 129
4.2 移植μC/OS-II實時操作系統(tǒng) 130
4.2.1 概述 130
4.2.2 編寫OS_CPU.H 132
4.2.3 編寫OS_CPU_C.C 134
4.2.4 編寫OS_CPU_A.S 138
4.3 測試程序 145
4.3.1 系統(tǒng)時鐘 145
4.3.2 第一個測試程序 146
4.3.3 第二個測試程序 147
第5章 無操作系統(tǒng)模擬層LwIP的移植 150
5.1 LwIP綜述 150
5.1.1 簡介 150
5.1.2 用SI閱讀源代碼 156
5.2 移植工作 160
5.2.1 移植頭文件 160
5.2.2 RTL8019AS網(wǎng)卡 163
5.2.3 編寫網(wǎng)卡驅(qū)動程序 176
5.3 測試程序 186
5.3.1 協(xié)議棧初始化 186
5.3.2 數(shù)據(jù)包的查詢接收 188
5.3.3 數(shù)據(jù)包的中斷接收 191
5.3.4 一個簡單的TCP服務(wù)器 193
5.3.5 移植小結(jié) 195
第6章 動態(tài)內(nèi)存管理 196
6.1 背景知識 196
6.1.1 內(nèi)存管理概述 196
6.1.2 常見內(nèi)存分配策略 198
6.2 動態(tài)內(nèi)存池 200
6.2.1 數(shù)據(jù)結(jié)構(gòu)描述 200
6.2.2 函數(shù)實現(xiàn) 205
6.3 動態(tài)內(nèi)存堆 207
6.3.1 數(shù)據(jù)結(jié)構(gòu)描述 208
6.3.2 函數(shù)實現(xiàn) 209
6.4 其他內(nèi)存分配策略 214
第7章 數(shù)據(jù)包管理 218
7.1 預(yù)備知識 218
7.1.1 LwIP的分層特點 218
7.1.2 協(xié)議進(jìn)程模型 219
7.2 數(shù)據(jù)包管理 220
7.2.1 數(shù)據(jù)包結(jié)構(gòu)pbuf 221
7.2.2 pbuf的類型 221
7.2.3 數(shù)據(jù)包申請函數(shù) 224
7.2.4 數(shù)據(jù)包釋放函數(shù) 227
7.2.5 其他數(shù)據(jù)包操作函數(shù) 229
第8章 網(wǎng)絡(luò)接口管理 230
8.1 引言 230
8.2 網(wǎng)絡(luò)接口結(jié)構(gòu) 231
8.2.1 數(shù)據(jù)結(jié)構(gòu) 231
8.2.2 函數(shù)實現(xiàn) 234
8.3 環(huán)回接口 236
8.3.1 相關(guān)函數(shù) 236
8.3.2 實驗程序 238
第9章 ARP協(xié)議 242
9.1 ARP協(xié)議簡介 242
9.1.1 物理地址與網(wǎng)絡(luò)地址 242
9.1.2 ARP協(xié)議的本質(zhì) 243
9.2 數(shù)據(jù)結(jié)構(gòu) 245
9.2.1 ARP表 245
9.2.2 ARP報文 249
9.3 ARP層數(shù)據(jù)包輸入 253
9.3.1 以太網(wǎng)數(shù)據(jù)包遞交 253
9.3.2 ARP數(shù)據(jù)包處理 255
9.3.3 ARP攻擊 258
9.3.4 ARP緩存表的更新 259
9.4 ARP層數(shù)據(jù)包輸出 263
9.4.1 ARP層數(shù)據(jù)處理總流程 263
9.4.2 廣播包與多播包的發(fā)送 264
9.4.3 單播包的發(fā)送 266
第10章 網(wǎng)際協(xié)議(IP) 269
10.1 相關(guān)知識 269
10.1.1 概述 269
10.1.2 IP地址 270
10.1.3 特殊IP地址 271
10.1.4 子網(wǎng)劃分與子網(wǎng)掩碼 273
10.1.5 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 275
10.1.6 單播、多播與廣播 276
10.2 數(shù)據(jù)報 277
10.2.1 數(shù)據(jù)報組成結(jié)構(gòu) 277
10.2.2 數(shù)據(jù)結(jié)構(gòu) 282
10.3 IP層輸出 283
10.3.1 發(fā)送數(shù)據(jù)報 283
10.3.2 數(shù)據(jù)報分片 286
10.4 IP層輸入 289
10.4.1 數(shù)據(jù)報接收 290
10.4.2 分片重裝數(shù)據(jù)結(jié)構(gòu) 294
10.4.3 分片重裝函數(shù) 297
10.4.4 分片插入與檢查 300
第11章 網(wǎng)際控制報文協(xié)議(ICMP) 303
11.1 基本知識 303
11.1.1 ICMP協(xié)議 303
11.1.2 報文交付 304
11.1.3 報文類型 304
11.1.4 報文格式 306
11.1.5 差錯報文 306
11.1.6 查詢報文 308
11.2 ICMP的實現(xiàn) 309
11.2.1 數(shù)據(jù)結(jié)構(gòu) 310
11.2.2 發(fā)送差錯報文 311
11.2.3 ICMP報文的處理 312
11.2.4 ping命令 315
11.2.5 ICMP洪水 316
第12章 用戶數(shù)據(jù)報協(xié)議(UDP) 319
12.1 背景知識 319
12.1.1 傳輸層協(xié)議 319
12.1.2 UDP協(xié)議 320
12.1.3 端口號 321
12.1.4 UDP報文的交付 322
12.1.5 UDP報文格式 322
12.1.6 UDP偽首部與校驗和 324
12.2 UDP數(shù)據(jù)結(jié)構(gòu) 325
12.2.1 報文首部結(jié)構(gòu) 325
12.2.2 控制塊 326
12.3 控制塊操作函數(shù) 329
12.3.1 使用UDP編程 329
12.3.2 新建控制塊 329
12.3.3 綁定控制塊 329
12.3.4 連接控制塊 331
12.3.5 其他控制塊操作函數(shù) 332
12.4 報文處理函數(shù) 333
12.4.1 報文的發(fā)送 333
12.4.2 報文接收與遞交 335
12.5 測試程序 338
12.5.1 回送程序 338
12.5.2 測試結(jié)果 339
12.5.3 回調(diào)編程的缺陷 339
第13章 傳輸控制協(xié)議(TCP) 341
13.1 協(xié)議簡介 341
13.1.1 TCP的必要性 341
13.1.2 TCP的特性 342
13.1.3 連接的定義 344
13.1.4 數(shù)據(jù)流編號 345
13.1.5 滑動窗口 345
13.2 TCP報文 346
13.2.1 報文格式 346
13.2.2 TCP選項 348
13.2.3 緊急數(shù)據(jù) 349
13.2.4 強(qiáng)迫數(shù)據(jù)交互 349
13.2.5 報文首部數(shù)據(jù)結(jié)構(gòu) 350
13.3 TCP連接 350
13.3.1 建立連接 350
13.3.2 斷開連接 351
13.3.3 復(fù)位連接 352
13.3.4 TCP狀態(tài)轉(zhuǎn)換圖 353
13.3.5 特殊的狀態(tài)轉(zhuǎn)換 355
13.4 TCP控制塊 356
13.4.1 控制塊數(shù)據(jù)結(jié)構(gòu) 356
13.4.2 控制塊鏈表 358
13.4.3 接收窗口 359
13.4.4 發(fā)送窗口 359
13.5 TCP編程函數(shù) 360
13.5.1 控制塊新建 360
13.5.2 控制塊綁定 361
13.5.3 控制塊偵聽 362
13.5.4 控制塊連接 363
13.5.5 發(fā)送數(shù)據(jù) 364
13.5.6 關(guān)閉連接 365
13.5.7 其他函數(shù) 366
13.6 TCP輸出處理 366
13.6.1 報文段緩沖 366
13.6.2 報文段構(gòu)建 367
13.6.3 報文段發(fā)送 370
13.7 TCP輸入處理 372
13.7.1 TCP層函數(shù)調(diào)用流程 372
13.7.2 報文輸入 373
13.7.3 TIME_WAIT狀態(tài)的報文處理 376
13.7.4 LISTEN狀態(tài)的報文處理 376
13.7.5 SYN攻擊 378
13.7.6 TCP狀態(tài)機(jī)函數(shù) 379
13.7.7 TCP數(shù)據(jù)輸入 382
13.8 可靠的傳輸服務(wù) 387
13.8.1 超時重傳與RTT估計 387
13.8.2 慢啟動與擁塞避免 392
13.8.3 快速重傳與快速恢復(fù) 395
13.8.4 糊涂窗口與避免 397
13.8.5 零窗口探查 399
13.8.6 保活機(jī)制 401
13.8.7 TCP定時器 403
13.9 測試程序 406
13.9.1 Telnet服務(wù)器 406
13.9.2 測試結(jié)果 409
第14章 移植操作系統(tǒng)模擬層 411
14.1 移植過程 411
14.1.1 移植綜述 411
14.1.2 添加文件 413
14.1.3 修改頭文件lwipopts.h 414
14.1.4 頭文件sys_arch.h 414
14.1.5 全局變量與初始化 415
14.1.6 信號量函數(shù) 416
14.1.7 郵箱函數(shù) 417
14.1.8 超時相關(guān)函數(shù) 420
14.1.9 創(chuàng)建新進(jìn)程 420
14.2 測試程序 421
14.2.1 初始化函數(shù) 421
14.2.2 簡單的HTTP服務(wù)器 421
14.2.3 測試結(jié)果 422
第15章 用戶編程接口 424
15.1 定時事件 424
15.1.1 定時結(jié)構(gòu) 424
15.1.2 定時鏈表 425
15.1.3 內(nèi)核進(jìn)程 427
15.1.4 處理定時事件 428
15.2 消息機(jī)制 430
15.2.1 消息結(jié)構(gòu) 430
15.2.2 數(shù)據(jù)包消息 431
15.2.3 協(xié)議棧API實現(xiàn) 432
15.2.4 API消息 434
15.3 協(xié)議棧接口 436
15.3.1 用戶數(shù)據(jù)緩沖netbuf 436
15.3.2 數(shù)據(jù)緩沖操作 436
15.3.3 連接結(jié)構(gòu)netconn 439
15.3.4 內(nèi)核回調(diào)接口 441
15.3.5 協(xié)議棧API函數(shù) 443
15.3.6 測試程序 448
15.4 套接字接口 450
15.4.1 socket的實現(xiàn) 450
15.4.2 套接字函數(shù) 451
15.4.3 測試程序 453
第16章 最后的戰(zhàn)役 457
16.1 域名解析 457
16.1.1 域名系統(tǒng)(DNS) 457
16.1.2 測試程序 458
16.1.3 測試結(jié)果 460
16.2 動態(tài)主機(jī)配置 460
16.2.1 DHCP協(xié)議 460
16.2.2 測試程序 461
16.2.3 測試結(jié)果 463
16.3 Internet組管理 464
16.3.1 IGMP協(xié)議 464
16.3.2 測試程序 465
16.3.3 測試結(jié)果 466
16.4 終結(jié)篇 467
16.4.1 常見問題及解決方法 467
16.4.2 故事結(jié)局 473
參考文獻(xiàn) 474
- 計算機(jī)網(wǎng)絡(luò)原理及應(yīng)用 [主編 唐繼勇 葉坤 孫夢娜]
- 計算機(jī)網(wǎng)絡(luò)技術(shù)實訓(xùn)教程(第二版) [主編 高良誠]
- 計算機(jī)網(wǎng)絡(luò)實訓(xùn)教程 [主編 張浩軍 趙玉娟]
- HCIA-Datacom認(rèn)證題庫分類精講 [主 編 韓立剛]
- 網(wǎng)絡(luò)規(guī)劃設(shè)計師備考一本通 [夏杰 編著]
- 計算機(jī)網(wǎng)絡(luò)基礎(chǔ) [主編 宋焱宏 李安邦]
- 網(wǎng)絡(luò)工程師備考一本通 [夏杰 編著]
- 軟件定義網(wǎng)絡(luò)技術(shù)與實踐 [主編 但唐仁]
- 計算機(jī)網(wǎng)絡(luò)技術(shù)項目化教程(微課版) [主編 王艷萍 安華萍]
- 網(wǎng)絡(luò)系統(tǒng)集成 [主編 唐繼勇 孫夢娜]
- 計算機(jī)網(wǎng)絡(luò)基礎(chǔ)創(chuàng)新教程(模塊化+課程思政版) [主編 唐繼勇 李旭]
- 路由交換技術(shù)項目化教程 [主編 范國娟]
- 計算機(jī)網(wǎng)絡(luò)創(chuàng)新教程 [韓立剛 編著]
- 數(shù)據(jù)通信與計算機(jī)網(wǎng)絡(luò)(第三版) [主 編 季福坤 錢文光]
- 計算機(jī)網(wǎng)絡(luò)技術(shù)基礎(chǔ)項目式教程 [主 編 柳 青 曾德生]
- 遨游數(shù)字時代——全球IT高管網(wǎng)絡(luò)安全秘籍 [[美] Palo Alto Networks 編]
- 計算機(jī)網(wǎng)絡(luò)基礎(chǔ)教程 [主 編 趙志茹 張尼奇 王宏斌]
- 計算機(jī)網(wǎng)絡(luò)技術(shù)基礎(chǔ) [陳家遷]
- 網(wǎng)絡(luò)規(guī)劃設(shè)計師5天修煉 [朱小平 施游 編著]
- 計算機(jī)網(wǎng)絡(luò)實驗指導(dǎo) [主編 吳東]
- 網(wǎng)絡(luò)工程師5天修煉(第三版) [朱小平 施游 編著]
- 計算機(jī)網(wǎng)絡(luò)原理與應(yīng)用(第二版) [何小東 編著]
- 計算機(jī)網(wǎng)絡(luò)技術(shù)實訓(xùn)教程 [主編 高良誠]
- 云計算與網(wǎng)絡(luò)安全 [主編 肖睿 徐文義]
- AutoCAD 網(wǎng)絡(luò)工程設(shè)計教程 [主編 劉通 董燦]
- 計算機(jī)網(wǎng)絡(luò)實訓(xùn)創(chuàng)新教程(基于Cisco IOS) [主編 韓立剛]
- 計算機(jī)網(wǎng)絡(luò)原理創(chuàng)新教程 [主編 韓立剛]
- 深入理解計算機(jī)網(wǎng)絡(luò) [王達(dá)]
- 交換機(jī)路由器配置與管理實訓(xùn)教程 [主編 孫飛顯 靳曉婷]
- 網(wǎng)絡(luò)安全技術(shù)項目化教程 [主編 段新華 宋風(fēng)忠]