前言
第1章 預備知識
1.1 應用層配置診斷工具
1.1.1 iputils
1.1.2 net-tools
1.1.3 iproute2
1.2 內核空間與用戶空間的接口
1.2.1 proefs
1.2.2 sysctl(proc/sys目錄)
1.2.3 sySfs(/sys文件系統(tǒng))
1.2.4 ioctl系統(tǒng)調用
1.2.5 netlink套接口
1.3 網絡I/O加速
1.3.1 TSO/GSO
1.3.2 I/OAT
1.4 其他
1.4.1 slab分配器
1.4.2 RCU
第2章 網絡體系結構概述
2.1 引言
2.2 協(xié)議簡介
2.3 網絡架構
2.4 系統(tǒng)調用接口
2.5 協(xié)議無關接口
2.6 傳輸層協(xié)議
2.7 套接口緩存
2.8 設備無關接口
2.9 設備驅動程序
2.1 0網絡模塊源代碼組織
第3章 套接口緩存
3.1 引言
3.2 skbufr結構
3.2.1 網絡參數(shù)和內核數(shù)據(jù)結構
3.2.2 SKB組織相關的變量
3.2.3 數(shù)據(jù)存儲相關的變量
3.2.4 通用的成員變量
3.2.5 標志性變量
3.2.6 特性相關的成員變量
3.3 skbsharedinfo結構
3.3.1 “零拷貝”技術
3.3.2 對聚合分散I/O數(shù)據(jù)的支持
3.3.3 對GSO的支持
3.3.4 訪問skbsharedinfo結構
3.4 管理函數(shù)
3.4.1 SKB的緩存池
3.4.2 分配SKB
3.4.3 釋放SKB
3.4 ,4數(shù)據(jù)預留和對齊
3.4.5 克隆和復制SKB
3.4.6 鏈表管理函數(shù)
3.4.7 添加或刪除尾部數(shù)據(jù)
3.4.8 拆分數(shù)據(jù):skbsplit()
3.4.9 重新分配SKI]的線性數(shù)據(jù)區(qū)pskb-expand-head()
3.4.1 0其他函數(shù)
第4章 網絡模塊初始化
4.1 引言
4.2.網絡模塊初始化順序
4.3 優(yōu)化基于宏的標記
4.4 網絡設備處理層初始化
第5章 網絡設備
5.1 PCI設備
5.1.1 PCI驅動程序相關結構
5.1.2 注冊PCI驅動程序
5.2 與網絡設備有關的數(shù)據(jù)結構
5.2.1 netdevice結構
5.2.2 網絡設備有關結構的組織
5.2.3 相關函數(shù)
5.3 網絡設備的注冊
5.3.1 設備注冊的時機
5.3.2 分配netdevice結構空間
5.3.3網絡設備注冊過程
5.3.4 注冊設備的狀態(tài)遷移
5.3.5 設備注冊狀態(tài)通知
5.3.6 引用計數(shù)
5.4 網絡設備的注銷
5.4.1 設備注銷的時機
5.4.2 網絡設備注銷過程
5.5 網絡設備的啟用
5.6 網絡設備的禁用
5.7 與電源管理交互
5.7.1 掛起設備
5.7.2 喚醒設備
5.8 偵測連接狀態(tài)改變
5.8.1 調度處理連接狀態(tài)改變事件
5.8.2 linkwatch標志
5.9 從用戶空間配置設備相關信息
5.9.1 ethtool
5.9.2 媒體獨立接口
5.1 0虛擬網絡設備
第6章 IP編址
6.1 接口和IP地址
6.1.1 主IP地址、從屬IP地址和IP別名
6.1.2 IP地址的組織
6.1.3 indevice結構
6.1.4 inifaddr結構
6.2 函數(shù)
6.2.1 inetdev-init()
6.2.2 inetdevdestroy()
6.2.3 inet-select-addr()
6.2.4 inet-confirm-addr()
6.2.5 inet-addr-oniink()
6.2.6 inetdev-by-index()
6.2.7 inet-ifa-byprefix()
6.2.8 inet-abe-len()
6.3 IP地址的設置
6.3.1 netlink接口
6.3.2 inet-insertifa()
6.3.3 inet-del-ifaO
6.4 ioctl
6.5 inetaddrchain通知鏈
第7章 口層的輸入
7.1 系統(tǒng)參數(shù)
7.2 接口層的ioctl
7.2.1 SIOCxlFxxx類命令
7.2.2 S10CETHTOOL
7.2.3私有命令
7.3初始化
7.4 softnetdata結構
7.5 NAPI方式
7.5.}網絡設備中斷例程
7.5.2 網絡輸入軟中斷
7.5.3 輪詢處理
7.6 非NAPI方式
7.7 接口層輸入報文的處理
7.7.1 報文接收例程
7.7.2 netif-receive-skb()
7.7.3 dev-queue-xmit-nit()
7.8 響應CPU狀態(tài)的變化
7.9 netpoll
7.9.1 netpoll相關結構
7.9.2 注冊netpoll實例
7.9.3 netpoll的輸入
7.9.4 netpoll的輸出
7.9.5 txwork工作隊列
7.9.6 netpoll實例:netconsole
第8章 口層的輸出
8.1 輸出接口
8.1.1 dev-queue-xmit()
8.1.2 dev-hard-start-xmit()
8.1.3 e100的輸出接口100-xmit-flame()
8.2 網絡輸出軟中斷
8.2.1 netif-schedule()
8.2.2 nettxaction()
8.3 網絡設備不支持GSo時的處理
8.3 dev-gso-cb私有控制塊
8.3.2 dev-gs0一segment()
8.3.3 skb-gso-segment()
第9章 量控制
9.1 通過流量控制后輸出
9.1.1 dev一.queue-xmit()
9.1.2 qdisc-restart()
9.2 構成流量控制的三種元素
9.2.1 排隊規(guī)則
9.2.2 類
9.2.3 過濾器
9.3默認的FIFO排隊規(guī)則
9.3.1 pfifo-fast-init(
9.3.2 pfifo-fast-reset()
9.3.pfifo.一fast-enqueue()
9.3.4 pfifo-fast-dequeue()
9.3.pfifo.一fast-requeue()
9.4 netlink的tc接口
9.5 排隊規(guī)則的創(chuàng)建接口
9.5.1 類的創(chuàng)建接口
9.5.2 過濾器的創(chuàng)建接口
第10章 ntemet協(xié)議族
10.1 net-Proto-family結構
10.2 imetprotosw結構
10.3 netprotocol結構
10.4 Intemet協(xié)議族的初始化
第11章 P:網際協(xié)議
11.1 引言
11.1.1 IP首部
11.1.2 IP數(shù)據(jù)報的輸入與輸出
11.2 IP的私有信息控制塊
11.3 系統(tǒng)參數(shù)
11.4 初始化
11.5 IP層套接口選項
11.6 ipv4de’vconf結構
11.7 套接口的錯誤隊列
11.7.1 添加ICMP差錯信息
11.7.2 添加由本地產生的差錯信息
11.7.3 讀取錯誤信息
11.8 報文控制信息
11.8.1 IP控制信息塊
11.8.2 報文控制信息的輸出
11.8.3 報文控制信息的輸入
11.9 對端信息塊
11.9.1 系統(tǒng)參數(shù)
11.9.2 對端信息塊的創(chuàng)建和查找
11.9.3 對端信息塊的刪除
11.9.4 垃圾回收
11.10IP數(shù)據(jù)報的輸入處理
11.10.1 IP數(shù)據(jù)報輸入到本地
11.10.2 IP數(shù)據(jù)報的轉發(fā)
11.11IP數(shù)據(jù)報的輸出處理
11.11.1 IP數(shù)據(jù)報輸出到設備
11.11.2 TCP輸出的接口
11.11.3 UDP輸出的接口
11.12IP層對GSO的支持
11.12.1 inet-gso-segment()
112.2 inet-gso-send-check()
第12章 P選項處理
12.1 IP選項
12.1.1 選項列表的結束符
12.1.2 空操作
12.1.3 安全選項
12.1.4 嚴格源路由選項
12.1.5 寬松源路由選項
12.1.6 記錄路由選項
12.1.7 流標識選項
12.1.8 時間戳選項
12.1.9 路由器警告選項
12.2 ipoptions結構
12.3在IP數(shù)據(jù)報中構建IP選項
12.4 復制IP數(shù)據(jù)報中選項到指定的ipoptions結構
12.5 處理待發(fā)送IP分片中的選項
12.6 解析IP選項
12.7 還原在校驗IP選項時修改的IP選項
12.8 處理轉發(fā)IP數(shù)據(jù)報中的IP選項
12.9 處理IP數(shù)據(jù)報的源路由選項
12.1 0解析并處理IP首部中的IP選項
12.1 1路由警告選項的處理
12.1 2由控制信息生成IP選項信息塊
第13章 P的分片與組裝
13.1 系統(tǒng)參數(shù)
13.2分片
13.2.1 速分片
13.2.2 慢速分片
13.3組裝
13.3.Iipq結構
13.3.2 ipq散列表和鏈表的維護
13.3.3 ipq散列表的重組
13.3.4 超時IP分片的清除
13.3.5 垃圾收集
13.3.6相關分片組裝函數(shù)
13.3.7 分片組裝
第14章 CMP:Internet控制報文協(xié)議
14.1 ICMP報文結構
14.2 注冊ICMP報文類型
14.3 系統(tǒng)參數(shù)
14.4 ICMP的初始化
14.5 輸入處理
14.5.1 差錯處理
14.5.2 重定向處理
14.5.3 請求回顯
14.5.4 時間戳請求
14.5.5 地址掩碼請求和應答
14.6 輸出處理
14.6.1 發(fā)送ICMP報文
14.6.2 發(fā)送回顯應答和時間戳
應答報文
第15章 IP組播
15.1 初始化
15.2 虛擬接口
15.2.1 虛擬接口的添加
15.2.2 虛擬接口的刪除:vif-deleteO
15.2.3查找虛擬接口:ipmrfmdvif()
15.3組播轉發(fā)緩存
15.3.1 組播轉發(fā)緩存的創(chuàng)建
15.3.2 組播轉發(fā)緩存的刪除
15.3.3 組播轉發(fā)緩存的查找
15.3.4 向組播路由守護進程發(fā)送報告
15.4 臨時組播轉發(fā)緩存
15.4.1 臨時組播轉發(fā)緩存隊列
15.4.2 創(chuàng)建臨時組播轉發(fā)緩存
15.4.3 用于超時而刪除臨時組播轉發(fā)緩存的定時器
15.4.4 釋放臨時組播緩存項中保存的臨時組播報文
15.5 外部事件
15.6 組播套接口選項
15.6.1 IP-MULTICAST-TTL
15.6.2 IP-MULTICAST——LOOP
15.6.3 IP-MULTICAST-IF
15.6.4 IP-ADD-MEMBERSHIP
15.6.5 IP-DROP-MEMBERSHIP
15.6.6 IP-MSFILTER
15.6.7 IP-BLOCK-SOURCE和IP-UNBLOCK-SOURCE
15.6.8 IP-ADD-SOURCE-MEMBERSHIP和IPDROP-SOURCE-MEMBERSHIP
15.6.9 MCAST-JOIN-GROUP
15.6.1 0MCASTLEAVEGRoUP
15.6.1 lMCAST-BLOCK-SOURCE和M-CASTUNBLOCKSOI瓜CE
15.6.1 2MCASTJOINSOURCEGROUP和MCASTLEAVESOURCEGROUP
15.6.1 3MCAST-MSFILTER
15.7 組播選路套接口選項
……
第16章 IGMP:Internet組管理協(xié)議
第17章 鄰居子系統(tǒng)
第18章 ARP:地址解析協(xié)議
第20章 路由緩存
第21章 路由策略
第22章 套接口層
第23章 套接口I/O
第24章 套接口選項
第25章 傳輸控制塊
第26章 TCP:傳輸控制協(xié)議
第27章 TCP的定時器
第28章 TCP連接的建立
第29章 TCP擁塞控制的實現(xiàn)
第30章 TCP的輸出
第31章 TCP的輸入
第32章 UDP:用戶數(shù)據(jù)報
第33章 UDP:用戶數(shù)據(jù)報
參考文獻