书悦网 -Linux内核源码剖析(套装上下册)
本书资料更新时间:2025-01-20 13:05:57

Linux内核源码剖析(套装上下册) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线

Linux内核源码剖析(套装上下册)精美图片
》Linux内核源码剖析(套装上下册)电子书籍版权问题 请点击这里查看《

Linux内核源码剖析(套装上下册)书籍详细信息

  • ISBN:9787111323730
  • 作者:暂无作者
  • 出版社:暂无出版社
  • 出版时间:2011-1
  • 页数:1062
  • 价格:142.00元
  • 纸张:暂无纸张
  • 装帧:暂无装帧
  • 开本:暂无开本
  • 语言:未知
  • 丛书:暂无丛书
  • TAG:暂无
  • 豆瓣评分:暂无豆瓣评分
  • 豆瓣短评:点击查看
  • 豆瓣讨论:点击查看
  • 豆瓣目录:点击查看
  • 读书笔记:点击查看
  • 原文摘录:点击查看
  • 更新时间:2025-01-20 13:05:57

内容简介:

《Linux内核源码剖析:TCP/IP实现(套装上下册)》详细论述了Linux内核2.6.20版本中TCP/IP的实现。书中给出了大量的源代码,通过对源代码的详细注释,帮助读者掌握TCP/IP的实现。《Linux内核源码剖析:TCP/IP实现(套装上下册)》根据协议栈层次,从驱动层逐步论述到传输层,包括驱动的实现、接口层的输入输出、IP层的输入输出以及IP选项的处理、邻居子系统、路由、套接口及传输层等内容,全书基本涵盖了网络体系架构全部的知识点。特别是TCP,包括TCP连接的建立和终止、输入与输出,以.及拥塞控制的实现。

《Linux内核源码剖析:TCP/IP实现(套装上下册)》适用于熟悉Linux的基本使用方法,对Linux内核工作原理以及网络知识有一定的了解,而又极想更深入理解各个机制在Linux中的具体实现的用户,包括应用程序员和嵌入式程序员,以及网络管理员等。相关专业的科研人员在工作中遇到问题时,也可以查阅《Linux内核源码剖析:TCP/IP实现(套装上下册)》,理解相关内核部分的实现。此外,计算机相关专业的本科高年级学生和研究生,在学习相关课程(如操作系统、计算机网络等)时,可将《Linux内核源码剖析:TCP/IP实现(套装上下册)》作为辅助教程,与理论相结合以便更好地理解相应的知识点。


书籍目录:

上 册 目 录

前言

第1章 预备知识

1

1.1 应用层配置诊断工具

2

1.1.1 iputils

2

1.1.2 net-tools

2

1.1.3 iproute2

2

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

2

1.2.1 procfs

2

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/GSO

7

1.3.2 I/O AT

8

1.4 其他

8

1.4.1 slab分配器

9

1.4.2 RCU

9

第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 分配SKB

32

3.4.3 释放SKB

34

3.4.4 数据预留和对齐

36

3.4.5 克隆和复制SKB

38

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 ethtool

95

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 ioctl

115

6.5 inetaddr_chain通知链

121

第7章 接口层的输入

122

7.1 系统参数

122

7.2 接口层的ioctl

123

7.2.1 SIOCxIFxxx类命令

123

7.2.2 SIOCETHTOOL

126

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 netpoll

143

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实例:netconsole

160

第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_xmit_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_segment()

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_TTL

369

15.6.2 IP_MULTICAST_LOOP

370

15.6.3 IP_MULTICAST_IF

370

15.6.4 IP_ADD_MEMBERSHIP

372

15.6.5 IP_DROP_MEMBERSHIP

372

15.6.6 IP_MSFILTER

373

15.6.7 IP_BLOCK_SOURCE和

IP_UNBLOCK_SOURCE

375

15.6.8 IP_ADD_SOURCE_MEMBERSHIP

和IP_DROP_SOURCE_

MEMBERSHIP

375

15.6.9 MCAST_JOIN_GROUP

376

15.6.10 MCAST_LEAVE_GROUP

377

15.6.11 MCAST_BLOCK_SOURCE和

MCAST_UNBLOCK_SOURCE

377

15.6.12 MCAST_JOIN_SOURCE_GROUP

和MCAST_LEAVE_SOURCE_

GROUP

377

15.6.13 MCAST_MSFILTER

378

