图书介绍

Linux内核源码剖析 TCP/IP实现 上2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Linux内核源码剖析 TCP/IP实现 上
  • 樊东东,莫澜编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111323730
  • 出版时间:2011
  • 标注页数:550页
  • 文件大小:65MB
  • 文件页数:562页
  • 主题词:Linux操作系统-机器代码程序-程序分析;计算机网络-通信协议

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux内核源码剖析 TCP/IP实现 上PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 预备知识1

1.1 应用层配置诊断工具2

1.1.1 iputils2

1.1.2 net-tools2

1.1.3 iproute22

1.2 内核空间与用户空间的接口2

1.2.1 procfs2

1.2.2 sysctl(/proc/sys目录)4

1.2.3 sysfs(/sys文件系统)5

1.2.4 ioctl系统调用6

1.2.5 netlink套接口6

1.3 网络I/O加速6

1.3.1 TSO/GSO7

1.3.2 I/O AT8

1.4 其他8

1.4.1 slab分配器9

1.4.2 RCU9

第2章 网络体系结构概述10

2.1 引言10

2.2 协议简介10

2.3 网络架构11

2.4 系统调用接口11

2.5 协议无关接口12

2.6 传输层协议12

2.7 套接口缓存13

2.8 设备无关接口14

2.9 设备驱动程序14

2.10 网络模块源代码组织14

第3章 套接口缓存15

3.1 引言15

3.2 sk_buff结构15

3.2.1 网络参数和内核数据结构16

3.2.2 SKB组织相关的变量19

3.2.3 数据存储相关的变量20

3.2.4 通用的成员变量21

3.2.5 标志性变量24

3.2.6 特性相关的成员变量25

3.3 skb_shared_info结构25

3.3.1 “零拷贝”技术25

3.3.2 对聚合分散I/O数据的支持27

3.3.3 对GSO的支持30

3.3.4 访问skb_shared_info结构31

3.4 管理函数31

3.4.1 SKB的缓存池31

3.4.2 分配SKB32

3.4.3 释放SKB34

3.4.4 数据预留和对齐36

3.4.5 克隆和复制SKB38

3.4.6 链表管理函数42

3.4.7 添加或删除尾部数据42

3.4.8 拆分数据:skb_split()44

3.4.9 重新分配SKB的线性数据区:pskb_expand_head()46

3.4.10 其他函数46

第4章 网络模块初始化48

4.1 引言48

4.2 网络模块初始化顺序48

4.3 优化基于宏的标记49

4.4 网络设备处理层初始化52

第5章 网络设备55

5.1 PCI设备55

5.1.1 PCI驱动程序相关结构55

5.1.2 注册PCI驱动程序57

5.2 与网络设备有关的数据结构59

5.2.1 net_device结构59

5.2.2 网络设备有关结构的组织71

5.2.3 相关函数72

5.3 网络设备的注册73

5.3.1 设备注册的时机73

5.3.2 分配net_device结构空间73

5.3.3 网络设备注册过程75

5.3.4 注册设备的状态迁移79

5.3.5 设备注册状态通知79

5.3.6 引用计数80

5.4 网络设备的注销80

5.4.1 设备注销的时机80

5.4.2 网络设备注销过程81

5.5 网络设备的启用86

5.6 网络设备的禁用88

5.7 与电源管理交互89

5.7.1 挂起设备90

5.7.2 唤醒设备90

5.8 侦测连接状态改变91

5.8.1 调度处理连接状态改变事件91

5.8.2 linkwatch标志95

5.9 从用户空间配置设备相关信息95

5.9.1 ethtool95

5.9.2 媒体独立接口97

5.10 虚拟网络设备97

第6章 IP编址99

6.1 接口和IP地址99

6.1.1 主IP地址、从属IP地址和IP别名99

6.1.2 IP地址的组织99

6.1.3 in_device结构100

6.1.4 in_ifaddr结构101

6.2 函数102

6.2.1 inetdev_init()102

6.2.2 inetdev_destroy()104

6.2.3 inet_select_addr()104

6.2.4 inet_confirm_addr()106

6.2.5 inet_addr_onlink()107

6.2.6 inetdev_by_index()107

6.2.7 inet_ifa_byprefix()108

6.2.8 inet_abc_len()108

6.3 IP地址的设置109

6.3.1 netlink接口109

