本书讲述了为什么设计一个有效的协议比了解一个协议如何工作更重要,在解释协议行为的同时还介绍了它的核心概念和基本原理。为了进一步弥补长期以来设计和实现之间存在的差距,书中讨论了在何处以及如何基于Linux系统实现协议的设计。本书详细、全面地介绍了包括硬件(8B/10B、OFDM、CRC32、CSMA/CD和crypto)、驱动程序(以太网和PPP)、内核(最长前缀匹配、校验和、NAT、TCP流量控制、套接字、整形器、调度器、防火墙和VPN),以及后台程序(RIP/OSPF/BGP、DNS、FTP、SMTP/POP3/IMAP4、HTTP、SNMP、SIP、流媒体和P2P)实现的56个开源实例。
本书特点
逻辑推理为什么、哪里以及如何设计和实现协议。
56个开源代码明确地描述了核心协议和机制。
4个附录介绍因特网、开源社区、Linux内核、开发工具和网络工具。
包含69个有关历史演变(33)、行动原则(26)和性能问题(10)的工具条。
每章后面都有常见问题解答和“常见陷阱”。
课堂所用PPT以及习题答案可以通过课程网站www。mhhe。com/lin获得。
Computer Networks:An Open Source Approach
出版者的话
译者序
前言
作者简介
第1章 基础知识
1.1 计算机网络互联的需求
1.1.1 连通性:节点、链路、路径
1.1.2 可扩展性:节点的数量
1.1.3 资源共享
1.2 基本原理
1.2.1 性能测量
1.2.2 控制平面上的操作
1.2.3 数据平面上的操作
1.2.4 互操作性
1.3 互联网体系结构
1.3.1 连通性解决方案
1.3.2 可扩展性解决方案
1.3.3 资源共享的解决方案
1.3.4 控制平面和数据平面操作
1.4 开放源代码实现
1.4.1 开放与封闭
1.4.2 Linux系统中的软件体系结构
1.4.3 Linux内核
1.4.4 客户端和守护进程服务器
1.4.5 接口驱动程序
1.4.6 设备控制器
1.5 本书路标:数据包的生命历程
1.5.1 数据包数据结构:sk_buff
1.5.2 在Web服务器中数据包的生命历程
1.5.3 数据包在网关中的生命历程
1.6 总结
演变的沙漏
常见陷阱
进一步阅读
常见问题解答
练习
第2章 物理层
2.1 一般性问题
2.1.1 数据和信号:模拟的或数字的
2.1.2 发送和接收流
2.1.3 传输:线路编码和数字调制
2.1.4 传输损失
2.2 介质
2.2.1 有线介质
2.2.2 无线介质
2.3 信息编码和基带传输
2.3.1 信源编码和信道编码
2.3.2 线路编码
2.4 数字调制和多路复用
2.4.1 通带调制
2.4.2 多路复用
2.5 高级主题
2.5.1 扩频
2.5.2 单载波与多载波
2.5.3 多输入、多输出
2.6 总结
常见陷阱
进一步阅读
常见问题解答
练习
第3章 链路层
3.1 一般问题
3.1.1 成帧
3.1.2 寻址
3.1.3 差错控制和可靠性
3.1.4 流量控制
3.1.5 介质访问控制
3.1.6 桥接
3.1.7 链路层的数据包流
3.2 点到点协议
3.2.1 高级数据链路控制
3.2.2 点到点协议
3.2.3 因特网协议控制协议
3.2.4 以太网上的PPP(PPPoE)
3.3 以太网(IEEE 802.3)
3.3.1 以太网的演变:蓝图
3.3.2 以太网MAC
3.3.3 以太网的精选主题
3.4 无线链路
3.4.1 IEEE 802.11无线局域网
3.4.2 蓝牙技术
3.4.3 WiMAX技术
3.5 桥接
3.5.1 自学习
3.5.2 生成树协议
3.5.3 虚拟局域网
3.6 网络接口的设备驱动程序
3.6.1 设备驱动程序的概念
3.6.2 在Linux设备驱动程序中如何与硬件通信
3.7 总结
常见陷阱
进一步阅读
常见问题解答
练习
第4章 互联网协议层
4.1 一般问题
4.1.1 连通性问题
4.1.2 可扩展性问题
4.1.3 资源共享问题
4.1.4 IP层协议和分组流概述
4.2 数据平面协议:互联网协议
4.2.1 互联网协议版本
4.2.2 网络地址翻译
4.3 互联网协议版本
4.3.1 IPv6头部格式
4.3.2 IPv6扩展头部
4.3.3 IPv6中的分段
4.3.4 IPv6地址的表示法
4.3.5 IPv6地址空间分配
4.3.6 自动配置
4.3.7 从IPv4到IPv6的迁移
4.4 控制平面协议:地址管理
4.4.1 地址解析协议
4.4.2 动态主机配置
4.5 控制平面协议:错误报告
4.6 控制平面协议:路由
4.6.1 路由原理
4.6.2 域内路由
4.6.3 域间路由
4.7 组播路由
4.7.1 将复杂性迁移到路由器
4.7.2 组成员管理
4.7.3 组播路由协议
4.7.4 域间组播
4.8 总结
常见陷阱
进一步阅读
常见问题解答
练习
第5章 传输层
5.1 一般问题
5.1.1 节点到节点与端到端
5.1.2 差错控制和可靠性
5.1.3 速率控制:流量控制和拥塞控制
5.1.4 标准编程接口
5.1.5 传输层分组流
5.2 不可靠的无连接传输:UDP
5.2.1 头部格式
5.2.2 差错控制:每个分段的校验和
5.2.3 承载单播/组播实时流量
5.3 可靠的面向连接的传输:TCP
5.3.1 连接管理
5.3.2 数据传输的可靠性
5.3.3 TCP流量控制
5.3.4 TCP拥塞控制
5.3.5 TCP头部格式
5.3.6 TCP定时器管理
5.3.7 TCP性能问题及增强
5.4 套接字编程接口
5.4.1 套接字
5.4.2 通过UDP和TCP绑定应用程序
5.4.3 绕过UDP和TCP传输
5.5 用于实时流量的传输协议
5.5.1 实时需求
5.5.2 标准数据平面协议:RTP
5.5.3 标准控制平面协议:RTCP
5.6 总结
常见陷阱
进一步阅读
常见问题解答
练习
第6章 应用层
6.1 一般问题
6.1.1 端口如何工作
6.1.2 服务器如何启动
6.1.3 服务器分类
6.1.4 应用层协议的特点
6.2 域名系统
6.2.1 简介
6.2.2 域名空间
6.2.3 资源记录
6.2.4 名字解析
6.3 电子邮件
6.3.1 简介
6.3.2 互联网邮件标准
6.3.3 互联网邮件协议
6.4 万维网
6.4.1 简介
6.4.2 Web命名和寻址
6.4.3 HTML和XML
6.4.4 HTTP
6.4.5 Web缓存和代理
6.5 文件传输协议
6.5.1 简介
6.5.2 双连接操作模型:带外信令
6.5.3 FTP协议消息
6.6 简单网络管理协议
6.6.1 简介
6.6.2 体系结构框架
6.6.3 管理信息库
6.6.4 SNMP中的基本操作
6.7 VoIP
6.7.1 简介
6.7.2 H.32
6.7.3 会话初始化协议
6.8 流媒体
6.8.1 简介
6.8.2 压缩算法
6.8.3 流媒体协议
6.8.4 服务质量和同步机制
6.9 对等应用程序
6.9.1 简介
6.9.2 P2P的体系结构
6.9.3 P2P应用的性能问题
6.9.4 案例研究:BitTorrent
6.10 总结
常见陷阱
进一步阅读
常见问题解答
练习
第7章 互联网服务质量
7.1 一般问题
7.1.1 信令协议
7.1.2 QoS路由
7.1.3 许可控制
7.1.4 分组分类
7.1.5 监管
7.1.6 调度
7.2 QoS体系结构
7.2.1 集成服务
7.2.2 区分服务
7.3 QoS组件的算法
7.3.1 许可控制
7.3.2 流标识
7.3.3 令牌桶
7.3.4 分组调度
7.3.5 分组丢弃
7.4 总结
常见陷阱
进一步阅读
常见问题解答
练习
第8章 网络安全
8.1 一般问题
8.1.1 数据安全
8.1.2 访问安全
8.1.3 系统安全
8.2 数据安全
8.2.1 密码学原理
8.2.2 数字签名和消息认证
8.2.3 链路层隧道
8.2.4 IP安全
8.2.5 传输层安全
8.2.6 VPN技术的比较
8.3 访问安全
8.3.1 简介
8.3.2 网络层/传输层防火墙
8.3.3 应用层防火墙
8.4 系统安全
8.4.1 信息收集
8.4.2 漏洞利用
8.4.3 恶意代码
8.4.4 典型的防御
8.5 总结
常见陷阱
进一步阅读
常见问题解答
练习
附录A 名人录
附录B Linux内核概述
附录C 开发工具
附录D 网络实用工具
★“本书对实际实现细节的介绍非常突出……无愧是计算机网络领域中的一本好书。”
—— Mahasweta Sarkar,圣地亚哥州立大学
★“本书由RFC和开源贡献者书写,它理所当然是网络工程师的权威指导。”
—— Wen Chen,思科会员
★“为了弥补了长期以来设计与实现之间存在的差距,本书对协议设计的实现进行了描述,使之成为一本理想的教科书。”
—— Mario Gerla,加州大学洛杉矶分校