Linux内核网络:实现与理论--序言

Preface - Linux Kernel Networking: Implementation and Theory (2014)https://apprize.best/linux/kernel/1.html

这本书给你一个针对当前Linux内核网络实现和背后理论的指导性地,深入地浏览。近十年,没有什么新书来描述Linux网络。十年时间的动态迭代的Linux内核开发是相当长的时间了。有些重要的内核网路子系统在其他书里都没有被描述过,比如IPv6,IPSec,无线(IEEE802.11),IEEE802.15.4,NFC,InfiniBand等等。在互联网上也是相当少量的信息来描述这些子系统的实现细节。就是这些原因,我写了这本书。

大约十年前,我第一次涉足内核态开发。作为一名开发者,我是在参与Linux-based机顶盒的VoIP项目开始起步的。使用一些USB摄像头的时候在USB协议栈里经常crash,我们不得不深扒代码尝试找到解决办法,因为机顶盒的供应商不想花费时间来解决问题。事实上,并不是他们不想那么做,只是他们不知道怎么做。在那段时间,几乎没有什么文档介绍USB协议栈。奥莱利的Linux Device Driver书也只是第二版(在第三版才添加了USB章节)。所以那个项目的成功作为一个起步对我们很关键。

在处理USB奔溃的问题上,我已经学了很多内核态编程的知识。之后,我有个项目是NAT传输解决方案的时候又被用到。用户态的解决方法太臃肿了,以至于嵌入式设备很快crash了。当我建议使用内核态解决是,我们主管们都非常怀疑,但他们让我试试。内核态的解决方案被证明是非常稳定且相比用户态解决方案来说占用了更少的CPU。因而我已经参与到很多内核态网络项目中去了。这本书是我这么多年开发和研究的结果。

这本书的面向者

这本书是针对计算机专业人士的,包括开发者,软件架构师,设计师,项目管理员和CTO们那些网络相关领域的人士。这些项目可能在一个大范围的专业领域,比如通信,数据中心,嵌入式设备,虚拟化,安全等等。此外,与网络项目或者网络研究或操作系统研究打交道的学生和学术研究员和理论学家都可以在这本书里找到帮助。

这本书的章节结构

在第一章,你会发现一个基本的关于Linux内核和Linux网络协议栈的概览。这张的其他主题是网络设备,socket字符流,那些Rx和Tx数据流的实现。第一章好包括了Linux内核态网络开发模型这一小节。

在第二章你会学到NetLink套接字相关知识,提供用户态和内核态双向通信的机制,被用于网络子系统也被用于其他子系统。在这章你也会发现专门介绍基础的NetLink套接字这小节。

在第三章你会学习到ICMP协议,ICMP协议是用来通过网络层的错误和控制信息来保持系统的正确性。你会学到在IPv4和IPv6里ICMP协议的实现。

第四章深究IPv4协议-如果没有它,就没有互联网和现代生活。你会写到IPv4报文头的结构,包括Rx和Tx数据流,包括IP选项,包括分片和组片以及为什么要这样,包括转发数据包,这是IPv4一个很重要的功能。

第五章和第六章留个IPv4路由子系统。在第五章,你会学习到路由表是如何查找的,路由表是如何组织的,IPv4路由子系统里使用了哪些优化,IPv4的路由缓存是如何清理的。第六章讨论了加强版的路由主题比如组播路由,策略路由和多路径路由。

第七章尝试解释邻居协议子系统。你会学习到IPv4里的ARP协议和IPv6里的NDISC协议,已经这两个协议之间的不同点。你也会学到IPv6里的重复地址探测机制。

第八章讨论IPv6协议,似乎是IPv4地址枯竭的必选解决方案。这章描述了IPv6的实现并讨论了IPv6的地址,IPv6的报文头和拓展报文头,IPv6的自动配置,Rx数据流和转发机制。它也会在MLD协议里提及。

第九章涉及到netfilter防火墙子系统。你会学习到netfilter钩子以及他们是如何被注册的,连接跟踪,IP路由表和NAT,以及连接跟踪与NAT的回调函数。

第十章涉及到IPsec,非常复杂的网络子系统之一。IPsec里的IKE协议(在用户态实现的)和加解密部分只是简单的介绍下(具体内容超出了本书范围)。你将学习到XFRM框架,是Linux IPsec子系统的基础,它有两个重要的结构体:XFRM policy和XFRM state。ESP协议也是简单的介绍下,也就是在传输模式时Rx和Tx的数据流。这章包括了XFRM查找小节和NAT遍历的简短章节。

第十一章讨论了第四层协议,从最通用的协议UDP和TCP开始,也讨论了两个新的协议SCTP和DCCP。

第十二章涉及到了Linux里的无线协议(IEEE 802.11)。你将学到mac80211子系统以及他们的实现,多种无线网络的拓扑,节能模式,IEEE802.11n协议以及包集合体。在本章也有一小节讨论无线混杂网络。

第十三章讨论了InfiniBand子系统,是一种数据中心越来越流行的技术。你会学习到RDMA协议栈的组织,在InfiniBand协议里的地址,InfiniBand数据包的组织,和RDMA相关的API。

第十四章包括了进阶的话题比如Linux命名空间,尤其是网络命名空间,忙轮询套接字,蓝牙子系统,IEEE802.15.4子系统,近场通信(NFC)子系统,PCI子系统等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值