6.3.2 inet_insert_ifa()111

6.3.3 inet_del_ifa()112

6.4 ioctl115

6.5 inetaddr_chain通知链121

第7章 接口层的输入122

7.1 系统参数122

7.2 接口层的ioctl123

7.2.1 SIOCxIFxxx类命令123

7.2.2 SIOCETHTOOL126

7.2.3 私有命令127

7.3 初始化127

7.4 softnet_data结构128

7.5 NAPI方式130

7.5.1 网络设备中断例程131

7.5.2 网络输入软中断131

7.5.3 轮询处理133

7.6 非NAPI方式134

7.7 接口层输入报文的处理137

7.7.1 报文接收例程137

7.7.2 netif_receive_skb()138

7.7.3 dev_queue_xmit_nit()141

7.8 响应CPU状态的变化142

7.9 netpoll143

7.9.1 netpoll相关结构143

7.9.2 注册netpoll实例145

7.9.3 netpoll的输入148

7.9.4 netpoll的输出156

7.9.5 tx_work工作队列159

7.9.6 netpoll实例:netconsole160

第8章 接口层的输出163

8.1 输出接口163

8.1.1 dev_queue_xmit()163

8.1.2 dev_hard_start_xmit()167

8.1.3 e100的输出接口:e100_xmi_frame()168

8.2 网络输出软中断168

8.2.1 netif_schedule()168

8.2.2 net_tx_action()169

8.3 网络设备不支持GSO时的处理170

8.3.1 dev_gso_cb私有控制块171

8.3.2 dev_gso_segment()171

8.3.3 skb_gso_segmem()172

第9章 流量控制174

9.1 通过流量控制后输出174

9.1.1 dev_queue_xmit()175

9.1.2 qdisc_restart()176

9.2 构成流量控制的三种元素178

9.2.1 排队规则179

9.2.2 类186

9.2.3 过滤器189

9.3 默认的FIFO排队规则192

9.3.1 pfifo_fast_init()194

9.3.2 pfifo_fast_reset()194

9.3.3 pfifo_fast_enqueue()194

9.3.4 pfifo_fast_dequeue()195

9.3.5 pfifo_fast_requeue()195

9.4 netlink的tc接口195

9.5 排队规则的创建接口197

9.5.1 类的创建接口201

9.5.2 过滤器的创建接口204

第10章 Internet协议族209

10.1 net_proto_family结构209

10.2 inet_protosw结构210

10.3 net_protocol结构212

10.4 Internet协议族的初始化214

第11章 IP:网际协议217

11.1 引言217

11.1.1 IP首部218

11.1.2 IP数据报的输入与输出219

11.2 IP的私有信息控制块220

11.3 系统参数220

11.4 初始化223

11.5 IP层套接口选项223

11.6 ipv4_devconf结构227

11.7 套接口的错误队列229

11.7.1 添加ICMP差错信息231

11.7.2 添加由本地产生的差错信息232

11.7.3 读取错误信息233

11.8 报文控制信息235

11.8.1 IP控制信息块235

11.8.2 报文控制信息的输出235

11.8.3 报文控制信息的输入236

11.9 对端信息块237

11.9.1 系统参数239

11.9.2 对端信息块的创建和查找239

11.9.3 对端信息块的删除241

11.9.4 垃圾回收242

11.10 IP数据报的输入处理244

11.10.1 IP数据报输入到本地247

11.10.2 IP数据报的转发249

11.11 IP数据报的输出处理253

11.11.1 IP数据报输出到设备253

11.11.2 TCP输出的接口255

11.11.3 UDP输出的接口261

11.12 IP层对GSO的支持275

11.12.1 inet_gso_segment()275

11.12.2 inet_gso_send_check()277

第12章 IP选项处理278

12.1 IP选项278

12.1.1 选项列表的结束符279

12.1.2 空操作279

12.1.3 安全选项279

12.1.4 严格源路由选项280

12.1.5 宽松源路由选项281

12.1.6 记录路由选项282

12.1.7 流标识选项282

12.1.8 时间戳选项283

12.1.9 路由器警告选项283

12.2 ip_options结构284

12.3 在IP数据报中构建IP选项285

12.4 复制IP数据报中选项到指定的ip_options结构286

12.5 处理待发送IP分片中的选项290

12.6 解析IP选项291

