具体描述
这是一本介绍协定核心实现原始程式码的书,不是介绍“协定”的书。
本书作者做过一些网路通信产品开发,所以对网路内部实现很感兴趣,于是在学习和工作时间之余记录下分析和调用Linux 的网路通讯协定核心的心得体会。
很多人对网路非常感兴趣,但却不理解内部是如何运作的,或知之不多,最终的结果就是行之不远。本书尝试用浅显的语言和合理的安排带领读者到Linux 核心网路模组的程式码丛林中一游,既让你有所知,也让您有所思。
Linux 是经过成千上万用户使用过并且还将不断发展的,目前Linux 在伺服器市场上已经证明其设计的精巧和健壮,特别是当核心也从非抢占式发展成为抢占式后,嵌入设备市场上也将要掀起一股风浪。于是Linux 核心分析的资料层出不穷,但有的太老(核心的程式码还使用2.2 的),有的对网路部分的分析不甚详细,因此作者萌发了分析整个Linux 网路通讯协定核心的想法。
希望能在研究一些经典程式码时发现与时俱进的部分,?砖引玉,吸引更多的人参与到研究网路通讯协定核心的实现技巧以及移植工作上,而不用对照枯燥的RFC 文件和程式码。
作者简介
目录信息
第1 章 作业系统、网路、协定核心、程式码
1.1 L nux 作业系统介绍
1.1.1 L nux 作业系统架构简介
1.1.2 网路通讯协定发展介绍
1.2 本书的组织和安排
1.2.1 基本的资料结构和电脑术语
1.2.2 图片风格展示
1.2.3 本书的组织
第2 章 核心系统初始化
2.1 系统初始化流程简介
2.2 核心档案解读
2.2.1 ELF 档案格式
2.2.2 L nk Scr pts 知识
2.2.3 L nux 核心镜像解析
2.3 中断及任务呼叫管理
2.3.1 中断及软中断模型
2.3.2 各种语系环境下的切换
2.3.3 核心下的同步与互斥
2.3.4 各种非同步手段
2.4 虚拟档案系统
2.5 网路通讯协定核心各部分初始化
2.5.1 网路基础系统初始化
2.5.2 网路记忆体管理
2.5.3 网路档案系统初始化
2.5.4 网路通讯协定初始化
2.5.5 初步瞭解路由系统
2.6 Linux 设备管理
2.6.1 底层PCI 模组的初始化
2.6.2 网路设备介面初始化函式
第3 章 配置网路系统
3.1 配置过程分析
3.1.1 配置是如何下达到核心的
3.1.2 socket 系统呼叫
3.1.3 octl 程式码的实现
3.1.4 loopback 介面的配置过程
3.1.5 IP 别名的实现
3.2 回顾FIB 系统初始化
3.3 深入FIB 系统
3.4 FIB 系统发生了什么样的变化
3.5 直接连结路由表
3.6 介面状态变化的处理过程
第4 章 网路层实现的初步研究
4.1 从p ng 127.0.0.1 开始旅程
4.2 再次相遇Socket 系统呼叫
4.3 IP 资料封包内容格式
4.4 send 系统呼叫
4.5 在路由系统中游历
4.5.1 寻找出口
4.5.2 当目的地址是远端主机时
4.5.3 建立对应路由cache 表项
4.5.4 建立对应芳邻表项
4.6 回到发送的路径
4.6.1 IP 层发送过程
4.6.2 揭密hh_cache
4.7 ARP 的作用
4.7.1 ARP 的机制
4.7.2 ARP 封包格式
4.7.3 L nux ARP 协定的实现
4.8 到达设备驱动层
4.8.1 Loopback 设备的发送过程讯框数据链路层格式
4.8.2 Loopback 设备的发送过程
4.9 接收过程:从中断到路由系统
4.10 ICMP
4.10.1 ICMP 封包格式
4.10.2 p ng 本机地址及回环地址
4.10.3 p ng 外部位址
4.11 从核心到用户
第5 章 传输层实现的研究
5.1 进一步到UDP
5.1.1 UDP 用户程式码
5.1.2 UDP 资料封包格式
5.1.3 伺服器端b nd 的实现
5.1.4 接收程式码
5.1.5 释放UDP 的socket
5.2 更高阶的TCP
5.2.1 TCP 用户程式码
5.2.2 TCP 资料封包格式
5.2.3 TCP 协定及socket 的初始化
5.2.4 伺服器端b nd 和l sten 的实现
5.2.5 伺服器端accept 的实现
5.2.6 用户端connect 的实现—发起三次握手
5.2.7 TCP 封包的接收
5.2.8 三次握手的实现
5.2.9 核心收到封包转到用户状态
5.2.10 释放TCP 的socket
5.3 TCP 拥塞控制
5.3.1 TCP 拥塞控制机制介绍
5.3.2 L nux 核心拥塞控制功能的实现
第6 章 Select 系统呼叫的实现机制
6.1 如何使用select
6.2 Select 的核心实现
第7 章 资料连结层协定实现
7.1 基本的2 层知识
7.2 L nux 桥实现的基本框架
7.3 VLAN
7.3.1 VLAN 概念
7.3.2 L nux 下VLAN—存在巨大的缺陷
7.4 LACP 协定
7.4.1 聚合连接埠简介
7.4.2 LACP 在L nux 中的实现
7.5 2 层功能总结
后 记
· · · · · · (收起)
读后感
用户评价
这本书的魅力在于它的“深度”与“实用性”的完美结合。作为一名Linux系统的爱好者,我一直渴望能够更深入地了解网络是如何在Linux环境下工作的。《从Linux 直入TCP/IP核心世界》这本书,正好满足了我的这一需求。它不仅仅是关于TCP/IP协议的理论书籍,更是一本教你如何利用Linux工具去理解和操控网络的实践指南。 我特别赞赏书中对于一些经典网络命令的详尽解读,比如`ping`、`traceroute`、`telnet`等。这些工具看似简单,但通过作者的深入剖析,我才明白它们背后隐藏着多么复杂的网络交互过程。尤其是在分析`traceroute`输出结果的时候,我能够结合书中关于路由和IP转发的知识,准确地定位网络延迟的瓶颈。这种知其然,更知其所以然的学习体验,让我感觉受益匪浅。
说实话,在翻开这本书之前,我对TCP/IP协议的理解只停留在“好像知道它是什么”的层面。然而,《从Linux 直入TCP/IP核心世界》这本书,彻底改变了我的认知。它以一种非常直观且易于接受的方式,将那些曾经让我望而却步的底层协议细节,变得清晰明了。 我喜欢书中对数据包在网络堆栈中上下传递的过程的描述。作者利用Linux的强大工具,让我们能够“看到”数据包在不同层之间是如何被封装和解封装的,以及每个头部字段的作用。例如,在讲解IP头部时,书中通过`ip addr`和`ip route`等命令的分析,让我深刻理解了IP地址和路由表是如何决定数据包的下一跳的。这种将抽象概念具象化的方法,极大地降低了学习的门槛。
这本书对我来说,真是一次令人振奋的网络技术探索之旅。作者仿佛是一位经验丰富的向导,带着我们深入Linux这个广阔的操作系统,去揭示TCP/IP协议栈那些隐藏在表面之下的奥秘。《从Linux 直入TCP/IP核心世界》这本书,没有使用任何不必要的花哨的语言,而是用最直接、最有效的方式,将知识传递给读者。 我尤其欣赏书中在讲解过程中,总是能够将抽象的网络概念与Linux系统中的具体实现联系起来。比如,当讲到套接字(Socket)编程时,书中会结合`socket`系统调用和相关的Linux命令,展示如何创建、绑定、监听和连接套接字,以及如何进行数据的读写。这种从代码到协议,再到系统实现的完整链条的讲解,让我对网络通信的整个流程有了前所未有的深刻理解。
我真的觉得,这本书对于那些想要深入理解网络底层原理,又不想被复杂理论吓退的读者来说,简直是量身定做的。作者在内容组织上非常用心,将Linux这个强大的操作系统与TCP/IP协议的各个层面巧妙地融合在一起。在阅读过程中,我仿佛置身于一个由Linux命令构建的实验室,通过一步步的命令行操作,去拆解、去分析TCP/IP协议栈的每一个环节。 最让我印象深刻的是,书中对于数据包在网络中传输的整个生命周期的描述,从应用层数据的产生,到传输层TCP/UDP的封装,再到网络层IP的寻址,直至链路层和物理层的实际传输,每一个细节都描绘得非常生动。特别是当讲到端口的概念时,作者通过`netstat`等命令的演示,让我们看到了不同应用程序如何通过端口与网络进行通信,这对于理解网络服务的运行机制至关重要。
这本书简直就是我踏入网络世界的一盏明灯!一直以来,我对网络传输背后的原理充满了好奇,但又觉得深奥难懂。市面上很多书籍要么过于理论化,要么就停留在应用层面,让人难以窥探其精髓。《从Linux 直入TCP/IP核心世界》这本书,恰恰填补了这个空白。它没有像很多入门书籍那样,上来就给你灌输一堆晦涩的概念,而是巧妙地将Linux系统这个大家熟悉的工具,作为切入点,让我们能够亲手去“触摸”和“观察”TCP/IP协议的工作过程。 我尤其喜欢它在讲解时,不仅仅停留在理论的描述,而是辅以大量的Linux命令和实际操作。例如,在讲解TCP三次握手的时候,作者并没有仅仅抛出“SYN, SYN-ACK, ACK”这几个词,而是指导我们如何使用`tcpdump`这样的工具,抓包分析,直观地看到数据包的往来,理解每一个步骤的意义。这种“动手实践”的教学方式,让我不再是被动地接受信息,而是主动地去探索和发现。书中的很多例子都非常贴近实际工作场景,解决了我之前在实际网络问题排查中遇到的很多困惑。