好书推荐 好书速递 排行榜 读书文摘

精通Linux内核网络

精通Linux内核网络
作者:Rami Rosen
译者:袁国忠
出版社:人民邮电出版社
出版年:2015-06
ISBN:9787115392930
行业:因特网
浏览数:3

内容简介

★专注于各网络协议实现技术的精髓及其遵循的指导方针和原则。

★重点讲解数据包在Linux内核网络栈中的传输过程,阐述其与网络各层及各子系统之间的交互。

★从网络开发者视角,配合清晰图表,深入剖析Linux内核网络子系统的内部细节及核心实现。

本书讨论Linux 内核网络栈的实现及其原理,深入而详尽地分析网络子系统及其架构,主要内容包括:内核网络基础知识、Netlink 套接字、ARP、邻居发现和ICMP 等重要协议的实现、IPv4 和IPv6 的深入探索、Linux 路由选择、Netfilter 和IPsec 的实现、Linux 无线网络、InfiniBand 等。

本书不仅适合从事网络相关项目的专业人员参考,也能为相关研究人员和学生提供极大帮助。

......(更多)

作者简介

Rami Rosen 资深软件工程师,Linux内核网络专家。从业十余年间,参与过多个尖端Linux内核项目,曾就Linux内核网络和虚拟化发表过多篇文章,并做过多次演讲。博客地址:。

袁国忠 自由译者;2000年起专事翻译,主译图书,偶译新闻稿、软文;出版译著40余部,其中包括《C++ Prime Plus中文版》《CCNA学习指南》《CCNP ROUTE学习指南》《面向模式的软件架构:模式系统》《Android应用UI设计模式》《风投的选择:谁是下一个十亿美元级公司》等,总计700余万字;专事翻译前,从事过三年化工产品分析和开发,做过两年杂志和图书编辑。

......(更多)

目录

第1章 绪论  1

1.1 Linux网络栈  2

1.2 网络设备  4

1.2.1 网络设备中的NAPI  5

1.2.2 数据包的收发  5

1.2.3 套接字缓冲区  7

1.3 Linux内核网络开发模型  10

1.4 总结  12

第2章 Netlink套接字  13

2.1 Netlink簇  13

2.1.1 Netlink套接字库  15

2.1.2 结构sockaddr_nl  15

2.1.3 用于控制TCP/IP联网的用户空间包  15

2.1.4 内核Netlink套接字  16

2.1.5 Netlink消息报头  20

2.1.6 NETLINK_ROUTE消息  22

2.1.7 在路由选择表中添加和删除路由选择条目  24

2.2 通用Netlink协议  25

2.2.1 创建和发送通用Netlink消息  29

2.2.2 套接字监视接口  31

2.3 总结  32

2.4 快速参考  32

第3章 Internet控制消息协议(ICMP)  36

3.1 ICMPv4  36

3.1.1 ICMPv4的初始化  37

3.1.2 ICMPv4报头  38

3.1.3 接收ICMPv4 消息  42

3.1.4 发送ICMPv4 消息:目的地不可达  43

3.2 ICMPv6  47

3.2.1 ICMPv6初始化  47

3.2.2 ICMPv6报头  48

3.2.3 接收ICMPv6消息  49

3.2.4 发送ICMPv6消息  52

3.3 ICMP套接字(ping套接字)  55

3.4 总结  56

3.5 快速参考  56

3.5.1 方法  56

3.5.2 表格  57

3.5.3 procfs条目  58

3.5.4 使用iptables创建“目的地不可达”消息  59

第4章 IPv4  61

4.1 IPv4报头  62

4.2 IPv4的初始化  63

4.3 接收IPv4数据包  64

4.4 接收IPv4组播数据包  67

4.5 IP选项  69

4.5.1 时间戳选项  71

4.5.2 记录路由选项  74

4.5.3 IP选项和分段  82

4.5.4 创建IP选项  84

4.6 发送IPv4数据包  85

4.7 分段  89

4.7.1 快速路径  90

4.7.2 慢速路径  93

4.8 重组  94

4.9 转发  99

4.10 总结  101

4.11 快速参考  101

4.11.1 方法  102

4.11.2 宏  104

第5章 IPv4路由选择子系统  105

5.1 转发和FIB  105

5.2 在路由选择子系统中进行查找  107

5.3 FIB表  110

5.3.1 FIB信息  110

5.3.2 缓存  115

5.3.3 下一跳  115

5.3.4 策略路由选择  117

5.3.5 FIB别名  118

5.4 ICMPv4重定向消息  121

5.4.1 生成ICMPv4重定向消息  122

5.4.2 接收ICMPv4重定向消息  123

5.4.3 IPv4路由选择缓存  125

5.5 总结  126

5.6 快速参考  126

5.6.1 方法  127

5.6.2 宏  128

5.6.3 表  128

5.6.4 路由标志  129

第6章 高级路由选择  131

