出版時間:2010-1 出版社:人民郵電 作者:曹桂平 頁數(shù):809
Tag標(biāo)簽:無
前言
早在2001年年初我創(chuàng)辦《永遠(yuǎn)的UNIX》(fanqiang.com)網(wǎng)站時,就夢想有一天能將眾多技術(shù)高手的工作經(jīng)驗(yàn)集結(jié)成冊,使廣大網(wǎng)友在實(shí)際應(yīng)用中能隨手翻查。那時候國內(nèi)愛好者的學(xué)習(xí)熱情很高,為了給網(wǎng)友提供一個更易于互動交流的平臺,我在2001年年底創(chuàng)建了www.chinaunix.net社區(qū)網(wǎng)站(簡稱CU)。經(jīng)過8年的發(fā)展,在廣大CLIer的支持下,CU社區(qū)的注冊用戶已經(jīng)超過百萬,ChinaLlnix已經(jīng)成為全球最大、人氣最旺的以交流Linux、UNIX和開源技術(shù)為主的中文社區(qū)。CU網(wǎng)站聚集了大量富有工作經(jīng)驗(yàn)的系統(tǒng)架構(gòu)師、軟件工程師、DBA和網(wǎng)絡(luò)架構(gòu)工程師等,她已經(jīng)成為廣大開源技術(shù)愛好者學(xué)習(xí)、工作和生活中不可缺少的伙伴。隨著網(wǎng)站一點(diǎn)點(diǎn)壯大,網(wǎng)友也不斷成長起來。大量的版主利用業(yè)余時間義務(wù)解答網(wǎng)友問題、維護(hù)論壇版塊秩序、服務(wù)廣大網(wǎng)友。很多網(wǎng)友將自己的學(xué)習(xí)、工作經(jīng)驗(yàn)發(fā)帖分享出來,更有網(wǎng)友花費(fèi)大量時間將自己多年的經(jīng)驗(yàn)整理成書,供更多的人學(xué)習(xí)、分享。他們的成長是國內(nèi)技術(shù)社區(qū)成長的基礎(chǔ),也必將推動國內(nèi)技術(shù)社區(qū)的進(jìn)一步發(fā)展。今天,在CU管理員瑞兒mm(周平)、人民郵電出版社的李大微經(jīng)理、黃焱編輯和廣大CU作者們的共同努力下,這套“ChinaUnix技術(shù)圖書大系”終于和大家見面了,非常感謝人民郵電出版社的鼎立支持!人民郵電出版社是工業(yè)和信息化部主管的大型專業(yè)出版社,他們出版了一系列優(yōu)秀的圖書,在讀者中有著巨大的影響力。
內(nèi)容概要
本書主要對Linux 1.2.13內(nèi)核協(xié)議棧的全部源代碼做了詳細(xì)的分析,該版本所有代碼都在一個文件夾中,每種協(xié)議的實(shí)現(xiàn)都只有一個文件與之對應(yīng),分析該版本源代碼可以方便讀者迅速掌握Linux網(wǎng)絡(luò)協(xié)議結(jié)構(gòu)?! ”緯卜譃?個部分。具體內(nèi)容包括網(wǎng)絡(luò)??傮w架構(gòu)分析、網(wǎng)絡(luò)協(xié)議頭文件分析、BSD socket層實(shí)現(xiàn)分析、INET socket層實(shí)現(xiàn)分析、網(wǎng)絡(luò)層實(shí)現(xiàn)分析、鏈路層實(shí)現(xiàn)分析、網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析、系統(tǒng)網(wǎng)絡(luò)棧初始化等內(nèi)容。 本書適合Linux網(wǎng)絡(luò)開發(fā)人員及Linux內(nèi)核愛好者閱讀。
作者簡介
曹桂平:中國科學(xué)技術(shù)大學(xué)博士,對操作系統(tǒng)和網(wǎng)絡(luò)技術(shù)具有極其深厚的興趣,精通Linux內(nèi)核及其網(wǎng)絡(luò)線,ARM、PowerPC體系結(jié)構(gòu),曾開發(fā)Linux、Vxworks等平臺的設(shè)備驅(qū)動,目前正致力于高速高精度數(shù)據(jù)采集方面的研究。
書籍目錄
第1部分 網(wǎng)絡(luò)??傮w架構(gòu) 第0章 網(wǎng)絡(luò)棧總體架構(gòu)分析 0.1 網(wǎng)絡(luò)棧本質(zhì)及其分層架構(gòu) 0.2 系統(tǒng)調(diào)用接口到內(nèi)核的請求傳遞 0.2.1 第一層入口:accept.S文件 0.2.2 第二層入口:socket.S文件 0.2.3 第三層入口:entry.S文件 第2部分 網(wǎng)絡(luò)協(xié)議 第1章 網(wǎng)絡(luò)協(xié)議頭文件分析 1.1 etherdevice.h頭文件 1.2 icmp.h頭文件 1.3 if.h頭文件 1.4 if_arp.h頭文件 1.5 if_ether.h頭文件 1.6 if_plip.h頭文件 1.7 if_slip.h頭文件 1.8 igmp.h頭文件 1.9 in.h頭文件 1.10 inet.h頭文件 1.11 interrupt.h頭文件 1.12 ip.h頭文件 1.13 ip_fw.h頭文件 1.14 ipx.h頭文件 1.15 net.h頭文件 1.16 netdevice.h頭文件 1.17 notifier.h頭文件 1.18 ppp.h頭文件 1.19 route.h頭文件 1.20 skbuff.h頭文件 1.21 socket.h頭文件 1.22 sockios.h頭文件 1.23 tcp.h頭文件 1.24 timer.h頭文件 1.25 udp.h頭文件 1.26 un.h頭文件 1.27 本章小結(jié) 第3部分 網(wǎng)絡(luò)棧實(shí)現(xiàn)分析 第2章 BSD socket層實(shí)現(xiàn)分析 2.1 protocols.c文件 2.2 socket.c文件 2.2.1 頭文件聲明、全局變量定義、相關(guān)函數(shù)聲明 2.2.2 move_addr_to_kernel和move_addr_to_user函數(shù) 2.2.3 get_fd函數(shù) 2.2.4 socki_lookup和sockfd_lookup函數(shù) 2.2.5 sock_alloc函數(shù) 2.2.6 sock_release_peer、sock_release和sock_close函數(shù) 2.2.7 網(wǎng)絡(luò)套接字普通文件接口函數(shù) 2.2.8 sock_awaitconn函數(shù) 2.2.9 sock_socket函數(shù) 2.2.10 sock_socketpair函數(shù) 2.2.11 sock_bind函數(shù) 2.2.12 sock_listen函數(shù) 2.2.13 sock_accept函數(shù) 2.2.14 sock_connect函數(shù) 2.2.15 sock_getsockname和sock_getpeername函數(shù) 2.2.16 sock_send和sock_sendto函數(shù) 2.2.17 sock_recv和sock_recvfrom函數(shù) 2.2.18 sock_setsockopt和sock_getsockopt函數(shù) 2.2.19 sock_shutdown函數(shù) 2.2.20 sock_fcntl函數(shù) 2.2.21 sys_socketcall函數(shù) 2.2.22 sock_register和sock_unregister函數(shù) 2.2.23 proto_init函數(shù) 2.2.24 sock_init函數(shù) 2.2.25 socket_get_info函數(shù) 2.2.26 socket.c文件小結(jié) 第3章 INET socket層實(shí)現(xiàn)分析 第4章 傳輸層實(shí)現(xiàn)分析 第5章 網(wǎng)絡(luò)層實(shí)現(xiàn)分析 第6章 鏈路層實(shí)現(xiàn)分析第4部分 網(wǎng)絡(luò)設(shè)備驅(qū)動程序 第7章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序分析 第5部分 系統(tǒng)網(wǎng)絡(luò)棧初始化 第8章 系統(tǒng)網(wǎng)絡(luò)棧初始化 附錄A TCP協(xié)議可靠性數(shù)據(jù)傳輸實(shí)現(xiàn)原理分析 主要參考文獻(xiàn)
章節(jié)摘錄
插圖:該字段是一個聯(lián)合類型,表示了數(shù)據(jù)包在不同處理層次上所到達(dá)的處理位置。如在鏈路層上,eth指針有效,指向以太網(wǎng)首部第一個字節(jié)位置;在網(wǎng)絡(luò)層上,iph指針有效指向IP首部第一個字節(jié)位置。raw指針隨層次變化而變化,在鏈路層上時,其等于eth,在網(wǎng)絡(luò)層上時,其等于iph。seq是針對使用TCP協(xié)議的待發(fā)送數(shù)據(jù)包而言的,此時該字段值表示該數(shù)據(jù)包的,ACK值。ACK值等于數(shù)據(jù)包中第一個數(shù)據(jù)的序列號加上數(shù)據(jù)的長度值。iphdr:指向IP首部的指針,此處特別地分出了一個字段用于指向IP首部,主要用于RAW套接字。mem-len:該字段表示skbuff結(jié)構(gòu)大小加上數(shù)據(jù)幀的總長度。len:該字段只表示數(shù)據(jù)幀長度,即len=mem-len-sizeof fraglen、fraglist:這兩個字段用于分片數(shù)據(jù)包。。fraglen表示分片數(shù)據(jù)包個數(shù),而fraglist指向分片數(shù)據(jù)包隊(duì)列。truesize.意義同mem-len。sad&:數(shù)據(jù)包發(fā)送的源端IP地址。daddr:數(shù)據(jù)包最終目的端IP地址。raddr:數(shù)據(jù)包下一站IP地址。acked、used、flee、arp:acked=1表示該數(shù)據(jù)包已得到確認(rèn),可以從重發(fā)隊(duì)列中刪除。used=l表示該數(shù)據(jù)包的數(shù)據(jù)已被應(yīng)用程序讀完,可以進(jìn)行釋放。free=1用于數(shù)據(jù)包發(fā)送,當(dāng)某個待發(fā)送數(shù)據(jù)包flee標(biāo)志位等于l,則表示無論該數(shù)據(jù)包是否發(fā)送成功,在進(jìn)行發(fā)送操作后立即釋放,無需緩存。arp字段用于待發(fā)送數(shù)據(jù)包,該字段等于1表示此待發(fā)送數(shù)據(jù)包已完成MAC首部的建立。arp=0表示MAC首部中目的端硬件地址尚不知曉,故需使用.ARP協(xié)議詢問對方,在:MAC首部尚未完全建立之前,該數(shù)據(jù)包一直處于發(fā)送緩沖隊(duì)列中(device結(jié)構(gòu)中buffs數(shù)組元素指向的某個隊(duì)列以及ARP協(xié)議的某個隊(duì)列中)。tries、lock、localroute:。tries字段表示該數(shù)據(jù)包已進(jìn)行Pies試發(fā)送,如果試發(fā)送超出域值,則會放棄該數(shù)據(jù)包的發(fā)送。
編輯推薦
《Linux內(nèi)核網(wǎng)絡(luò)棧源代碼情景分析》:剖析核心架構(gòu),直擊Linux內(nèi)核網(wǎng)絡(luò)棧本質(zhì)詳細(xì)分析300多個核心函數(shù)和頭文件,代碼注釋豐富兩種方式分別講述Linux1.2.13內(nèi)核網(wǎng)絡(luò)棧實(shí)現(xiàn)的所有源代碼方便讀者迅速掌握Linux網(wǎng)絡(luò)協(xié)議結(jié)構(gòu)學(xué)Linux內(nèi)核網(wǎng)絡(luò)棧源代碼,從這里開始
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Linux內(nèi)核網(wǎng)絡(luò)棧源代碼情景分析 PDF格式下載