15.7 组播选路套接口选项

378

15.7.1 MRT_INIT

379

15.7.2 MRT_DONE

379

15.7.3 MRT_ADD_VIF和MRT_

DEL_VIF

380

15.7.4 MRT_ADD_MFC和MRT_

DEL_MFC

380

15.7.5 MRT_ASSERT

380

15.8 组播的ioctl

380

15.8.1 SIOCGETVIFCNT

380

15.8.2 SIOCGETSGCNT

380

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 ioctl

456

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的ioctl

500

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

下 册 目 录

第20章 路由缓存

551

20.1 系统参数

551

20.2 路由缓存的组织结构

552

20.2.1 rtable结构

552

20.2.2 flowi结构

555

20.2.3 dst_entry结构

556

20.2.4 dst_ops结构

559

20.3 初始化

561

20.4 创建路由缓存项

563

20.4.1 创建输入路由缓存项

563

20.4.2 创建输出路由缓存项

565

20.5 添加路由表项到缓存中:

rt_intern_hash()

568

20.6 输入路由缓存查询:

ip_route_input()

571

20.7 输出路由缓存查询

573

20.7.1 ip_route_output_key()

573

20.7.2 __ip_route_output_key()

573

20.8 垃圾回收

575

20.8.1 路由缓存项的过期

575

20.8.2 判断缓存路由表项是否

可被删除

575

20.8.3 同步清理

576

20.8.4 异步清理

580

20.8.5 路由缓存项的释放

582

20.9 刷新缓存

582

20.9.1 通过定时器定时刷新

584

20.9.2 网络设备的硬件地址发生

改变

584

20.9.3 网络设备状态发生变化

584

20.9.4 给设备添加或删除一个

IP地址

584

20.9.5 全局转发状态或设备的转发

状态发生变化

584

20.9.6 一条路由被删除

585

20.9.7 通过写/proc的flush文件

585

20.10 ICMP重定向消息的处理

585

20.11 ICMP目的不可达,需要分片

消息的处理

588

第21章 路由策略

590

21.1 路由策略组织结构

590

21.1.1 fib_rules_ops结构

590

21.1.2 fib_rule结构

592

21.1.3 fib4_rule结构

594

21.2 三个默认路由策略

595

21.3 IPv4协议族的fib_rules_ops

结构实例

595

21.3.1 fib4_rule_action()

595

21.3.2 fib4_rule_match()

596

21.3.3 fib4_rule_configure()

596

21.3.4 fib4_rule_compare()

598

21.3.5 fib4_rule_fill()

598

21.3.6 fib4_rule_default_pref()

599

21.4 netlink接口

599

21.4.1 netlink路由策略消息结构

599

21.4.2 fib_nl_newrule()

600

21.4.3 fib_nl_delrule()

602

21.5 受网络设备状态改变的影响

604

21.6 策略路由的查找

604

第22章 套接口层

606

22.1 socket结构

607

22.2 proto_ops结构

608

22.3 套接口文件系统

610

22.3.1 套接口文件系统类型

610

22.3.2 套接口文件系统超级块操作

接口

610

22.3.3 套接口文件的inode

611

22.3.4 sock_alloc_inode()

611

22.3.5 sock_destroy_inode()

612

22.4 套接口文件

612

22.4.1 套接口文件与套接口的绑定

612

22.4.2 根据文件描述符获取套接口

614

22.5 进程、文件描述符和套接口

615

22.6 套接口层的系统初始化

616

22.7 套接口系统调用

617

22.7.1 套接口系统调用入口

617

22.7.2 socket系统调用

621

22.7.3 bind系统调用

629

22.7.4 listen系统调用

632

22.7.5 accept系统调用

633

22.7.6 connect系统调用

635

22.7.7 shutdown系统调用

636

22.7.8 close系统调用

638

22.7.9 select系统调用的实现

640

第23章 套接口I/O

641

23.1 输出/输入数据的组织

641

23.1.1 msghdr结构

641

23.1.2 verify_iovec()

643

23.1.3 memcpy_toiovec()

644

23.1.4 memcpy_fromiovec()

644

23.1.5 memcpy_fromiovecend()

644

23.1.6 csum_partial_copy_

fromiovecend()

644

23.2 输出系统调用

644

23.2.1 sock_sendmsg()

644

23.2.2 sendto系统调用

645

23.2.3 send系统调用

646

23.2.4 sendmsg系统调用