6.1 组播路由选择  131

6.1.1 IGMP  132

6.1.2 组播路由选择表  133

6.1.3 组播转发缓存(MFC)  134

6.1.4 组播路由器  136

6.1.5 vif设备  137

6.1.6 IPv4组播接收路径  138

6.1.7 方法ip_mr_forward()  141

6.1.8 方法ipmr_queue_xmit()  143

6.1.9 方法ipmr_forward_finish()  145

6.1.10 组播流量中的TTL  146

6.2 策略路由选择  146

6.2.1 策略路由选择的管理  147

6.2.2 策略路由选择的实现   147

6.3 多路径路由选择   148

6.4 总结   149

6.5 快速参考   149

6.5.1 方法   149

6.5.2 宏   151

6.5.3 procfs组播条目   152

6.5.4 表   152

第7章 Linux邻接子系统   153

7.1 邻接子系统的核心   153

7.1.1 创建和释放邻居   160

7.1.2 用户空间和邻接子系统之间的交互   161

7.1.3 处理网络事件   163

7.2 ARP协议(IPv4)   163

7.2.1 ARP:发送请求   165

7.2.2 ARP:接收请求和应答   168

7.3 NDISC协议(IPv6)   174

7.3.1 重复地址检测(DAD). 174

7.3.2 NIDSC:发送请求   176

7.3.3 NDISC:接收邻居请求和通告   179

7.4 总结   185

7.5 快速参考   186

7.5.1 方法   186

7.5.2 宏   189

7.5.3 结构neigh_statistics  190

7.5.4 表   191

第8章 IPv6   192

8.1 IPv6简介   192

8.2 IPv6地址   193

8.2.1 特殊地址   193

8.2.2 组播地址   194

8.3 IPv6报头   195

8.4 扩展报头   197

8.5 IPv6初始化   199

8.6 自动配置   200

8.7 接收IPv6数据包   201

8.7.1 本地投递  204

8.7.2 转发  206

8.8 接收IPv6组播流量  210

8.9 组播侦听者发现(MLD)  211

8.9.1 加入和退出组播组  212

8.9.2 MLDv2组播侦听者报告  215

8.9.3 组播源过滤  215

8.10 发送IPv6 数据包  220

8.11 IPv6 路由选择  221

8.12 总结  221

8.13 快速参考  221

8.13.1 方法  221

8.13.2 宏  224

8.13.3 表  224

8.13.4 特殊地址  225

8.13.5 IPv6路由选择表的管理  226

第9章 Netfilter  227

9.1 Netfilter框架  227

9.2 Netfilter挂接点  228

注册Netfilter钩子回调函数  229

9.3 连接跟踪  230

9.3.1 连接跟踪的初始化  231

9.3.2 连接跟踪条目  234

9.3.3 连接跟踪辅助方法和期望连接  238

9.3.4 iptables  241

9.3.5 投递到当前主机  243

9.3.6 转发数据包  245

9.3.7 网络地址转换(NAT)  245

9.3.8 NAT钩子回调函数和连接跟踪钩子回调函数  247

9.3.9 NAT钩子回调函数  250

9.3.10 连接跟踪扩展  252

9.4 总结  253

9.5 快速参考  253

9.5.1 方法  253

9.5.2 宏  255

9.5.3 表  255

9.5.4 工具和库  256

第10章 IPsec  257

10.1 概述  257

10.2 Internet密钥交换(IKE)  257

10.3 IPsec和加密  259

10.4 XFRM框架  259

10.4.1 XFRM的初始化  260

10.4.2 XFRM策略  260

10.4.3 XFRM状态(安全关联)   263

10.5 IPv4 ESP的实现  266

10.6 接收IPsec数据包(传输模式)  268

10.7 发送IPsec数据包(传输模式)  271

10.8 XFRM查找  272

10.9 IPsec的NAT穿越功能  275

10.10 总结  276

10.11 快速参考  276

10.11.1 方法  276

10.11.2 表  278

第11章 第4层协议  280

11.1 套接字  280

11.2 创建套接字  281

11.3 用户数据包协议(UDP)  285

11.3.1 UDP的初始化  286

11.3.2 发送UDP数据包  287

11.3.3 接收来自网络层(L3)的UDP数据包  290

11.4 传输控制协议(TCP)  293

11.4.1 TCP报头  293

11.4.2 TCP的初始化  295

11.4.3 TCP定时器  296

11.4.4 TCP套接字的初始化  297

11.4.5 TCP连接的建立  297

11.4.6 接收来自网络层(L3)的TCP数据包  298

11.4.7 发送TCP数据包  299

11.5 流控制传输协议(SCTP)  300

11.5.1 SCTP数据包和数据块  301

11.5.2 SCTP块头  302

11.5.3 SCTP块  302

11.5.4 SCTP关联  303

11.5.5 建立SCTP关联  305

