出版时间:2010-4 出版社:北京航空航天大学出版社 作者:秦健 页数:578
Tag标签:无
前言
学习过TCP/IP协议的读者可能会感觉面对长篇大论的一堆文字往往不知道从何入手,甚至很多读者在认真阅读之后也无法领会协议的作用,更无法进入内核的协议栈阅读代码,以至于无法从事网络方面的开发与维护。然而,高速发展的网络时代要求技术人员必须快速掌握和运用协议的知识,那么有没有一种有效的方法可以帮助我们实现这一目标呢?相信读者可以在本书中找到答案。理论的学习固然是基础,但是不一定具备了理论才开始阅读代码,就像以往大家只采取背单词、记语法的方式学英语,结果十几年之后仍然不会说英语,不会用英语;因为这种英语教学方法只停留在理论层上,现代的英语教学则打破了以理论为主线的学习方法,从应用性和实用性出发,极大改变了学习的效果。因此,本书借鉴现代英语的学习模式,选择从实际应用出发,以应用程序为主线进入Linux内核,通过应用程序的工作过程层层解析内核的协议栈,揭示协议栈的工作路线及网络的真实过程,帮助读者彻底掌握协议栈,使其在阅读完本书之后有一种登上泰山顶峰的兴奋之情。目前,市场针对Linux网络的讲解书籍已经很多,但内容基本都是对理论的泛泛而谈,有的书籍缺少主线,有的书籍缺少与实际应用的结合,有的书籍采用的内核版本过于陈旧,这些问题加大了阅读的难度,导致很多读者使用“压箱子底”的办法放弃了学习。相反,本书克服了上述问题,并且在描述每一个关键过程时,采取穿插图片和逐行解释的方式解决了这些难点。本书针对的是2.6版本的Linux内核,对于内核的进程管理、内存管理、文件系统等内容,读者可以借鉴本书推荐书籍或者直接跳过这些内容只阅读核心部分;对于难以理解的内容可以先放一放,往往在读第二遍时就会自然而解,因为内核的知识点是互为补充的。由于内容繁多,不足之处在所难免,请读者指正。广州工程技术职业学院冯伟老师对本书的图片编辑提供了帮助,罗燕军、杨永祥、张文盛、李华、倪巍、冯伟、刘国兵、葛德奇、朱德良、罗兵、彭海、白瑜、颜诗敏、傅海荧、李柱栋、盛晓辉、修宸、张泽荣、陈嘉顺、时安营、周丹、江均勇、杨硕、罗伟彬、李洪彬、杨春雷、付金平、缪晓及钟海文也对本书的编辑提供了支持,在此向他们的辛勤付出表示感谢。
内容概要
本书以应用程序为线索,详细描述了数据包在协议栈的分段、重组、发送、接收过程,同时分析了路由的初始化和设置过程,主要包括socket应用程序、TCP/IP协议、路由、通知链、邻居子系统等内容。全书涵盖了协议栈的全部知识点,对于广大的读者来说这是一本极其难得的技术资料。同时,书中论述了网络设备的工作原理,解释了RTL8169和嵌入式CS8900、DM9000网卡设备的核心过程。 本书可作为3G网络开发人员、嵌入式通信产品开发人员、网络应用开发人员、网络管理人员及网络爱好者、从事网络方向的本科生、研究生的参考书。
作者简介
秦健,嵌入式研发工程师。精通Linux内核,多年从事嵌入式软硬件开发,使用Linux平台设计电子产品。已经三十四岁的他凭借一颗热爱技术、永不放弃的心,十年如一地坚持技术研发的人生道路,推翻了“三十岁是技术员坟墓”的谬论,为年轻工程师树立了榜样。
书籍目录
第1章 本书的计划 1.1 基本路线和要求 1.2 TCP/IP协议层的划分与基本知识 1.3 函数到系统调用的过程 1.4 网络文件系统第2章 socket的创建 2.1 本章几个重要数据结构 2.2 分配并初始化socket结构 2.3 使用协议族的函数表初始化socket 2.4 分配并初始化sock结构 2.5 TCP协议对sock结构初始化 2.6 socket与文件系统的关联第3章 socket地址设置 3.1 地址设置接口 3.2 地址结构定义 3.3 地址类型 3.4 设置地址和端口 3.5 网络空间总管init_net第4章 路由 4.1 路由函数表结构及关系图 4.2 路由函数表的初始化 4.3 通过路由函数表查找路由信息 4.4 路由的设置及相关结构的初如化 4.5 基于输出方向的路由表查找与创建 4.6 基于输入方向的路由表查找与创建第5章 通知链 5.1 设备通知链节点的挂入 5.2 地址通知链节点的挂入 5.3 通知链的调用和执行第6章 netlink概述 6.1 netlink的创建 6.2 注册路由的netlink 6.3 通过netlink通信第7章 监听连接请求 7.1 内核的监听函数 7.2 内核的监听队列第8章 接收连接请求 8.1 接收连接函数 8.2 异步接收方式 8.3 获取连接请求第9章 准备连接请求 9.1 内核的连接函数 9.2 分配数据包结构和数据块空间 9.3 构建、发送TCP数据包 9.4 进化成IP数据包 9.5 进化成以太网数据包 9.6 发送以太网数据包第10章 邻居子系统 10.1 邻居子系统的初始化 10.2 查找邻居结构 10.3 邻居子系统的发送事件 10.4 邻居子系统的接收处理第11章 流量控制 11.1 排队规则的初始 11.2 排队规则的入队和发送第12章 建立连接的过程 12.1 驱动程序接收并建立数据包 12.2 查找数据包类型且调用其处理函数 12.3 接收或转发IP数据包 12.4 TCP数据包的处理 12.5 3次握手过程第13章 Internet控制信息的传输 13.1 发送ICMP信息 13.2 接收ICMP信息第14章 数据包的分段与重组 14.1 数据包的分段发送 14.2 数据包的分段接收和重组 14.3 分段数据包的接收队列 14.4 查找与创建分段队列 14.5 释放和销毁分段队列第15章 发送和接收数据包 15.1 内核的发送、接收函数 15.2 客户端发送数据包 15.3 服务器接收数据包第16章 socket的关闭 16.1 内核的关闭函数 16.2 服务器与客户端的共同关闭索引参考文献
章节摘录
插图:1.本书的主要特点本书以socket应用过程为路线,以函数调用为线索,按照代码的执行线路将整个网络的组织和架构串联成一个整体,这是本书的最大特色。知识点模块化是本书的另一个特点,全部的知识点被分布到各个章节结合实际场景叙述,有时在函数的过程中登台亮相,也有时随着代码的剖析赫然而出,这种灵活的安排加强了阅读的流畅性。2.socket的概念与意义socket这个单词是插座的意思,但是在计算机领域中有时称为插口,也有时称为套接字;无论什么称谓其作用是不变的,它是应用程序在网络通信中的桥梁与纽带。举一个电话通信的例子,在这个例子中用客户与服务商通电话的过程来说明socket的含义与作用。客户需要打电话给服务商,因此例子中有2部电话就好比2个socket进程,电话号码是它们的socket地址,客户的电话相当于客户端socket;同理,服务商的电话相当于服务器的socket。现在客户拿起电话开始拔打服务商的电话号码,相当于客户端socket向服务器socket发出连接请求;服务商如果此时正好空闲就可以接听电话,相当于服务器socket在等待连接请求,电话铃响起说明服务器soeket已经接收到了连接请求,此时服务商拿起电话后双方就可以正式通话了,相当于客户端与服务器的socket连接成功;通话过程中客户的声音被传送到服务商的电话中,相当于客户端socket发送数据而服务器socket接收数据;通话完成后,挂起电话则相当于关闭客户端的socket和服务器的socket。
编辑推荐
《追踪Linux TCP/IP代码运行·基于2.6内核》:从事技术性工作十余年间,作者不断地探索、研究有效的学习方法,不断地提高学习效果,最终在分析Linux内核中得出了“用中学习、用中理解”的方法。这种方法在《追踪Linux TCP/IP代码运行·基于2.6内核》中得到了很好的运用,能帮助读者顺利进入Linux的网络世界,也能使读者掌握正确的学习方法,这就是我们常讲的“授人以鱼,不如授人以渔”。《追踪Linux TCP/IP代码运行·基于2.6内核》采取了从应用到内核,从实践到理论,从软件到硬件的讲解方式。全书通过应用程序这条主线,帮助读者剖析网络通信的具体过程和细节,让读者理解协议线的具体内容,提高读者的网络开发能力。读者在学习时不需要具备网络知识,只需要具备一定的C语言基础就可以顺利阅读。
图书封面
图书标签Tags
无
评论、评分、阅读与下载