12.7 还原在校验IP选项时修改的IP选项297

12.8 处理转发IP数据报中的IP选项298

12.9 处理IP数据报的源路由选项299

12.10 解析并处理IP首部中的IP选项300

12.11 路由警告选项的处理301

12.12 由控制信息生成IP选项信息块302

第13章 IP的分片与组装303

13.1 系统参数303

13.2 分片303

13.2.1 快速分片306

13.2.2 慢速分片309

13.3 组装312

13.3.1 ipq结构312

13.3.2 ipq散列表和链表的维护315

13.3.3 ipq散列表的重组316

13.3.4 超时IP分片的清除317

13.3.5 垃圾收集318

13.3.6 相关分片组装函数319

13.3.7 分片组装327

第14章 ICMP:Internet控制报文协议330

14.1 ICMP报文结构330

14.2 注册ICMP报文类型330

14.3 系统参数330

14.4 ICMP的初始化332

14.5 输入处理333

14.5.1 差错处理337

14.5.2 重定向处理342

14.5.3 请求回显343

14.5.4 时间戳请求345

14.5.5 地址掩码请求和应答346

14.6 输出处理346

14.6.1 发送ICMP报文346

14.6.2 发送回显应答和时间戳应答报文350

第15章 IP组播353

15.1 初始化353

15.2 虚拟接口354

15.2.1 虚拟接口的添加355

15.2.2 虚拟接口的删除:vif_delete()358

15.2.3 查找虚拟接口:ipmr_find_vif()358

15.3 组播转发缓存358

15.3.1 组播转发缓存的创建361

15.3.2 组播转发缓存的删除361

15.3.3 组播转发缓存的查找361

15.3.4 向组播路由守护进程发送报告362

15.4 临时组播转发缓存364

15.4.1 临时组播转发缓存队列365

15.4.2 创建临时组播转发缓存365

15.4.3 用于超时而删除临时组播转发缓存的定时器367

15.4.4 释放临时组播缓存项中保存的临时组播报文368

15.5 外部事件369

15.6 组播套接口选项369

15.6.1 IP_MULTICAST_TTL369

15.6.2 IP_MULTICAST_LOOP370

15.6.3 IP_MULTICAST_IF370

15.6.4 IP_ADD_MEMBERSHIP372

15.6.5 IP_DROP_MEMBERSHIP372

15.6.6 IP_MSFILTER373

15.6.7 IP_BLOCK_SOURCE和IP_UNBLOCK_SOURCE375

15.6.8 IP_ADD_SOURCE_MEMBERSHIP和IP_DROP_SOURCE_MEMBERSHIP375

15.6.9 MCAST_JOIN_GROUP376

15.6.10 MCAST_LEAVE_GROUP377

15.6.11 MCAST_BLOCK_SOURCE和MCAST_UNBLOCK_SOURCE377

15.6.12 MCAST_JOIN_SOURCE_GROUP和MCAST_LEAVE_SOURCE_GROUP377

15.6.13 MCAST_MSFILTER378

15.7 组播选路套接口选项378

15.7.1 MRT_INIT379

15.7.2 MRT_DONE379

15.7.3 MRT_ADD_VIF和MRT_DEL_VIF380

15.7.4 MRT_ADD_MFC和MRT_DEL_MFC380

15.7.5 MRT_ASSERT380

15.8 组播的ioctl380

15.8.1 SIOCGETVIFCNT380

15.8.2 SIOCGETSGCNT380

15.9 组播报文的输入381

15.10 组播报文的转发383

15.10.1 ip_mr_forward()383

15.10.2 ipmr_queue_xmit()385

15.11 组播报文的输出388

第16章 IGMP:Internet组管理协议390

16.1 in_device结构中的组播参数390

16.2 ip_mc_list结构391

16.3 系统参数393

16.4 IGMP的版本与协议结构393

16.4.1 IGMP的版本393

16.4.2 第一版和第二版的IGMP报文结构395

16.4.3 第三版的IGMP查询报文结构395

16.4.4 第三版的IGMP报告结构396

16.5 IGMP报文的输入398

16.6 函数399

16.6.1 ip_mc_find_dev()399

16.6.2 ip_check_mc()400

16.7 成员关系查询400

16.8 成员关系报告404

16.8.1 最近离开组播组列表的维护404

16.8.2 is_in()404