646

23.3 输入系统调用

649

第24章 套接口选项

650

24.1 setsockopt系统调用

650

24.2 ioctl系统调用

655

24.2.1 ioctl在文件系统内的调用过程

655

24.2.2 套接口文件ioctl调用接口的

实现

655

24.2.3 套接口层的实现

658

24.3 getsockname系统调用

659

24.4 getpeername系统调用

660

第25章 传输控制块

661

25.1 系统参数

662

25.2 传输描述块结构

662

25.2.1 sock_common结构

662

25.2.2 sock结构

663

25.2.3 inet_sock结构

670

25.3 proto结构

674

25.3.1 proto实例组织结构

677

25.3.2 proto_register()

677

25.3.3 proto_unregister()

679

25.4 传输控制块的内存管理

680

25.4.1 传输控制块的分配和释放

680

25.4.2 普通的发送缓存区的分配

682

25.4.3 发送缓存的分配与释放

685

25.4.4 接收缓存的分配与释放

686

25.4.5 辅助缓存的分配与释放

688

25.5 异步IO机制

688

25.5.1 sk_wake_async()

689

25.5.2 sock_def_wakeup()

690

25.5.3 sock_def_error_report()

690

25.5.4 sock_def_readable()

691

25.5.5 sock_def_write_space()和

sk_stream_write_space()

691

25.5.6 sk_send_sigurg()

692

25.5.7 接收到FIN段后通知进程

692

25.5.8 sock_fasync()

693

25.6 传输控制块的同步锁

694

25.6.1 socket_lock_t结构

694

25.6.2 控制用户进程和下半部间

同步锁

695

25.6.3 控制下半部间同步锁

698

第26章 TCP:传输控制协议

699

26.1 系统参数

699

26.2 TCP的inet_protosw实例

705

26.3 TCP的net_protocol结构

705

26.4 TCP传输控制块

706

26.4.1 inet_connection_sock结构

706

26.4.2 inet_connection_sock_af_ops

结构

710

26.4.3 tcp_sock结构

711

26.4.4 tcp_options_received结构

721

26.4.5 tcp_skb_cb结构

723

26.5 TCP的proto结构和proto_ops

结构的实例

725

26.6 TCP状态迁移图

725

26.7 TCP首部

726

26.8 TCP校验和

727

26.8.1 输入TCP段的校验和检测

728

26.8.2 输出TCP段校验和的计算

729

26.9 TCP的初始化

729

26.10 TCP传输控制块的管理

731

26.10.1 inet_hashinfo结构

732

26.10.2 管理除LISTEN状态之外的

TCP传输控制块

733

26.10.3 管理LISTEN状态的

TCP传输控制块

734

26.11 TCP层的套接口选项

735

26.12 TCP的ioctl

736

26.13 TCP传输控制块的初始化

737

26.14 TCP的差错处理

737

26.15 TCP传输控制块层的缓存

管理

741

26.15.1 缓存管理的算法

741

26.15.2 发送缓存的管理

744

26.15.3 接收缓存的管理

745

第27章 TCP的定时器

746

27.1 初始化

746

27.2 连接建立定时器

747

27.2.1 连接建立定时器处理函数

747

27.2.2 连接建立定时器的激活

751

27.3 重传定时器

751

27.3.1 重传定时器处理函数

751

27.3.2 重传定时器的激活

756

27.4 延迟确认定时器

756

27.4.1 延时确认定时器的处理函数

756

27.4.2 延时确认定时器的激活

758

27.5 持续定时器

758

27.5.1 持续定时器处理函数

758

27.5.2 激活持续定时器

762

27.6 保活定时器

763

27.6.1 保活定时器处理函数

763

27.6.2 激活保活定时器

764

27.7 FIN_WAIT_2定时器

764

27.7.1 FIN_WAIT_2定时器处理函数

765

27.7.2 激活FIN_WAIT_2定时器

765

27.8 TIME_WAIT定时器

766

第28章 TCP连接的建立

767

28.1 服务端建立连接过程

767

28.2 连接相关的数据结构

770

28.2.1 request_sock_queue结构

770

28.2.2 listen_sock结构

771

28.2.3 tcp_request_sock结构

771

28.2.4 request_sock_ops结构

774

28.3 bind系统调用的实现

775

28.3.1 bind端口散列表

775

28.3.2 传输接口层的实现

775