11.5.6 接收SCTP数据包  305

11.5.7 发送SCTP数据包  306

11.5.8 SCTP心跳  306

11.5.9 SCTP多流  306

11.5.10 SCTP多宿主  307

11.6 数据报拥塞控制协议(DCCP)  307

11.6.1 DCCP报头  307

11.6.2 DCCP的初始化  309

11.6.3 DCCP套接字的初始化  310

11.6.4 接收来自网络层(L3)的DCCP数据包  311

11.6.5 发送DCCP数据包  311

11.6.6 DCCP和NAT  312

11.7 总结  313

11.8 快速参考  313

11.8.1 方法  313

11.8.2 宏  315

11.8.3 表  315

第12章 无线子系统  317

12.1 mac80211子系统  317

12.2 802.11 MAC帧头  318

12.3 802.11 MAC帧头的其他成员  320

12.4 网络拓扑  321

12.4.1 基础设施BSS  321

12.4.2 IBSS(对等模式)  322

12.5 省电模式  322

12.5.1 进入省电模式  322

12.5.2 退出省电模式  322

12.5.3 处理组播/广播缓冲区  323

12.6 管理层  325

12.6.1 扫描  325

12.6.2 身份验证  325

12.6.3 关联  325

12.6.4 重新关联  325

12.7 mac80211的实现  326

12.7.1 接收路径  328

12.7.2 传输路径  328

12.7.3 分段  329

12.7.4 mac80211 debugfs   330

12.7.5 无线模式   331

12.8 高吞吐量(IEEE 802.11n)   331

12.9 网状网络(802.11s)   334

12.9.1 HWMP   335

12.9.2 组建网状网络   336

12.10 Linux 无线开发流程   337

12.11 总结   337

12.12 快速参考   338

12.12.1 方法   338

12.12.2 表   341

第13章 InfiniBand   343

13.1 RDMA 和InfiniBand概述   343

13.1.1 RDMA栈的组织结构   344

13.1.2 RDMA技术的优点   345

13.1.3 InfiniBand硬件组件   345

13.1.4 InfiniBand中的编址   345

13.1.5 InfiniBand的功能   346

13.1.6 InfiniBand数据包   346

13.1.7 管理实体   347

13.2 RDMA资源   348

13.2.1 RDMA设备   348

13.2.2 PD   350

13.2.3 AH   350

13.2.4 MR   350

13.2.5 FMR池   351

13.2.6 MW   352

13.2.7 CQ   352

13.2.8 XRC   353

13.2.9 SRQ   353

13.2.10 QP   355

13.2.11 工作请求的处理   360

13.2.12 RDMA架构支持的操作   361

13.2.13 组播组   365

13.2.14 用户空间RDMA API和内核级RDMA API的差别   365

13.3 总结   366

13.4 快速参考   366

第14章 高级主题  372

14.1 网络命名空间  372

14.1.1 命名空间的实现  373

14.1.2 UTS命名空间的实现  381

14.1.3 网络命名空间的实现  383

14.1.4 网络命名空间的管理  388

14.2 cgroup  392

14.2.1 cgroup的实现  393

14.2.2 cgroup设备控制器:一个简单示例  395

14.2.3 cgroup内存控制器:一个简单示例  396

14.2.4 net_prio模块  396

14.2.5 分类器cls_cgroup  397

14.2.6 挂载cgroup子系统  398

14.3 频繁轮询套接字  399

14.3.1 全局启用  400

14.3.2 对特定套接字启用  401

14.3.3 调整和配置  401

14.3.4 性能  401

14.4 Linux蓝牙子系统  401

14.4.1 HCI层  404

14.4.2 HCI连接  406

14.4.3 L2CAP  407

14.4.4 BNEP  407

14.4.5 蓝牙数据包接收示意图  408

14.4.6 L2CAP扩展功能  409

14.4.7 蓝牙工具  409

14.5 IEEE 802.15.4和6LoWPAN  410

14.5.1 邻居发现优化  411

14.5.2 Linux内核的6LoWPAN实现  412

14.6 NFC  415

14.6.1 NFC标签  415

14.6.2 NFC设备  416

14.6.3 通信模式和操作模式  416

14.6.4 主机控制器接口  417

14.6.5 Linux对NFC的支持  417

14.6.6 用户空间架构  421

14.6.7 Android NFC  421

14.7 通知链  422

14.8 PCI子系统  425

14.9 组合网络设备  428

14.10 PPPoE协议  428

14.10.1 PPPoE报头  429

14.10.2 PPPoE的初始化  430

14.10.3 PPPoE数据包的收发  432

14.11 Android  435

14.11.1 Android联网技术  436

14.11.2 Android内部原理:资料  437

14.12 总结  438

14.13 快速参考  438

14.13.1 方法  438

14.13.2 宏  443

附录A Linux API  444

附录B 网络管理  520

附录C 术语表  537

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看