16.8.3 add_grec()406

16.8.4 普通查询的报告409

16.8.5 V1和V2的报告以及V3的当前状态记录报告410

16.8.6 主动发送组关系报告413

16.9 维护套接口组播状态416

16.9.1 套接口加入组播组417

16.9.2 套接口离开组播组418

16.10 维护网络设备组播状态419

16.10.1 被阻止的组播源列表的维护421

16.10.2 网络设备加入组播组421

16.10.3 网络设备离开组播组425

16.11 ip_mc_source()430

16.12 ip_mc_msfilter()434

16.13 网络设备组播硬件地址的管理436

第17章 邻居子系统437

17.1 什么是邻居子系统437

17.2 系统参数437

17.3 邻居子系统的结构438

17.3.1 neigh_table结构438

17.3.2 neighbour结构441

17.3.3 neigh_ops结构444

17.3.4 neigh_parms结构445

17.3 5 pneigh_entry结构447

17.3 6 neigh_statistics结构447

17.3.7 hh_cache结构448

17.4 邻居表的初始化449

17.5 邻居项的状态机450

17.6 邻居项的添加与删除452

17.6.1 netlink接口452

17.6.2 ioctl456

17.6.3 路由表项与邻居项的绑定456

17.6.4 接收到的并非请求的应答456

17.7 邻居项的创建与初始化456

17.7.1 neigh_alloc()456

17.7.2 neigh_create()457

17.8 邻居项散列表的扩容459

17.9 邻居项的查找460

17.9.1 neigh_lookup()460

17.9.2 neigh_lookup_nodev()461

17.9.3 _neigh_lookup()和neigh_lookup_errno()461

17.10 邻居项的更新461

17.11 垃圾回收465

17.11.1 同步回收465

17.11.2 异步回收466

17.12 外部事件468

17.13 邻居项状态处理定时器469

17.14 代理项472

17.14.1 代理项的查找、添加和删除472

17.14.2 延时处理代理的请求报文472

17.15 输出函数474

17.15.1 丢弃474

17.15.2 慢速发送474

17.15.3 快速发送477

第18章 ARP:地址解析协议480

18.1 ARP报文格式480

18.2 系统参数481

18.3 注册ARP报文类型483

18.4 ARP初始化483

18.5 ARP的邻居项函数指针表483

18.6 ARP表484

18.7 函数485

18.7.1 arp_error_report()485

18.7.2 arp_solicit()485

18.7.3 arp_ignore()486

18.7.4 arp_filter()488

18.8 IPv4中邻居项的初始化488

18.9 ARP报文的创建490

18.10 ARP的输出490

18.11 ARP的输入491

18.11.1 arp_rcv()491

18.11.2 arp_process()492

18.12 ARP代理497

18.12.1 arp_process()498

18.12.2 arp_fwd_proxy()499

18.12.3 parp_redo()500

18.13 ARP的ioctl500

18.14 外部事件501

18.15 路由表项与邻居项的绑定502

第19章 路由表503

19.1 什么是路由表503

19.1.1 路由的要素503

19.1.2 特殊路由505

19.1.3 路由缓存505

19.2 系统参数506

19.3 路由表组成结构506

19.3.1 fib_table结构508

19.3.2 fn_zone结构510

19.3.3 fib_node结构511

19.3.4 fib_alias结构511

19.3.5 fib_info结构512

19.3.6 fib_nh结构515

19.4 路由表的初始化516

19.5 netlink接口517

19.5.1 netlink路由表项消息结构517

19.5.2 inet_rtm_newroute()519

19.5.3 inet_rtm_delroute()520

19.6 获取指定的路由表520

19.7 路由表项的添加520

19.8 路由表项的删除526

19.9 外部事件528

19.9.1 网络设备状态变化事件528

19.9.2 IP地址变化事件529

19.9.3 fib_add_ifaddr()529

19.9.4 fib_del_ifaddr()531

19.9.5 fib_disable_ip()534

19.9.6 fib_magic()534

19.10 选路535

19.10.1 输入选路:ip_route_input_slow()535

19.10.2 组播输入选路:ip_route_input_mc()539

19.10.3 输出选路:ip_route_output_slow()541

19.10.4 fib_lookup()546

19.10.5 fn_hash_lookup()548

19.11 ICMP重定向消息的发送548

热门推荐