28.4 listen系统调用的实现

779

28.4.1 inet_listen()

779

28.4.2 实现侦听:

inet_csk_listen_start()

780

28.4.3 分配连接请求块散列表:

reqsk_queue_alloc()

781

28.5 accept系统调用的实现

782

28.5.1 套接口层的实现:

inet_accept()

782

28.5.2 传输接口层的实现:

inet_csk_accept()

783

28.6 被动打开

785

28.6.1 SYN cookies

785

28.6.2 第一次握手:接收SYN段

786

28.6.3 第二次握手:

发送SYN+ACK段

793

28.6.4 第三次握手:接收ACK段

798

28.7 connect系统调用的实现

813

28.7.1 套接口层的实现:

inet_stream_connect()

813

28.7.2 传输接口层的实现

815

28.8 主动打开

816

28.8.1 第一次握手:发送SYN段

816

28.8.2 第二次握手:

接收SYN+ACK段

823

28.8.3 第三次握手:发送ACK段

828

28.9 同时打开

828

28.9.1 SYN_SENT状态接收SYN段

828

28.9.2 SYN_RECV状态接收

SYN+ACK段

830

第29章 TCP拥塞控制的实现

831

29.1 拥塞控制引擎

831

29.2 拥塞控制状态机

832

29.2.1 Open状态

833

29.2.2 Disorder状态

833

29.2.3 CWR状态

833

29.2.4 Recovery状态

834

29.2.5 Loss状态

834

29.3 拥塞窗口调整撤销

836

29.3.1 撤销拥塞窗口的检测

837

29.3.2 tcp_undo_cwr()

837

29.3.3 从Disorder拥塞状态撤销

838

29.3.4 从Recovery状态撤销

838

29.3.5 从Recovery拥塞状态撤销

839

29.3.6 从Loss拥塞状态撤销

839

29.4 显式拥塞通知

840

29.4.1 IP对ECN的支持

841

29.4.2 TCP对ECN的支持

841

29.5 拥塞控制状态的处理及转换

843

29.5.1 拥塞控制状态的处理:

tcp_fastretrans_alert()

843

29.5.2 拥塞避免

852

29.6 拥塞窗口的检测:

tcp_cwnd_test()

852

29.7 F-RTO算法

853

29.7.1 进入F-RTO算法处理阶段

853

29.7.2 进行F-RTO算法处理

855

29.8 拥塞窗口的检验

857

29.8.1 tcp_event_data_sent()

857

29.8.2 tcp_cwnd_validate()

858

29.9 支持多拥塞控制算法的机制

859

29.9.1 接口

859

29.9.2 注册拥塞控制算法:tcp_register_

congestion_control()

861

29.9.3 注销拥塞控制算法:tcp_unregister_

congestion_control()

861

29.9.4 选取某种拥塞控制算法: tcp_set_

congestion_control()

861

29.9.5 Linux支持的拥塞控制算法

862

第30章 TCP的输出

864

30.1 引言

864

30.2 最大段长度(MSS)

867

30.3 sendmsg系统调用在TCP中的

实现

870

30.3.1 分割TCP段

871

30.3.2 套接口层的实现

871

30.3.3 传输接口层的实现

871

30.4 对TCP选项的处理

889

30.4.1 构建SYN段的选项

889

30.4.2 构建非SYN段的选项

892

30.5 Nagle算法

893

30.6 ACK的接收

894

30.6.1 tcp_ack()

894

30.6.2 发送窗口的更新

899

30.6.3 根据SACK选项标记重传

队列中段的记分牌

900

30.6.4 重传队列中已经确认段的删除

910

30.7 往返时间测量和RTO的计算

913

30.8 路径MTU发现

915

30.8.1 路径MTU发现原理

915

30.8.2 路径MTU发现时的黑洞

916

30.8.3 有关数据结构的初始化

916

30.8.4 创建路径MTU发现TCP段并

发送

916

30.8.5 路径MTU发现失败后处理

920

30.8.6 处理需要分片ICMP目的

不可达报文

920

30.8.7 更新当前有效的MSS

921

30.8.8 路径MTU发现成功后处理

922

30.9 TCP重传接口

922

第31章 TCP的输入

926

31.1 引言

926

31.2 TCP接收的总入口

927

31.2.1 接收到prequeue队列

930

31.2.2 有效TCP段的处理

931

31.3 报文的过滤

932

