描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111453833丛书名: 计算机科学丛书
编辑推荐
Stevens经典网络名著的整体重组和彻底更新;掌握当代网络协议原理及实现技术***参考书;全面阐述和透彻分析网络常用协议的工作过程和实现细节。 涵盖新的网络协议和实践方法,显著加强安全方面内容
内容简介
《TCP/IP详解》是已故网络专家、著名技术作家W. Richard Stevens的传世之作,内容详尽且极具权*,被誉为TCP/IP领域的不朽名著。
本书是《TCP/IP详解》第1卷的第2版,主要讲述TCP/IP协议,结合大量实例讲述TCP/IP协议族的定义原因,以及在各种不同的操作系统中的
应用及工作方式。第2版在保留Stevens卓越的知识体系和写作风格的基础上,新加入的作者Kevin R.
Fall结合其作为TCP/IP协议研究领域领导者的尖端经验来更新本书,反映了*新的协议和*佳的实践方法。首先,他介绍了TCP/IP的核心目标和体
系结构概念,展示了它们如何能连接不同的网络和支持多个服务同时运行。接着,他详细解释了IPv4和IPv6网络中的互联网地址。然后,他采用自底向上的
方式介绍TCP/IP的结构和功能:从链路层协议(如Ethernet和Wi-Fi),经网络层、传输层到应用层。
书中依次全面介绍了
ARP、DHCP、NAT、防火墙、ICMPv4/ICMPv6、广播、组播、UDP、DNS等,并详细介绍了可靠传输和TCP,包括连接管理、超时、重
传、交互式数据流和拥塞控制。此外,还介绍了安全和加密的基础知识,阐述了当前用于保护安全和隐私的重要协议,包括EAP、IPsec、TLS、
DNSSEC和DKIM。
本书适合任何希望理解TCP/IP实现原理的人阅读,更是TCP/IP领域研究人员和开发人员的*威参考书。无论你是初学者还是功底深厚的网络领域高手,本书都是案头***,将帮助你更深入和直观地理解整个协议族,构建更好的应用和运行更可靠、更高效的网络。
本书是《TCP/IP详解》第1卷的第2版,主要讲述TCP/IP协议,结合大量实例讲述TCP/IP协议族的定义原因,以及在各种不同的操作系统中的
应用及工作方式。第2版在保留Stevens卓越的知识体系和写作风格的基础上,新加入的作者Kevin R.
Fall结合其作为TCP/IP协议研究领域领导者的尖端经验来更新本书,反映了*新的协议和*佳的实践方法。首先,他介绍了TCP/IP的核心目标和体
系结构概念,展示了它们如何能连接不同的网络和支持多个服务同时运行。接着,他详细解释了IPv4和IPv6网络中的互联网地址。然后,他采用自底向上的
方式介绍TCP/IP的结构和功能:从链路层协议(如Ethernet和Wi-Fi),经网络层、传输层到应用层。
书中依次全面介绍了
ARP、DHCP、NAT、防火墙、ICMPv4/ICMPv6、广播、组播、UDP、DNS等,并详细介绍了可靠传输和TCP,包括连接管理、超时、重
传、交互式数据流和拥塞控制。此外,还介绍了安全和加密的基础知识,阐述了当前用于保护安全和隐私的重要协议,包括EAP、IPsec、TLS、
DNSSEC和DKIM。
本书适合任何希望理解TCP/IP实现原理的人阅读,更是TCP/IP领域研究人员和开发人员的*威参考书。无论你是初学者还是功底深厚的网络领域高手,本书都是案头***,将帮助你更深入和直观地理解整个协议族,构建更好的应用和运行更可靠、更高效的网络。
目 录
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
出版者的话
译者序
本书评语
序
第2版前言
第1版前言(改编)
第1章 概述 1
1.1 体系结构原则 2
1.2 设计和实现 5
1.3 TCP/IP协议族结构和协议 9
1.4 Internet、内联网和外联网 13
1.5 设计应用 13
1.6 标准化进程 15
1.7 实现和软件分发 16
1.8 与Internet体系结构相关的攻击 17
1.9 总结 17
1.10 参考文献 18
第2章 Internet地址结构 21
2.1 引言 21
2.2 表示IP地址 21
2.3 基本的IP地址结构 23
2.4 CIDR和聚合 31
2.5 特殊用途地址 34
2.6 分配 42
2.7 单播地址分配 44
2.8 与IP地址相关的攻击 48
2.9 总结 48
2.10 参考文献 49
第3章 链路层 54
3.1 引言 54
3.2 以太网和IEEE 802局域网/城域网标准 54
3.3 全双工、省电、自动协商和802.1X流量控制 64
3.4 网桥和交换机 67
3.5 无线局域网——IEEE 802.11(Wi-Fi) 76
3.6 点到点协议 89
3.7 环回 99
3.8 MTU和路径MTU 101
3.9 隧道基础 102
3.10 与链路层相关的攻击 106
3.11 总结 107
3.12 参考文献 108
第4章 地址解析协议 113
4.1 引言 113
4.2 一个例子 113
4.3 ARP缓存 115
4.4 ARP帧格式 116
4.5 ARP例子 117
4.6 ARP缓存超时 119
4.7 代理ARP 119
4.8 免费ARP和地址冲突检测 120
4.9 arp命令 121
4.10 使用ARP设置一台嵌入式设备的IPv4地址 121
4.11 与ARP相关的攻击 122
4.12 总结 122
4.13 参考文献 123
第5章 Internet协议 124
5.1 引言 124
5.2 IPv4头部和IPv6头部 125
5.3 IPv6扩展头部 133
5.4 IP转发 143
5.5 移动IP 149
5.6 IP数据报的主机处理 152
5.7 与IP相关的攻击 156
5.8 总结 156
5.9 参考文献 157
第6章 系统配置:DHCP和自动配置 161
6.1 引言 161
6.2 动态主机配置协议 161
6.3 无状态地址自动配置 191
6.4 DHCP和DNS交互 198
6.5 以太网上的PPP 199
6.6 与系统配置相关的攻击 201
6.7 总结 203
6.8 参考文献 204
第7章 防火墙和网络地址转换 209
7.1 引言 209
7.2 防火墙 209
7.3 网络地址转换 212
7.4 NAT穿越 221
7.5 配置包过滤防火墙和NAT 235
7.6 IPv4/IPv6共存和过渡中的NAT 238
7.7 与防火墙和NAT相关的攻击 243
7.8 总结 243
7.9 参考文献 244
第8章 ICMPv4和ICMPv6:Internet控制报文协议 248
8.1 引言 248
8.2 ICMP报文 249
8.3 ICMP差错报文 253
8.4 ICMP查询/信息类报文 267
8.5 IPv6中的邻居发现 278
8.6 ICMPv4和ICMPv6转换 298
8.7 与ICMP相关的攻击 301
8.8 总结 303
8.9 参考文献 303
第9章 广播和本地组播(IGMP和MLD) 307
9.1 引言 307
9.2 广播 308
9.3 组播 311
9.4 互联网组管理协议和组播侦听发现协议 318
9.5 与IGMP和MLD相关的攻击 332
9.6 总结 332
9.7 参考文献 333
第10章 用户数据报协议和IP分片 335
10.1 引言 335
10.2 UDP头部 335
10.3 UDP校验和 336
10.4 例子 338
10.5 UDP和IPv6 340
10.6 UDP-Lite 345
10.7 IP分片 345
10.8 采用UDP的路径MTU发现 349
10.9 IP分片和ARP/ND之间的交互 351
10.10 UDP数据报长度 352
10.11 UDP服务器的设计 353
10.12 UDP/IPv4和UDP/IPv6数据报的转换 358
10.13 互联网中的UDP 358
10.14 与UDP和IP分片相关的攻击 359
10.15 总结 360
10.16 参考文献 360
第11章 名称解析和域名系统 362
11.1 引言 362
11.2 DNS名称空间 362
11.3 名称服务器和区域 366
11.4 缓存 366
11.5 DNS协议 367
11.6 排序列表、循环和分离DNS 402
11.7 开放DNS服务器和DynDNS 403
11.8 透明度和扩展性 404
11.9 从IPv4向IPv6转换DNS 404
11.10 LLMNR和mDNS 405
11.11 LDAP 406
11.12 与DNS相关的攻击 406
11.13 总结 407
11.14 参考文献 408
第12章 TCP:传输控制协议(初步) 412
12.1 引言 412
12.2 TCP的引入 415
12.3 TCP头部和封装 418
12.4 总结 420
12.5 参考文献 421
第13章 TCP连接管理 423
13.1 引言 423
13.2 TCP连接的建立与终止 423
13.3 TCP选项 431
13.4 TCP的路径传输单元发现 436
13.5 TCP状态转换 439
13.6 重置报文段 447
13.7 TCP服务器选项 451
13.8 与TCP连接管理相关的攻击 458
13.9 总结 459
13.10 参考文献 460
第14章 TCP超时与重传 462
第15章 TCP数据流与窗口管理 492
第16章 TCP拥塞控制 517
第17章 TCP保活机制 563
第18章 安全:可扩展身份认证协议、IP安全协议、传输层安全、DNS安全、域名密钥识别邮件 571
缩略语 666
出版者的话
译者序
本书评语
序
第2版前言
第1版前言(改编)
第1章 概述 1
1.1 体系结构原则 2
1.2 设计和实现 5
1.3 TCP/IP协议族结构和协议 9
1.4 Internet、内联网和外联网 13
1.5 设计应用 13
1.6 标准化进程 15
1.7 实现和软件分发 16
1.8 与Internet体系结构相关的攻击 17
1.9 总结 17
1.10 参考文献 18
第2章 Internet地址结构 21
2.1 引言 21
2.2 表示IP地址 21
2.3 基本的IP地址结构 23
2.4 CIDR和聚合 31
2.5 特殊用途地址 34
2.6 分配 42
2.7 单播地址分配 44
2.8 与IP地址相关的攻击 48
2.9 总结 48
2.10 参考文献 49
第3章 链路层 54
3.1 引言 54
3.2 以太网和IEEE 802局域网/城域网标准 54
3.3 全双工、省电、自动协商和802.1X流量控制 64
3.4 网桥和交换机 67
3.5 无线局域网——IEEE 802.11(Wi-Fi) 76
3.6 点到点协议 89
3.7 环回 99
3.8 MTU和路径MTU 101
3.9 隧道基础 102
3.10 与链路层相关的攻击 106
3.11 总结 107
3.12 参考文献 108
第4章 地址解析协议 113
4.1 引言 113
4.2 一个例子 113
4.3 ARP缓存 115
4.4 ARP帧格式 116
4.5 ARP例子 117
4.6 ARP缓存超时 119
4.7 代理ARP 119
4.8 免费ARP和地址冲突检测 120
4.9 arp命令 121
4.10 使用ARP设置一台嵌入式设备的IPv4地址 121
4.11 与ARP相关的攻击 122
4.12 总结 122
4.13 参考文献 123
第5章 Internet协议 124
5.1 引言 124
5.2 IPv4头部和IPv6头部 125
5.3 IPv6扩展头部 133
5.4 IP转发 143
5.5 移动IP 149
5.6 IP数据报的主机处理 152
5.7 与IP相关的攻击 156
5.8 总结 156
5.9 参考文献 157
第6章 系统配置:DHCP和自动配置 161
6.1 引言 161
6.2 动态主机配置协议 161
6.3 无状态地址自动配置 191
6.4 DHCP和DNS交互 198
6.5 以太网上的PPP 199
6.6 与系统配置相关的攻击 201
6.7 总结 203
6.8 参考文献 204
第7章 防火墙和网络地址转换 209
7.1 引言 209
7.2 防火墙 209
7.3 网络地址转换 212
7.4 NAT穿越 221
7.5 配置包过滤防火墙和NAT 235
7.6 IPv4/IPv6共存和过渡中的NAT 238
7.7 与防火墙和NAT相关的攻击 243
7.8 总结 243
7.9 参考文献 244
第8章 ICMPv4和ICMPv6:Internet控制报文协议 248
8.1 引言 248
8.2 ICMP报文 249
8.3 ICMP差错报文 253
8.4 ICMP查询/信息类报文 267
8.5 IPv6中的邻居发现 278
8.6 ICMPv4和ICMPv6转换 298
8.7 与ICMP相关的攻击 301
8.8 总结 303
8.9 参考文献 303
第9章 广播和本地组播(IGMP和MLD) 307
9.1 引言 307
9.2 广播 308
9.3 组播 311
9.4 互联网组管理协议和组播侦听发现协议 318
9.5 与IGMP和MLD相关的攻击 332
9.6 总结 332
9.7 参考文献 333
第10章 用户数据报协议和IP分片 335
10.1 引言 335
10.2 UDP头部 335
10.3 UDP校验和 336
10.4 例子 338
10.5 UDP和IPv6 340
10.6 UDP-Lite 345
10.7 IP分片 345
10.8 采用UDP的路径MTU发现 349
10.9 IP分片和ARP/ND之间的交互 351
10.10 UDP数据报长度 352
10.11 UDP服务器的设计 353
10.12 UDP/IPv4和UDP/IPv6数据报的转换 358
10.13 互联网中的UDP 358
10.14 与UDP和IP分片相关的攻击 359
10.15 总结 360
10.16 参考文献 360
第11章 名称解析和域名系统 362
11.1 引言 362
11.2 DNS名称空间 362
11.3 名称服务器和区域 366
11.4 缓存 366
11.5 DNS协议 367
11.6 排序列表、循环和分离DNS 402
11.7 开放DNS服务器和DynDNS 403
11.8 透明度和扩展性 404
11.9 从IPv4向IPv6转换DNS 404
11.10 LLMNR和mDNS 405
11.11 LDAP 406
11.12 与DNS相关的攻击 406
11.13 总结 407
11.14 参考文献 408
第12章 TCP:传输控制协议(初步) 412
12.1 引言 412
12.2 TCP的引入 415
12.3 TCP头部和封装 418
12.4 总结 420
12.5 参考文献 421
第13章 TCP连接管理 423
13.1 引言 423
13.2 TCP连接的建立与终止 423
13.3 TCP选项 431
13.4 TCP的路径传输单元发现 436
13.5 TCP状态转换 439
13.6 重置报文段 447
13.7 TCP服务器选项 451
13.8 与TCP连接管理相关的攻击 458
13.9 总结 459
13.10 参考文献 460
第14章 TCP超时与重传 462
第15章 TCP数据流与窗口管理 492
第16章 TCP拥塞控制 517
第17章 TCP保活机制 563
第18章 安全:可扩展身份认证协议、IP安全协议、传输层安全、DNS安全、域名密钥识别邮件 571
缩略语 666
前 言
译者序
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
21世纪的一个重要特征是数字化、网络化与信息化,支撑这一切的正是功能日益强大的计算机网络。目前,计算机网络已成为支撑现代社会运行的基础设施,并成为影响社会的政治、经济、科学与文化发展的重要因素。
我们知道,TCP/IP已成为计算机网络事实上的标准。在关于TCP/IP的著作中,有影响的著作之一就是W. Richard Stevens著的《TCP/IP详解 卷1:协议》,本书第2版由Kevin R. Fall在原著的基础上修订而成。
本书的特点是内容丰富,概念清晰,论述详细,图文并茂。本书每章开头都有一个引言,然后对某个技术或协议进行详细介绍,后给出相关的安全问题、总结与参考文献。本书通过很多例子来说明问题,并在后给出了书中用到的缩略语,这对读者了解相关术语有很大的帮助。
本书的前言、第1~6章和缩略语由吴英翻译,第7~12章由张玉翻译,第13~18章由许昱玮翻译,全书由吴功宜教授审校。我们在翻译过程中尽可能尊重原著的思想,但是限于译者的学识,书中难免存在疏漏和理解错误之处,敬请读者指正。
译者
2016年1月
于南开大学计算机与控制工程学院
序
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
读者很少能找到这样一本历史和技术全面且非常准确地讨论众所周知主题的书籍。我佩服这项工作的原因之一是它给出的方案都让人信服。TCP/IP体系结构
在构思时就是一个产品。在适应多方面呈百万倍或以上不断增长的需求,更不用说大量的应用程序方面,它是非凡的。理解体系结构的范围和局限性以及它的协议,
可以为思考未来的演变甚至革命奠定良好的基础。
在早期互联网体系结构的制定中,“企业”的概念并没有被真正认识。因此,大多数网络都有自己的
IP地址空间,并在路由系统中直接“公布”自己的地址。在商业服务被引入之后,Internet服务提供商像中介那样“公布”自己客户的Internet
地址块。因此,大多数的地址空间被分配为“提供商依赖”方式。“提供商独立”编址很少见。这种网络导致路由汇聚和全球路由表大小的限制。虽然这种方式有好
处,但它也带来了“多归属”问题,这是由于用户的提供商依赖地址在全球路由表中没有自己的条目。IP地址“短缺”也导致了网络地址转换,它也没有解决提供
商依赖和多归属问题。
通过阅读这本书可以唤起读者对复杂性的好奇——这种复杂性由工作在几种网络和应用环境下的一组相对简单的概念发展而来。当各章展开时,读者可以看见复杂性程度随着日益增长的需求而变化——这部分是由新的部署情况和挑战决定的,系统规模的激增就更不必说了。
“企业”用户网络安全的问题迫使人们使用防火墙提供边界安全。这样做虽然有用,但是很明显对本地Internet基础设施的攻击可以通过内部(例如将一台受感染的计算机放入内部网络,或用一个受感染的便携驱动器通过USB端口感染一台内部计算机)进行。
很明显,除了需要通过引入IPv6协议(它有340×1036个地址)扩大Internet地址空间之外,还强烈需要引入各种安全增强机制,例如域名系统安全扩展(DNSSEC)等。
究竟是什么使这本书看起来很独特?据我估计是对细节的重视和对历史的关注。它提供了解决已经演变的网络问题的背景和意义。它在确保精确和揭露剩余问题方
面不懈努力。对于一位希望完善和确保Internet操作安全,或探索持续存在的问题的其他解决方案的工程师来说,这本书所提供的见解将是非常宝贵的。作
者对当前Internet技术的彻底分析是值得称赞的。
Vint Cerf
Woodhurst
2011年6月
第2版前言
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
欢迎阅读本书的第2版。这本书致力于对TCP/IP协议族进行详细了解。不仅描述协议如何操作,还使用各种分析工具显示协议如何运行。这可以帮助你更好
地了解协议背后的设计决策,以及它们如何相互影响。同时为你揭露协议的实现细节,而不需要你阅读实现的软件源代码,或者设置一个实验性的实验室。当然,阅
读源代码或设置一个实验室将不只是有助于加深你的理解。
网络在过去30年中已经发生了巨大的变化。Internet初作为一个研究项目和令
人好奇的对象,现在已经成为一个全球性的通信设施,并被各国政府、企业和个人所依赖。TCP/IP协议族定义了Internet中每个设备交换信息的基本
方法。经过十多年的发展,Internet和TCP/IP自身正在向兼容IPv6的方向进化。在整本书中,我们将讨论IPv6和目前的IPv4,着重关注
它们之间的重要不同点。遗憾的是,它们不直接进行互操作,因此需要关心和注意其演变的影响。
本书的读者对象是希望更好地了解当前的TCP/IP协议族以及它们如何运作的人员:网络操作员和管理员、网络软件开发人员、学生,以及需要掌握TCP/IP的用户。我们提供的材料包括读者感兴趣的新材料和第1版已有的材料,希望读者能从中找到有用和有趣的新旧材料。
第1版的评论
距本书第1版出版已过去近20年。对于希望了解TCP/IP协议细节的学生和专业人士而言,本书仍然是一个宝贵的资源,这些细节在许多其他同类教材中是
难以获得的。目前,它仍是有关TCP/IP协议运行的详细信息的好参考。但是,即使是信息和通信技术领域好的书籍,经过一段时间之后也会过时,当然本
书也不例外。在这个版本中,我希望通过引入新材料来彻底更新Stevens博士的前期工作,同时能够保持前作的极高水准和对其很多书籍都包含的知识的详细
介绍。
第1版涵盖了各种类型的协议和它们的操作,范围从链路层到应用和网络管理的所有方面。目前,将如此广泛的材料综合在一卷中篇幅将会很
长。因此,第2版特别关注核心协议:那些级别相对较低的协议,常用于为Internet提供配置、命名、数据传输和安全等基础性服务。关于应用、路由、
Web服务和其他重要主题被放到后续卷中。
从第1版出版以来,对TCP/IP相应规范的实现在鲁棒性和规范性方面的改进已取得相当大的进展。
第1版中很多例子出现明显的实现错误或不符合要求的行为,这些问题在当前可用的系统中已经得到解决,至少对于IPv4如此。考虑到在过去18年中
TCP/IP协议的应用日益广泛,这个事实并不令人吃惊。不符合要求的实现是比较罕见的,这证明了协议族整体是比较成熟的。当前,在核心协议的运行中遇到
的问题,通常涉及不常使用的协议功能。在第1版中不太关注的安全问题,在第2版中花费了相当的笔墨来讨论。
21世纪的互联网环境
Internet使用模式和重要性自第1版出版以来已经发生了很大变化。明显的具有分水岭意义的事件是万维网在20世纪90年代初的建立和随后开始的激
烈的商业化。这个事件大大加快了大量有不同目的(有时冲突)的人对Internet的使用。因此,这个初实现在一个小规模的学术合作环境中的协议和系统
已受限于有限的可用地址,并且需要增加安全方面的考虑。
为了应对安全威胁,网络和安全管理员纷纷为网络引入专门的控制单元。无论是大型企业还
是小型企业和家庭,现在常见的做法是将防火墙布置在Internet的连接点。随着过去十年IP地址和安全需求的增长,网络地址转换(NAT)现在几乎被
所有路由器支持,并且得到广泛的使用。它可以缓解地址短缺的压力,允许站点从服务提供商(对每个同时在线的用户)获得一组相对较少的可路由的
Internet地址,无须进一步协调就可以为本地主机提供大量的地址。部署NAT的结果是减缓了向IPv6(它提供了几乎不可思议的大量地址)的迁移,
解决了一些旧协议的互操作性问题。
随着PC用户在20世纪90年代中期开始要求连接Internet,的PC软件供应商(微软)放弃了其
原来只提供专用Internet协议的策略,转而努力在自己的大部分产品中兼容TCP/IP。此后,运行Windows操作系统的PC变为接入
Internet的主体。随着时间的推移,基于Linux系统的主机数量显著上升,意味着这种系统现在有可能取代微软的领跑者地位。其他操作系统,包括
Oracle的Solaris和Berkeley的基于BSD的系统,曾经代表了接入Internet的大多数系统,而现在只占一小部分。苹果的OS
X操作系统(基于Mac)已成为一个新的竞争者并日益普及,特别是在便携式计算机用户中。2003年,便携式计算机(笔记本电脑)的销量超过了台式机,成
为个人电脑销售的主力类型,它们的快速增长带来了对支持高速上网的无线基础设施的需求。根据预测,2012年以后访问Internet的常用方法是智能
手机。平板电脑也是一个快速增长的重要竞争者的代表。
现在有大量场所提供了无线网络,例如餐厅、机场、咖啡馆,以及其他公共场所。它们通常使
用办公或家庭环境的局域网设备,提供短距离、免费或低费用、高速、无线Internet连接。一系列基于蜂窝移动电话标准(例如LTE、UMTS、
HSPA、EV-DO)的“无线宽带”替代技术已广泛用于世界发达地区(一些发展中地区争相采用较新的无线技术),为了提供更大范围的运营,通常需要在一
定程度上减少带宽和降低基于流量的定价。两种类型的基础设施满足了用户使用便携式计算机或更小的设备在移动过程中访问Internet的需要。在任何情况
下,移动终端用户通过无线网络访问Internet都会带来两个对TCP/IP协议体系结构的技术挑战。首先,移动性影响了Internet的路由和寻址
结构,打破了主机基于附近的路由器分配地址的假设。其次,无线链路可能因更多原因而断开并导致数据丢失,这些原因与典型的有线链路(通常不会丢失太多数
据,除非网络中有太多流量)不同。
后,Internet已经促进了由对等应用形成的“覆盖”网络的兴起。对等应用不依赖于中心服务器完成一
项任务,而是通过一组对等计算机之间的通信和交互完成一项任务。对等计算机可以由其他终端用户来操作,并且可能快速进入或离开一个固定的服务器基础设施。
“覆盖”的概念刻画了如下事实:由这些交互的对等方形成一个网络,并且覆盖在传统的基于TCP/IP的网络上(在低层的物理链路之上实现覆盖)。对于那些
对网络流量和电子商务有浓厚兴趣的研究者而言,对等应用的发展没有对卷1中所描述的核心协议产生深远的影响,但是覆盖网络的概念在网络技术研究中普遍受到
重视。
第2版的内容变化
第2版的重要的变化是对第1版全部内容的整体重组和安全方面材料的显著增加。第2版没有尝试覆盖
Internet的每个层次中使用的所有常用协议,而是关注正在广泛使用的非安全的核心协议,或者预计在不久的将来广泛使用的协议:以太网
(802.3)、Wi-Fi(802.11)、PPP、ARP、IPv4、IPv6、TCP、UDP、DHCP和DNS。系统管理员和用户可能都会用到这
些协议。
第2版通过两种方法来讨论安全性。首先,每章中都有专门的一节,用于介绍对本章所描述协议的已知攻击和对策。这些描述没有介绍攻击的
方法,而是提示了协议实现(或规范,在某些情况下)不够健全时可能出现的问题。在当前的Internet中,对于不完整的规范或不健全的实现,即使是相对
简单的攻击,也可能导致关键的任务系统受到损坏。
第二个重要的安全性讨论出现在第18章,对安全和密码学中的一些细节进行研究,包括协议,例
如IPsec、TLS、DNSSEC和DKIM。目前,这些协议对希望保持完整性或安全操作的任何服务或应用的实现都是非常重要的。随着Internet
在商业上的重要性的增加,安全需求(以及威胁的数量)已成比例增加。
虽然IPv6没有被包括在第1版中,但是未分配的IPv4地址块在
2011年2月已耗尽,现在有理由相信IPv6的使用可能会显著加快速度。IPv6主要是为了解决IPv4地址耗尽问题,随着越来越多的小型设备(例如移
动电话、家用电器和环境传感器)接入Internet,IPv6正在变得越来越重要。如世界IPv6日(2011年6月8日)这种事件有助于表明
Internet可以继续工作,即使是对底层协议进行重大修改和补充。
对第2版结构变化的第二个考虑是淡化那些不再常用的协议,以及更新那些
自第1版出版以来已大幅修订的内容。那些涉及RARP、BOOTP、NFS、SMTP和SNMP的章节已从书中删除,SLIP协议的讨论已被废弃,而
DHCP和PPP(包括PPPoE)的讨论篇幅被扩大。IP转发(第1版中的第9章)功能已被集成在这个版本的第5章的IPv4和IPv6协议的整体描述
中。动态路由协议(RIP、OSPF、BGP)的讨论已被删除,因为后两个协议都应该单独通过一本书来讨论。从ICMP开始到IP、TCP和UDP,针对
IPv4与IPv6操作上差异明显的情况,对每种操作的影响进行了讨论。这里没有专门针对IPv6的一章,而是在合适位置说明它对每个现有的核心协议的影
响。第1版中的第15章和第25~30章,致力于介绍Internet应用和它们的支持协议,其中的大部分章节已删除,仅在必要时保留对底层的核心协议操
作的说明。
多个章节添加了新内容。第1章从网络问题和体系结构的常规介绍开始,接着是对Internet进行具体介绍。第2章涵盖
Internet的寻址体系结构。第6章是新的一章,讨论主机配置和在系统中如何“显示”网络。第7章介绍了防火墙和网络地址转换(NAT),包括NAT
如何用于可路由和不可路由的地址空间。第1版所用的工具集已被扩大,现在包括Wireshark(一个免费的具有图形用户界面的网络流量监控应用程序)。
第2版的目标读者与第1版保持一致。阅读本书不需要具备网络概念的先期知识,但高级读者可以从细节和参考文献中获得更大收获。每章包括一份丰富的参考文献集,供有兴趣的读者查看。
第2版的编辑变化
第2版中内容的整体组织流程仍然类似于第1版。在介绍性的内容(第1章和第2章)之后,采用自底向上方式介绍Internet体系结构中涉及的协议,以
说明前面提到的网络通信是如何实现的。与第1版一样,捕获的真实数据包用于在适当的位置说明协议的操作细节。自第1版出版以来,免费的图形界面的数据包捕
获和分析工具已经问世,它们扩展了第1版中使用的tcpdump程序的功能。在第2版中,如果基于文本的数据包捕获工具的输出很容易解释,就使用
tcpdump。但是,在大多数情况下,使用Wireshark工具的屏幕截图。需要注意的是,为了清楚地说明问题,有些输出列表(包括tcpdump输
出的快照)经过包装或简化。
数据包跟踪内容说明了本书封二所描述的网络的一个或多个部分的行为。它代表了一个宽带连接的“家庭”环境(通常用
于客户端访问或对等网络)、一个“公共”环境(例如咖啡厅)和一个企业环境。在例子中使用的操作系统包括Linux、Windows、FreeBSD和
Mac OS X。目前,各种操作系统及不同版本被用于Internet中。
每章的结构相对第1版已稍作修改。每章开头是对该章主题的介绍,
接着是历史记录(在某些情况下),然后是本章详细资料、总结和一组参考文献。在大多数章中,章末都描述了安全问题和攻击。每章的参考文献体现了第2版的变
化。它们使得每章更具自包含性,读者几乎不需要“长距离页面跳转”就能找到参考文献。有些参考文献通过增加网址来提供更容易的在线访问。另外,论文和著作
的参考文献格式已变为一种相对更紧凑的格式,包括每个作者姓氏的首字母和一个两位数表示的年(例如,以前的[Cerf and Kahn
1974]现在缩短为[CK74])。对于使用的众多RFC参考文献,用RFC编号代替了作者姓名。这样做遵循了典型的RFC规范,并将所有引用的RFC
集中在参考文献列表中。
后说明的是,继续保持本书的印刷惯例。但是,我们选择使用的编辑和排版格式,与Stevens博士和
Addison-Wesley Professional Computing
Series系列丛书的其他作者使用的Troff系统不同。因此,后的审稿任务利用了文字编辑Barbara
Wood的专业知识。我们希望大家很高兴看到这个结果。
Kevin R. Fall
Berkeley,California
2011年9月
第1版前言(改编)
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
介绍
本书采用一种不同于其他教科书的方式描述了TCP/IP协议族。用一个流行的诊断工具来观察这些协议的运作过程,而不是简单地描述这些协议以及它们做些
什么。通过观察这些协议在不同环境下的运行过程,我们可以更好地理解它们是如何工作的,以及为什么要那样设计。另外,本书还对协议的实现进行了概述,而无
须读者费力阅读数千行的源代码。
在20世纪60年代到80年代期间开发网络协议时,需要昂贵的专用硬件才能观察分组“通过线路”的情况。同时,要理解硬件所显示的分组信息还需要对协议本身极其熟悉。硬件分析器的功能受限于硬件本身的设计。
现在,对局域网进行监测的工作站随处可见,情况发生了巨大的变化[Mogul
1990]。只需要在网络上连接一个工作站,并运行一些可公开获得的软件,就可以对线路上的流通情况进行观察。许多人认为它只是一个诊断网络故障的工具,
但是它也是一个理解网络协议运行的强有力的工具,这才是本书的目标。
本书适用于那些希望理解TCP/IP协议如何运行的人:编写网络应用程序的程序员,负责维护计算机系统和TCP/IP网络的系统管理员,以及经常与TCP/IP应用程序打交道的用户。
排版约定
当我们显示交互式的输入和输出时,输入显示为加粗字体,计算机的输出显示为正常字体。添加的注释为斜体字。
另外,我们始终将系统名称作为shell提示符的一部分(这个例子中的主机bsdi)显示在运行该命令的主机上。
注意 在整本书中,我们将使用缩进的楷体字以及像这样插入的“注意”来描述历史要点或实现细节。
有时我们会参考Unix手册中关于某个命令的完整描述,如ifconfig(8)。命令名后面跟一个带括号的数字是参考Unix命令的一般方法。括号中
的数字是该命令位于Unix手册中的节号,在那里可以找到关于该命令的其他信息。遗憾的是,并不是所有的Unix系统都以同样方式组织手册结构,即通过节
号来区分不同的命令组。这里,我们采用的是BSD风格(BSD派生系统都是一样的,如SunOS
4.1.3),但是你的用户手册可能采用不同的组织方式。
致谢
虽然在封面上仅出现了作者的名字,但出版一本高质量的教材需要很多人的共同努力。首先,需要感谢的是作者的家庭,他们花费很多时间陪伴作者编写这本书。再次感谢你们,Sally、Bill、Ellen和David。
毫无疑问,顾问编辑Brian Kernighan对这本书是重要的。他是个阅读书稿的各种草稿并用红笔做了很多标记的人。他对细节的关注、对文本可读性的严格要求和对书稿的彻底审查,对作者来说是一笔巨大的财富。
技术评审提供了不同的观点,并通过查找技术错误来保持作者的忠实。他们的意见、建议和(重要的)批评对终稿提供了很大帮助。我要感谢Steve
Bellovin、Jon Crowcroft、Pete Haverlock和Doug
Schmidt对整个书稿的意见。同样宝贵的意见来自提供了部分书稿的Dave
Borman(他彻底查看了所有的TCP章节),以及应列为附录E合著者的Bob Gilligan。
一个作者不能在隔绝的状态下工作,因此
我在这里感谢提供大量小帮助,特别是通过电子邮件回复问题的以下人员:Joe Godsil、Jim Hogue、Mike Karels、Paul
Lucchina、Craig Partridge、Thomas Skibo和Jerry Toporek。
这本书是我被要求回答大量的
TCP/IP问题,并且没有找到快速、直接答案的结果。那时我意识到,获得答案的简单方法是运行小测试,查看在某些情况下会发生什么。我感谢Peter
Haverlock提出了很多尖锐的问题,以及Van Jacobson提供的这么多可用于回答本书中问题的公开软件。
关于网络的书需要一
个可以访问Internet的真实网络。我要感谢国家光学天文观测台(NOAO),特别是Sidney Wolff、Richard
Wolff和Steve Grandi,他们提供了对自己的网络和主机的访问。特别感谢Steve
Grandi回答了很多问题,并提供了不同主机上的账号。我还要感谢加州大学伯克利分校CSRG的Keith Bostic和Kirk
McKusick,他们提供了对的4.4 BSD系统的访问。
后,出版商将所有东西集中起来,并按需要将终作品提供给读者。这一切都与编辑John Wait的工作分不开。与John和Addison-Wesley出版社的其他专业人士一起工作是一种乐趣。他们的专业精神和对细节的关注都显示在终结果中。
本书的排版由作者(Troff的铁杆)使用James Clark编写的Groff软件生成。
W. Richard Stevens
亚利桑那州,图森
1993年10月
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
21世纪的一个重要特征是数字化、网络化与信息化,支撑这一切的正是功能日益强大的计算机网络。目前,计算机网络已成为支撑现代社会运行的基础设施,并成为影响社会的政治、经济、科学与文化发展的重要因素。
我们知道,TCP/IP已成为计算机网络事实上的标准。在关于TCP/IP的著作中,有影响的著作之一就是W. Richard Stevens著的《TCP/IP详解 卷1:协议》,本书第2版由Kevin R. Fall在原著的基础上修订而成。
本书的特点是内容丰富,概念清晰,论述详细,图文并茂。本书每章开头都有一个引言,然后对某个技术或协议进行详细介绍,后给出相关的安全问题、总结与参考文献。本书通过很多例子来说明问题,并在后给出了书中用到的缩略语,这对读者了解相关术语有很大的帮助。
本书的前言、第1~6章和缩略语由吴英翻译,第7~12章由张玉翻译,第13~18章由许昱玮翻译,全书由吴功宜教授审校。我们在翻译过程中尽可能尊重原著的思想,但是限于译者的学识,书中难免存在疏漏和理解错误之处,敬请读者指正。
译者
2016年1月
于南开大学计算机与控制工程学院
序
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
读者很少能找到这样一本历史和技术全面且非常准确地讨论众所周知主题的书籍。我佩服这项工作的原因之一是它给出的方案都让人信服。TCP/IP体系结构
在构思时就是一个产品。在适应多方面呈百万倍或以上不断增长的需求,更不用说大量的应用程序方面,它是非凡的。理解体系结构的范围和局限性以及它的协议,
可以为思考未来的演变甚至革命奠定良好的基础。
在早期互联网体系结构的制定中,“企业”的概念并没有被真正认识。因此,大多数网络都有自己的
IP地址空间,并在路由系统中直接“公布”自己的地址。在商业服务被引入之后,Internet服务提供商像中介那样“公布”自己客户的Internet
地址块。因此,大多数的地址空间被分配为“提供商依赖”方式。“提供商独立”编址很少见。这种网络导致路由汇聚和全球路由表大小的限制。虽然这种方式有好
处,但它也带来了“多归属”问题,这是由于用户的提供商依赖地址在全球路由表中没有自己的条目。IP地址“短缺”也导致了网络地址转换,它也没有解决提供
商依赖和多归属问题。
通过阅读这本书可以唤起读者对复杂性的好奇——这种复杂性由工作在几种网络和应用环境下的一组相对简单的概念发展而来。当各章展开时,读者可以看见复杂性程度随着日益增长的需求而变化——这部分是由新的部署情况和挑战决定的,系统规模的激增就更不必说了。
“企业”用户网络安全的问题迫使人们使用防火墙提供边界安全。这样做虽然有用,但是很明显对本地Internet基础设施的攻击可以通过内部(例如将一台受感染的计算机放入内部网络,或用一个受感染的便携驱动器通过USB端口感染一台内部计算机)进行。
很明显,除了需要通过引入IPv6协议(它有340×1036个地址)扩大Internet地址空间之外,还强烈需要引入各种安全增强机制,例如域名系统安全扩展(DNSSEC)等。
究竟是什么使这本书看起来很独特?据我估计是对细节的重视和对历史的关注。它提供了解决已经演变的网络问题的背景和意义。它在确保精确和揭露剩余问题方
面不懈努力。对于一位希望完善和确保Internet操作安全,或探索持续存在的问题的其他解决方案的工程师来说,这本书所提供的见解将是非常宝贵的。作
者对当前Internet技术的彻底分析是值得称赞的。
Vint Cerf
Woodhurst
2011年6月
第2版前言
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
欢迎阅读本书的第2版。这本书致力于对TCP/IP协议族进行详细了解。不仅描述协议如何操作,还使用各种分析工具显示协议如何运行。这可以帮助你更好
地了解协议背后的设计决策,以及它们如何相互影响。同时为你揭露协议的实现细节,而不需要你阅读实现的软件源代码,或者设置一个实验性的实验室。当然,阅
读源代码或设置一个实验室将不只是有助于加深你的理解。
网络在过去30年中已经发生了巨大的变化。Internet初作为一个研究项目和令
人好奇的对象,现在已经成为一个全球性的通信设施,并被各国政府、企业和个人所依赖。TCP/IP协议族定义了Internet中每个设备交换信息的基本
方法。经过十多年的发展,Internet和TCP/IP自身正在向兼容IPv6的方向进化。在整本书中,我们将讨论IPv6和目前的IPv4,着重关注
它们之间的重要不同点。遗憾的是,它们不直接进行互操作,因此需要关心和注意其演变的影响。
本书的读者对象是希望更好地了解当前的TCP/IP协议族以及它们如何运作的人员:网络操作员和管理员、网络软件开发人员、学生,以及需要掌握TCP/IP的用户。我们提供的材料包括读者感兴趣的新材料和第1版已有的材料,希望读者能从中找到有用和有趣的新旧材料。
第1版的评论
距本书第1版出版已过去近20年。对于希望了解TCP/IP协议细节的学生和专业人士而言,本书仍然是一个宝贵的资源,这些细节在许多其他同类教材中是
难以获得的。目前,它仍是有关TCP/IP协议运行的详细信息的好参考。但是,即使是信息和通信技术领域好的书籍,经过一段时间之后也会过时,当然本
书也不例外。在这个版本中,我希望通过引入新材料来彻底更新Stevens博士的前期工作,同时能够保持前作的极高水准和对其很多书籍都包含的知识的详细
介绍。
第1版涵盖了各种类型的协议和它们的操作,范围从链路层到应用和网络管理的所有方面。目前,将如此广泛的材料综合在一卷中篇幅将会很
长。因此,第2版特别关注核心协议:那些级别相对较低的协议,常用于为Internet提供配置、命名、数据传输和安全等基础性服务。关于应用、路由、
Web服务和其他重要主题被放到后续卷中。
从第1版出版以来,对TCP/IP相应规范的实现在鲁棒性和规范性方面的改进已取得相当大的进展。
第1版中很多例子出现明显的实现错误或不符合要求的行为,这些问题在当前可用的系统中已经得到解决,至少对于IPv4如此。考虑到在过去18年中
TCP/IP协议的应用日益广泛,这个事实并不令人吃惊。不符合要求的实现是比较罕见的,这证明了协议族整体是比较成熟的。当前,在核心协议的运行中遇到
的问题,通常涉及不常使用的协议功能。在第1版中不太关注的安全问题,在第2版中花费了相当的笔墨来讨论。
21世纪的互联网环境
Internet使用模式和重要性自第1版出版以来已经发生了很大变化。明显的具有分水岭意义的事件是万维网在20世纪90年代初的建立和随后开始的激
烈的商业化。这个事件大大加快了大量有不同目的(有时冲突)的人对Internet的使用。因此,这个初实现在一个小规模的学术合作环境中的协议和系统
已受限于有限的可用地址,并且需要增加安全方面的考虑。
为了应对安全威胁,网络和安全管理员纷纷为网络引入专门的控制单元。无论是大型企业还
是小型企业和家庭,现在常见的做法是将防火墙布置在Internet的连接点。随着过去十年IP地址和安全需求的增长,网络地址转换(NAT)现在几乎被
所有路由器支持,并且得到广泛的使用。它可以缓解地址短缺的压力,允许站点从服务提供商(对每个同时在线的用户)获得一组相对较少的可路由的
Internet地址,无须进一步协调就可以为本地主机提供大量的地址。部署NAT的结果是减缓了向IPv6(它提供了几乎不可思议的大量地址)的迁移,
解决了一些旧协议的互操作性问题。
随着PC用户在20世纪90年代中期开始要求连接Internet,的PC软件供应商(微软)放弃了其
原来只提供专用Internet协议的策略,转而努力在自己的大部分产品中兼容TCP/IP。此后,运行Windows操作系统的PC变为接入
Internet的主体。随着时间的推移,基于Linux系统的主机数量显著上升,意味着这种系统现在有可能取代微软的领跑者地位。其他操作系统,包括
Oracle的Solaris和Berkeley的基于BSD的系统,曾经代表了接入Internet的大多数系统,而现在只占一小部分。苹果的OS
X操作系统(基于Mac)已成为一个新的竞争者并日益普及,特别是在便携式计算机用户中。2003年,便携式计算机(笔记本电脑)的销量超过了台式机,成
为个人电脑销售的主力类型,它们的快速增长带来了对支持高速上网的无线基础设施的需求。根据预测,2012年以后访问Internet的常用方法是智能
手机。平板电脑也是一个快速增长的重要竞争者的代表。
现在有大量场所提供了无线网络,例如餐厅、机场、咖啡馆,以及其他公共场所。它们通常使
用办公或家庭环境的局域网设备,提供短距离、免费或低费用、高速、无线Internet连接。一系列基于蜂窝移动电话标准(例如LTE、UMTS、
HSPA、EV-DO)的“无线宽带”替代技术已广泛用于世界发达地区(一些发展中地区争相采用较新的无线技术),为了提供更大范围的运营,通常需要在一
定程度上减少带宽和降低基于流量的定价。两种类型的基础设施满足了用户使用便携式计算机或更小的设备在移动过程中访问Internet的需要。在任何情况
下,移动终端用户通过无线网络访问Internet都会带来两个对TCP/IP协议体系结构的技术挑战。首先,移动性影响了Internet的路由和寻址
结构,打破了主机基于附近的路由器分配地址的假设。其次,无线链路可能因更多原因而断开并导致数据丢失,这些原因与典型的有线链路(通常不会丢失太多数
据,除非网络中有太多流量)不同。
后,Internet已经促进了由对等应用形成的“覆盖”网络的兴起。对等应用不依赖于中心服务器完成一
项任务,而是通过一组对等计算机之间的通信和交互完成一项任务。对等计算机可以由其他终端用户来操作,并且可能快速进入或离开一个固定的服务器基础设施。
“覆盖”的概念刻画了如下事实:由这些交互的对等方形成一个网络,并且覆盖在传统的基于TCP/IP的网络上(在低层的物理链路之上实现覆盖)。对于那些
对网络流量和电子商务有浓厚兴趣的研究者而言,对等应用的发展没有对卷1中所描述的核心协议产生深远的影响,但是覆盖网络的概念在网络技术研究中普遍受到
重视。
第2版的内容变化
第2版的重要的变化是对第1版全部内容的整体重组和安全方面材料的显著增加。第2版没有尝试覆盖
Internet的每个层次中使用的所有常用协议,而是关注正在广泛使用的非安全的核心协议,或者预计在不久的将来广泛使用的协议:以太网
(802.3)、Wi-Fi(802.11)、PPP、ARP、IPv4、IPv6、TCP、UDP、DHCP和DNS。系统管理员和用户可能都会用到这
些协议。
第2版通过两种方法来讨论安全性。首先,每章中都有专门的一节,用于介绍对本章所描述协议的已知攻击和对策。这些描述没有介绍攻击的
方法,而是提示了协议实现(或规范,在某些情况下)不够健全时可能出现的问题。在当前的Internet中,对于不完整的规范或不健全的实现,即使是相对
简单的攻击,也可能导致关键的任务系统受到损坏。
第二个重要的安全性讨论出现在第18章,对安全和密码学中的一些细节进行研究,包括协议,例
如IPsec、TLS、DNSSEC和DKIM。目前,这些协议对希望保持完整性或安全操作的任何服务或应用的实现都是非常重要的。随着Internet
在商业上的重要性的增加,安全需求(以及威胁的数量)已成比例增加。
虽然IPv6没有被包括在第1版中,但是未分配的IPv4地址块在
2011年2月已耗尽,现在有理由相信IPv6的使用可能会显著加快速度。IPv6主要是为了解决IPv4地址耗尽问题,随着越来越多的小型设备(例如移
动电话、家用电器和环境传感器)接入Internet,IPv6正在变得越来越重要。如世界IPv6日(2011年6月8日)这种事件有助于表明
Internet可以继续工作,即使是对底层协议进行重大修改和补充。
对第2版结构变化的第二个考虑是淡化那些不再常用的协议,以及更新那些
自第1版出版以来已大幅修订的内容。那些涉及RARP、BOOTP、NFS、SMTP和SNMP的章节已从书中删除,SLIP协议的讨论已被废弃,而
DHCP和PPP(包括PPPoE)的讨论篇幅被扩大。IP转发(第1版中的第9章)功能已被集成在这个版本的第5章的IPv4和IPv6协议的整体描述
中。动态路由协议(RIP、OSPF、BGP)的讨论已被删除,因为后两个协议都应该单独通过一本书来讨论。从ICMP开始到IP、TCP和UDP,针对
IPv4与IPv6操作上差异明显的情况,对每种操作的影响进行了讨论。这里没有专门针对IPv6的一章,而是在合适位置说明它对每个现有的核心协议的影
响。第1版中的第15章和第25~30章,致力于介绍Internet应用和它们的支持协议,其中的大部分章节已删除,仅在必要时保留对底层的核心协议操
作的说明。
多个章节添加了新内容。第1章从网络问题和体系结构的常规介绍开始,接着是对Internet进行具体介绍。第2章涵盖
Internet的寻址体系结构。第6章是新的一章,讨论主机配置和在系统中如何“显示”网络。第7章介绍了防火墙和网络地址转换(NAT),包括NAT
如何用于可路由和不可路由的地址空间。第1版所用的工具集已被扩大,现在包括Wireshark(一个免费的具有图形用户界面的网络流量监控应用程序)。
第2版的目标读者与第1版保持一致。阅读本书不需要具备网络概念的先期知识,但高级读者可以从细节和参考文献中获得更大收获。每章包括一份丰富的参考文献集,供有兴趣的读者查看。
第2版的编辑变化
第2版中内容的整体组织流程仍然类似于第1版。在介绍性的内容(第1章和第2章)之后,采用自底向上方式介绍Internet体系结构中涉及的协议,以
说明前面提到的网络通信是如何实现的。与第1版一样,捕获的真实数据包用于在适当的位置说明协议的操作细节。自第1版出版以来,免费的图形界面的数据包捕
获和分析工具已经问世,它们扩展了第1版中使用的tcpdump程序的功能。在第2版中,如果基于文本的数据包捕获工具的输出很容易解释,就使用
tcpdump。但是,在大多数情况下,使用Wireshark工具的屏幕截图。需要注意的是,为了清楚地说明问题,有些输出列表(包括tcpdump输
出的快照)经过包装或简化。
数据包跟踪内容说明了本书封二所描述的网络的一个或多个部分的行为。它代表了一个宽带连接的“家庭”环境(通常用
于客户端访问或对等网络)、一个“公共”环境(例如咖啡厅)和一个企业环境。在例子中使用的操作系统包括Linux、Windows、FreeBSD和
Mac OS X。目前,各种操作系统及不同版本被用于Internet中。
每章的结构相对第1版已稍作修改。每章开头是对该章主题的介绍,
接着是历史记录(在某些情况下),然后是本章详细资料、总结和一组参考文献。在大多数章中,章末都描述了安全问题和攻击。每章的参考文献体现了第2版的变
化。它们使得每章更具自包含性,读者几乎不需要“长距离页面跳转”就能找到参考文献。有些参考文献通过增加网址来提供更容易的在线访问。另外,论文和著作
的参考文献格式已变为一种相对更紧凑的格式,包括每个作者姓氏的首字母和一个两位数表示的年(例如,以前的[Cerf and Kahn
1974]现在缩短为[CK74])。对于使用的众多RFC参考文献,用RFC编号代替了作者姓名。这样做遵循了典型的RFC规范,并将所有引用的RFC
集中在参考文献列表中。
后说明的是,继续保持本书的印刷惯例。但是,我们选择使用的编辑和排版格式,与Stevens博士和
Addison-Wesley Professional Computing
Series系列丛书的其他作者使用的Troff系统不同。因此,后的审稿任务利用了文字编辑Barbara
Wood的专业知识。我们希望大家很高兴看到这个结果。
Kevin R. Fall
Berkeley,California
2011年9月
第1版前言(改编)
TCP/IP Illustrated, Volume 1: The Protocols, Second Edition
介绍
本书采用一种不同于其他教科书的方式描述了TCP/IP协议族。用一个流行的诊断工具来观察这些协议的运作过程,而不是简单地描述这些协议以及它们做些
什么。通过观察这些协议在不同环境下的运行过程,我们可以更好地理解它们是如何工作的,以及为什么要那样设计。另外,本书还对协议的实现进行了概述,而无
须读者费力阅读数千行的源代码。
在20世纪60年代到80年代期间开发网络协议时,需要昂贵的专用硬件才能观察分组“通过线路”的情况。同时,要理解硬件所显示的分组信息还需要对协议本身极其熟悉。硬件分析器的功能受限于硬件本身的设计。
现在,对局域网进行监测的工作站随处可见,情况发生了巨大的变化[Mogul
1990]。只需要在网络上连接一个工作站,并运行一些可公开获得的软件,就可以对线路上的流通情况进行观察。许多人认为它只是一个诊断网络故障的工具,
但是它也是一个理解网络协议运行的强有力的工具,这才是本书的目标。
本书适用于那些希望理解TCP/IP协议如何运行的人:编写网络应用程序的程序员,负责维护计算机系统和TCP/IP网络的系统管理员,以及经常与TCP/IP应用程序打交道的用户。
排版约定
当我们显示交互式的输入和输出时,输入显示为加粗字体,计算机的输出显示为正常字体。添加的注释为斜体字。
另外,我们始终将系统名称作为shell提示符的一部分(这个例子中的主机bsdi)显示在运行该命令的主机上。
注意 在整本书中,我们将使用缩进的楷体字以及像这样插入的“注意”来描述历史要点或实现细节。
有时我们会参考Unix手册中关于某个命令的完整描述,如ifconfig(8)。命令名后面跟一个带括号的数字是参考Unix命令的一般方法。括号中
的数字是该命令位于Unix手册中的节号,在那里可以找到关于该命令的其他信息。遗憾的是,并不是所有的Unix系统都以同样方式组织手册结构,即通过节
号来区分不同的命令组。这里,我们采用的是BSD风格(BSD派生系统都是一样的,如SunOS
4.1.3),但是你的用户手册可能采用不同的组织方式。
致谢
虽然在封面上仅出现了作者的名字,但出版一本高质量的教材需要很多人的共同努力。首先,需要感谢的是作者的家庭,他们花费很多时间陪伴作者编写这本书。再次感谢你们,Sally、Bill、Ellen和David。
毫无疑问,顾问编辑Brian Kernighan对这本书是重要的。他是个阅读书稿的各种草稿并用红笔做了很多标记的人。他对细节的关注、对文本可读性的严格要求和对书稿的彻底审查,对作者来说是一笔巨大的财富。
技术评审提供了不同的观点,并通过查找技术错误来保持作者的忠实。他们的意见、建议和(重要的)批评对终稿提供了很大帮助。我要感谢Steve
Bellovin、Jon Crowcroft、Pete Haverlock和Doug
Schmidt对整个书稿的意见。同样宝贵的意见来自提供了部分书稿的Dave
Borman(他彻底查看了所有的TCP章节),以及应列为附录E合著者的Bob Gilligan。
一个作者不能在隔绝的状态下工作,因此
我在这里感谢提供大量小帮助,特别是通过电子邮件回复问题的以下人员:Joe Godsil、Jim Hogue、Mike Karels、Paul
Lucchina、Craig Partridge、Thomas Skibo和Jerry Toporek。
这本书是我被要求回答大量的
TCP/IP问题,并且没有找到快速、直接答案的结果。那时我意识到,获得答案的简单方法是运行小测试,查看在某些情况下会发生什么。我感谢Peter
Haverlock提出了很多尖锐的问题,以及Van Jacobson提供的这么多可用于回答本书中问题的公开软件。
关于网络的书需要一
个可以访问Internet的真实网络。我要感谢国家光学天文观测台(NOAO),特别是Sidney Wolff、Richard
Wolff和Steve Grandi,他们提供了对自己的网络和主机的访问。特别感谢Steve
Grandi回答了很多问题,并提供了不同主机上的账号。我还要感谢加州大学伯克利分校CSRG的Keith Bostic和Kirk
McKusick,他们提供了对的4.4 BSD系统的访问。
后,出版商将所有东西集中起来,并按需要将终作品提供给读者。这一切都与编辑John Wait的工作分不开。与John和Addison-Wesley出版社的其他专业人士一起工作是一种乐趣。他们的专业精神和对细节的关注都显示在终结果中。
本书的排版由作者(Troff的铁杆)使用James Clark编写的Groff软件生成。
W. Richard Stevens
亚利桑那州,图森
1993年10月
媒体评论
“我认为本书之所以领先群伦、独一无*,是源于其对细节的注重和对历史的关注。书中介绍了计算机网络的背景知识,并提供了解决不断演变的网络问题的各种
方法。本书一直在不懈努力以获得精确的答案和探索剩余的问题域。对于致力于完善和保护互联网运营或探究长期存在的问题的可选解决方案的工程师,本书提供的
见解将是无价的。作者对当今互联网技术的全面阐述和透彻分析是值得称赞的。”
—— Vint Cerf,互联网发明人之一、图灵奖获得者、谷歌公司副总裁兼首席互联网宣传官
方法。本书一直在不懈努力以获得精确的答案和探索剩余的问题域。对于致力于完善和保护互联网运营或探究长期存在的问题的可选解决方案的工程师,本书提供的
见解将是无价的。作者对当今互联网技术的全面阐述和透彻分析是值得称赞的。”
—— Vint Cerf,互联网发明人之一、图灵奖获得者、谷歌公司副总裁兼首席互联网宣传官
评论
还没有评论。