31.3.1 过滤器的数据结构

933

31.3.2 安装过滤器

935

31.3.3 卸载过滤器

937

31.3.4 过滤执行

938

31.4 ESTABLISHED状态的接收

938

31.4.1 首部预测

939

31.4.2 接收处理无负荷的ACK段

941

31.4.3 执行快速路径

942

31.4.4 执行慢速路径

945

31.4.5 数据从内核空间复制到用户

空间

948

31.4.6 通过调节接收窗口进行

流量控制

952

31.4.7 确定是否需要发送ACK段

(用于接收的数据从内核空

间复制到用户空间时)

956

31.5 TCP选项的处理

957

31.5.1 慢速路径中快速解析TCP选项

957

31.5.2 全面解析TCP选项

958

31.6 慢速路径的数据处理

961

31.6.1 接收处理预期的段

963

31.6.2 接收处理在接收窗口之外的段

965

31.6.3 接收处理乱序的段

966

31.6.4 tcp_ofo_queue()

969

31.7 带外数据处理

970

31.7.1 检测紧急指针

970

31.7.2 读取带外数据

972

31.8 SACK信息

973

31.8.1 SACK允许选项

973

31.8.2 SACK选项

974

31.8.3 SACK的产生

974

31.8.4 发送方对SACK的响应

975

31.8.5 实现

975

31.9 确认的发送

975

31.9.1 快速确认模式

976

31.9.2 处理数据接收事件

977

31.9.3 发送确认紧急程度和状态

978

31.9.4 延迟或快速确认

979

31.10 recvmsg系统调用在TCP中的

实现

980

31.10.1 套接口层的实现

980

31.10.2 传输接口层的实现

980

31.11 sk_backlog_rcv接口

991

第32章 TCP连接的终止

992

32.1 连接终止过程

993

32.1.1 正常关闭

993

32.1.2 同时关闭

994

32.2 shutdown传输接口层的

实现

994

32.2.1 tcp_shutdown()

994

32.2.2 tcp_send_fin()

995

32.3 close传输接口层的实现:

tcp_close()

995

32.4 被动关闭:FIN段的接收

处理

999

32.5 主动关闭

1002

32.5.1 timewait控制块的数据

结构

1002

32.5.2 timewait控制块取代TCP传输

控制块

1006

32.5.3 启动FIN_WAIT_2或TIME_WAIT

定时器

1008

32.5.4 CLOSE_WAIT、LAST_ACK、

FIN_WAIT1、FIN_WAIT2与

CLOSING状态处理

1010

32.5.5 FIN_WAIT2和TIME_WAIT

状态处理

1013

32.5.6 timewait控制块的2MSL

超时处理

1020

第33章 UDP:用户数据报

1023

33.1 引言

1023

33.1.1 UDP首部

1023

33.1.2 UDP的输入与输出

1024

33.2 UDP的inet_protosw结构

1024

33.3 UDP的传输控制块

1025

33.4 UDP的proto结构和proto_ops

结构的实例

1027

33.5 UDP的状态

1027

33.6 UDP传输控制块的管理

1027

33.7 bind系统调用的实现

1028

33.8 UDP套接口的关闭

1031

33.9 connect系统调用的实现

1032

33.9.1 udp_disconnect()

1033

33.9.2 ip4_datagram_connect()

1033

33.10 select系统调用的实现

1034

33.11 UDP的ioctl

1037

33.12 UDP的套接口选项

1037

33.13 UDP校验和

1038

33.13.1 输入UDP数据报校验和的

计算

1038

33.13.2 输出UDP数据报校验和的

计算

1039

33.14 UDP的输出:sendmsg系统

调用

1040

33.14.1 udp_sendmsg()

1040

33.14.2 udp_push_pending_frames()

1047

33.15 UDP的输入

1048

33.15.1 UDP接收的入口:

udp_rcv()

1048

33.15.2 UDP组播数据报输入:

__udp4_lib_mcast_deliver()

1052

33.15.3 udp_queue_rcv_skb()

1053

33.16 recvmsg系统调用的实现

1055

33.17 UDP的差错处理:

udp_err()

1059

33.18 轻量级UDP

1061

参考文献

1063


作者介绍:

暂无相关内容,正在全力查找中


出版社信息:

暂无出版社相关信息,正在全力查找中!


书籍摘录:

暂无相关书籍摘录,正在全力查找中!



原文赏析:

暂无原文赏析,正在全力查找中!


其它内容:

书籍介绍

《Linux内核源码剖析:TCP/IP实现(套装上下册)》详细论述了Linux内核2.6.20版本中TCP/IP的实现。书中给出了大量的源代码,通过对源代码的详细注释,帮助读者掌握TCP/IP的实现。《Linux内核源码剖析:TCP/IP实现(套装上下册)》根据协议栈层次,从驱动层逐步论述到传输层,包括驱动的实现、接口层的输入输出、IP层的输入输出以及IP选项的处理、邻居子系统、路由、套接口及传输层等内容,全书基本涵盖了网络体系架构全部的知识点。特别是TCP,包括TCP连接的建立和终止、输入与输出,以.及拥塞控制的实现。

《Linux内核源码剖析:TCP/IP实现(套装上下册)》适用于熟悉Linux的基本使用方法,对Linux内核工作原理以及网络知识有一定的了解,而又极想更深入理解各个机制在Linux中的具体实现的用户,包括应用程序员和嵌入式程序员,以及网络管理员等。相关专业的科研人员在工作中遇到问题时,也可以查阅《Linux内核源码剖析:TCP/IP实现(套装上下册)》,理解相关内核部分的实现。此外,计算机相关专业的本科高年级学生和研究生,在学习相关课程(如操作系统、计算机网络等)时,可将《Linux内核源码剖析:TCP/IP实现(套装上下册)》作为辅助教程,与理论相结合以便更好地理解相应的知识点。


书籍真实打分

  • 故事情节:9分

  • 人物塑造:8分

  • 主题深度:8分

  • 文字风格:9分

  • 语言运用:4分

  • 文笔流畅:6分

  • 思想传递:3分

  • 知识深度:9分

  • 知识广度:5分

  • 实用性:4分

  • 章节划分:4分

  • 结构布局:6分

  • 新颖与独特:8分

  • 情感共鸣:4分

  • 引人入胜:6分

  • 现实相关:6分

  • 沉浸感:6分

  • 事实准确性:8分

  • 文化贡献:5分


网站评分

  • 书籍多样性:6分

  • 书籍信息完全性:7分

  • 网站更新速度:4分

  • 使用便利性:9分

  • 书籍清晰度:4分

  • 书籍格式兼容性:3分

  • 是否包含广告:4分

  • 加载速度:3分

  • 安全性:7分

  • 稳定性:4分

  • 搜索功能:9分

  • 下载便捷性:3分


下载点评

  • 在线转格式(325+)
  • 无漏页(486+)
  • 经典(346+)
  • 体验还行(523+)
  • 愉快的找书体验(306+)
  • 赞(407+)
  • 二星好评(373+)
  • 盗版少(257+)
  • 体验差(215+)
  • 三星好评(134+)
  • azw3(570+)

下载评价

  • 网友 宓***莉: ( 2025-01-04 01:04:08 )

    不仅速度快,而且内容无盗版痕迹。

  • 网友 师***怀: ( 2025-01-07 08:41:22 )

    好是好,要是能免费下就好了

  • 网友 堵***格: ( 2024-12-24 18:19:10 )

    OK,还可以

  • 网友 屠***好: ( 2025-01-17 19:11:41 )

    还行吧。

  • 网友 方***旋: ( 2024-12-21 21:46:10 )

    真的很好,里面很多小说都能搜到,但就是收费的太多了

  • 网友 步***青: ( 2025-01-01 06:23:39 )

    。。。。。好

  • 网友 訾***晴: ( 2025-01-16 08:54:28 )

    挺好的,书籍丰富

  • 网友 冯***丽: ( 2025-01-19 01:10:51 )

    卡的不行啊

  • 网友 晏***媛: ( 2024-12-20 15:49:09 )

    够人性化!

  • 网友 冉***兮: ( 2025-01-14 19:43:30 )

    如果满分一百分,我愿意给你99分,剩下一分怕你骄傲

  • 网友 薛***玉: ( 2025-01-05 22:37:50 )

    就是我想要的!!!

  • 网友 石***致: ( 2025-01-04 00:31:58 )

    挺实用的,给个赞!希望越来越好,一直支持。

  • 网友 印***文: ( 2025-01-18 23:41:02 )

    我很喜欢这种风格样式。

  • 网友 曾***文: ( 2025-01-13 12:12:49 )

    五星好评哦


随机推荐