《TCP/IP协议原理与应用》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)詹姆斯·派尔斯(James Pyles),(美)杰弗里·卡雷尔(Jeffrey L. Carrell),(美)埃德·泰特尔(Ed Tittel)著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2018
  • ISBN:9787302488415
  • 页数:563 页
图书介绍:本书深入介绍了TCP/IP的模型、协议、服务以及标准。本书采用理论与实践相结合的方法,利用各种网络工具(如Wireshark),通过捕获网络上的真实数据包,并把数据包的内部结构以可视化的形式详细分解,让读者能够以直观的方式了解TCP/IP的精髓。此外,通过每章末尾的习题、动手项目和案例项目,深化读者对关键概念的理解,掌握常见网络管理和监视工具的运用。

第1章 TCP/IP导引 1

1.1 什么是TCP/IP 1

1.2 TCP/IP的起源和历史 2

1.2.1 TCP/IP的设计目标 2

1.2.2 TCP/IP大事年表 2

1.2.3 谁“拥有”Internet 3

1.2.4 管理TCP/IP的标准化组织 4

1.2.5 IPv4与IPv6 4

1.3 TCP/IP标准和RFC 5

1.4 OSI网络参考模型概览 6

1.4.1 网络分层 6

1.4.2 ISO/OSI网络参考模型 7

1.4.3 协议层如何工作 8

1.5 TCP/IP网络模型 12

1.5.1 TCP/IP网络访问层 12

1.5.2 TCP/IP网络访问层协议 13

1.5.3 TCP/IP互联网层的功能 14

1.5.4 TCP/IP互联网层协议 14

1.5.5 TCP/IP传输层的功能 15

1.5.6 TCP/IP传输层协议 15

1.5.7 TCP/IP应用层 16

1.6 TCP/IP协议、服务、套接字与端口 17

1.6.1 TCP/IP协议号 17

1.6.2 TCP/IP端口号 18

1.6.3 TCP/IP套接字 19

1.7 TCP/IP中的数据封装 19

1.8 关于协议分析 20

1.8.1 协议分析的有用规则 20

1.8.2 协议分析器的要素 20

1.8.3 将协议分析器安装在网络上 24

本章小结 25

习题 26

动手项目 28

动手项目1-1:安装Wireshark 29

动手项目1-2:捕获基本数据包,查看基本数据包和统计信息 30

动手项目1-3:选择一个过滤器并捕获数据包 35

动手项目1-4:创建一个显示过滤器 35

动手项目1-5:查看一个完整的数据包解码 36

案例项目 36

案例项目1-1:解决小型网络中的网络连接问题 36

案例项目1-2:讨论升级到IPv6的理由 37

案例项目1-3:确定正在使用的是哪种IP协议 37

案例项目1-4:解释协议错误或广播数据流的后果 37

案例项目1-5:学习Internet的历史 37

第2章 IP寻址及其他 38

2.1 IP寻址基础 38

2.2 IPv4寻址 40

2.2.1 IPv4地址类 40

2.2.2 网络、广播、多播及其他特殊IP地址 41

2.2.3 广播数据包结构 42

2.2.4 IPv4网络与子网掩码 44

2.2.5 IPv4子网与超网 45

2.2.6 IPv4的无类域间路由 47

2.2.7 公用和专用IPv4地址 48

2.2.8 管理对IPv4地址的访问 49

2.3 获得公用IP地址 50

2.4 IPv4寻址模式 50

2.4.1 网络空间 51

2.4.2 主机空间 52

2.5 正在耗尽的IPv4地址空间 53

2.6 IPv6概述 55

2.7 IPv6寻址 56

2.7.1 地址格式与表示法 56

2.7.2 网络与主机部分 57

2.7.3 作用域标识符 57

2.7.4 接口标识符 57

2.7.5 URL中的原始IPv6地址 59

2.7.6 地址类型 59

2.7.7 地址分配 63

2.8 IPv6寻址与子网划分的因素 64

2.9 从IPv4转换到IPv6 65

本章小结 67

习题 68

动手项目 70

动手项目2-1:熟悉IPv6反向代理 70

动手项目2-2:计算域的IPv6反向代理 70

动手项目2-3:根据所需的IPv4子网数量,计算子网掩码 71

动手项目2-4:使用在线教程学习子网划分 71

动手项目2-5:使用子网计算器,确定某个IP地址的主机地址范围、广播地址以及其他相关值 72

动手项目2-6:查看与IPv6寻址有关的RFC文档 73

动手项目2-7:找出Windows计算机的IPv6地址 73

动手项目2-8:找出Mac计算机的IPv6地址 74

动手项目2-9:找出Linux计算机的IPv6地址 74

动手项目2-10:访问和使用Windows计算机的ARP表 75

动手项目2-11:访问和使用Linux计算机的ARP表 76

案例项目 77

案例项目2-1:设计一个公司网络 77

案例项目2-2:为单个站点实现一个网络 77

案例项目2-3:设计一个IPv6地址空间 77

第3章 基本的IP数据包结构: 首部与有效载荷 78

3.1 IP数据包与数据包结构 78

3.2 IPv4首部字段及其功能 78

3.2.1 版本字段 79

3.2.2 首部长度字段 79

3.2.3 TOS字段的功能:差分服务和拥塞控制 79

3.2.4 总长度字段 83

3.2.5 标识符字段 83

3.2.6 标志字段 84

3.2.7 分段偏移量字段 84

3.2.8 生存时间字段 84

3.2.9 协议字段 85

3.2.10 首部校验和字段 85

3.2.11 源地址字段 86

3.2.12 目的地址字段 86

3.2.13 可选字段 86

3.2.14 填充字段 86

3.3 IPv6首部字段及其功能 87

3.3.1 版本字段 87

3.3.2 流量类型字段 87

3.3.3 数据流标签字段 88

3.3.4 有效载荷长度字段 88

3.3.5 下一个首部字段的作用 88

3.3.6 Internet组管理协议 89

3.3.7 跳限制字段 89

3.3.8 源地址字段 89

3.3.9 目的地址字段 89

3.4 IPv6扩展首部 89

3.4.1 扩展首部的顺序 90

3.4.2 逐跳选项扩展首部 91

3.4.3 目的地选项扩展首部 91

3.4.4 路由扩展首部 92

3.4.5 分段扩展首部 92

3.4.6 认证扩展首部 93

3.4.7 封装安全有效载荷扩展首部和尾部 94

3.4.8 超大包 95

3.4.9 服务质量 95

3.4.10 路由器警告与逐跳选项 96

3.5 IPv6 MTU与数据包处理 97

3.6 IPv6的上层协议校验和 98

3.7 IPv6首部结构与IPv4首部结构 100

3.7.1 IPv4与IPv6首部比较 100

3.7.2 从IPv4转换到IPv6的小结 101

本章小结 102

习题 104

动手项目 107

动手项目3-1:使用Wireshark软件查看IPv4数据包首部 107

动手项目3-2:使用Wireshark软件查看IPv6数据包首部 108

动手项目3-3:在Wireshark软件中查看IPv6上层协议 110

案例项目 111

案例项目3-1:Wireshark与消息分析器 111

案例项目3-2:解释校验和错误 111

案例项目3-3:查看IPv6的下一个首部字段 112

第4章 TCP/IP中的数据链路层与网络层协议 113

4.1 数据链路协议 114

4.2 点到点协议 115

4.3 帧的类型与大小 117

4.3.1 以太网帧类型 117

4.3.2 Ethernet Ⅱ帧结构 117

4.4 IP环境中的硬件地址 120

4.4.1 地址解析协议与网络发现协议 120

4.4.2 ARP协议的特性与处理 121

4.4.3 NDP协议的特征与处理 128

4.5 理解IP协议 129

4.5.1 发送IP数据报 130

4.5.2 路由解析过程 131

4.5.3 IPv4与IPv6有何不同 133

4.6 IP数据包的生存周期 134

4.7 分段与重组 135

4.8 服务交付选项 137

4.9 优先级 137

4.10 服务类型 137

4.11 理解IP路由 139

4.11.1 在路由表中如何存放记录 140

4.11.2 路由协议和被路由协议 141

4.11.3 为路由协议分组 141

4.12 路由特性 145

4.12.1 路由汇聚 145

4.12.2 IPv4路由机制 145

4.13 IPv6路由的考虑因素 149

4.13.1 IPv6路由机制 149

4.13.2 IPv6中的多播侦听器发现 154

4.14 路由协议 159

4.14.1 IPv4路由协议 159

4.14.2 IPv6路由协议 166

4.15 管理内部网的路由 172

4.16 广域网上的路由 173

4.16.1 几个小型办公室 173

4.16.2 辐射型结构 173

4.16.3 多协议 173

4.16.4 移动用户 174

4.16.5 移动IP 174

4.16.6 本地区移动性 174

4.17 往返于Internet的路由 175

4.18 保护路由器和路由行为的安全 175

本章小结 176

习题 179

动手项目 182

动手项目4-1:管理本地ARP缓冲区 182

动手项目4-2:读取本地IPv4路由表 183

动手项目4-3:读取本地IPv6路由表和邻居缓冲区 183

动手项目4-4:用Wireshark软件查看IPv4和IPv6路由协议 183

案例项目 187

案例项目4-1:查看跟踪文件 187

案例项目4-2:基于跳限制值来确定IPv6数据报传输的距离 187

案例项目4-3:TCP/IP网络的QoS 187

第5章 Internet控制消息协议 188

5.1 ICMP基础 188

5.2 ICMPv4 190

5.2.1 RFC792概览 190

5.2.2 ICMPv4的首部 190

5.2.3 ICMPv4消息的类型 194

5.2.4 可变的ICMP结构和功能 198

5.3 ICMPv6 206

5.3.1 ICMPv6概述 206

5.3.2 ICMPv6消息的类型 206

5.3.3 ICMPv6首部 208

5.4 ICMPv6错误消息 208

5.4.1 目的地不可达消息 208

5.4.2 数据包太大消息 209

5.4.3 超时消息 210

5.4.4 参数问题消息 210

5.5 ICMPv6信息消息 211

5.5.1 Echo请求与Echo应答消息 211

5.5.2 路由器公告与路由器请求消息 212

5.5.3 邻居请求与邻居公告消息 213

5.5.4 重定向消息 214

5.5.5 路由器重编号消息 215

5.5.6 ICMPv4与ICMPv6消息的简单比较 216

5.6 路径MTU发现 216

5.7 ICMP测试和故障诊断顺序 218

5.7.1 使用ping进行可连接性测试 218

5.7.2 使用Traceroute进行路径发现 219

5.7.3 使用Pathping进行路径发现 220

5.7.4 使用ICMP的路径MTU发现 220

5.7.5 ICMP的路由序列 223

5.7.6 ICMPv4的安全问题 226

5.7.7 ICMPv6的安全问题 228

5.8 解码ICMP数据包 228

5.8.1 ICMPv4 228

5.8.2 ICMPv6 230

本章小结 231

习题 232

动手项目 234

动手项目5-1:在网络上使用ICMPv4 Echo请求消息ping另一个设备 234

动手项目5-2:为你的数据流构建一个过滤器 234

动手项目5-3:捕获ICMPv6 Echo请求与Echo应答数据包 235

动手项目5-4:捕获ICMPv6邻居请求与邻居公告消息 236

案例项目 238

案例项目5-1:确定默认网关设置 238

案例项目5-2:ICMPv6安全性问题 238

案例项目5-3:测试路径MTU发现 238

案例项目5-4:研究一下Jon Postel 238

第6章 IPv6中的邻居发现 239

6.1 理解邻居发现 239

6.2 IPv6邻居发现协议与IPv4协议的比较 240

6.3 邻居发现消息的格式 241

6.3.1 路由器请求消息 241

6.3.2 路由器公告消息 242

6.3.3 邻居请求消息 245

6.3.4 邻居公告消息 246

6.3.5 重定向消息 248

6.4 邻居发现选项的格式 250

6.4.1 源链路层地址与目标链路层地址选项 250

6.4.2 前缀信息选项 252

6.4.3 重定向首部选项 254

6.4.4 MTU选项 255

6.4.5 公告时间间隔选项 256

6.4.6 宿主智能体信息选项 256

6.4.7 路由信息选项 257

6.5 概念主机模型 257

6.5.1 在主机上存储邻居数据 258

6.5.2 概念发送算法 258

6.6 邻居发现过程 260

6.6.1 地址解析 260

6.6.2 邻居不可达检测 261

6.6.3 重复地址检测 262

6.6.4 路由器发现 263

6.6.5 重定向 265

本章小结 267

习题 268

动手项目 271

动手项目6-1:查看ICMPv6邻居发现消息 271

动手项目6-2:创建一个过滤器,查看特定主机的邻居公告消息 272

动手项目6-3:创建一个过滤器,查看邻居公告消息,该消息是对邻居请求重复地址检测消息的应答消息 273

动手项目6-4:创建一个过滤器,查看设置了M和O标志的路由器公告消息 274

动手项目6-5:创建一个过滤器,查看具有前缀信息的路由器公告消息 275

案例项目 276

案例项目6-1:理解邻居请求和邻居公告消息 276

案例项目6-2:排除网络问题 276

案例项目6-3:描述初始的IPv6主机通信 277

第7章 IP地址自动配置 278

7.1 理解自动寻址 279

7.2 动态主机配置协议介绍 279

7.2.1 DHCP的工作原理 280

7.2.2 租用的作用 281

7.2.3 DHCP软件部件 281

7.2.4 DHCP租用类型 282

7.2.5 DHCP租用的更多信息 283

7.3 IPv4自动配置 283

7.3.1 自动专用IP寻址(APIPA) 284

7.3.2 DHCP 284

7.4 IPv6自动配置 299

7.4.1 IPv6自动配置的类型 299

7.4.2 IPv6自动配置的地址的功能状态 303

7.4.3 结点网卡标识符 304

7.4.4 DHCPv6 307

7.4.5 IPv6自动配置过程 316

7.5 Microsoft Windows 2012 R2的DHCP范围 319

7.6 创建一个简单的DHCP服务器 319

本章小结 325

习题 326

动手项目 328

动手项目7-1:查看DHCP启动序列 329

动手项目7-2:查看DHCP更新、重新绑定和重新初始化序列 329

动手项目7-3:查看DHCPv6启动序列 330

动手项目7-4:查看和管理DHCP 与 DHCPv6租借信息 330

案例项目 331

案例项目7-1:DHCP设计与实现 331

案例项目7-2:静态与动态IPv4地址问题 332

案例项目7-3:解决DHCP地址问题 332

案例项目7-4:DHCPv6设计与实现 332

第8章 IP网络中的名称解析 333

8.1 理解名称解析的基础 333

8.2 网络名称解析协议 334

8.2.1 LLMNR 334

8.2.2 DNS 335

8.2.3 DNS数据库结构 337

8.2.4 DNS名称空间 338

8.2.5 DNS数据库记录 339

8.2.6 委托DNS授权 340

8.2.7 DNS服务器的类型 340

8.3 域名服务器的工作原理 342

8.3.1 递归查询 342

8.3.2 迭代或非递归查询 343

8.4 DNS缓存的重要性 344

8.5 DNS配置文件和资源记录格式 345

8.5.1 授权开始记录 345

8.5.2 地址和别名记录 346

8.5.3 将地址映射为名称 348

8.6 IPv6网络中的名称解析 349

8.6.1 IPv6中的DNS 350

8.6.2 源地址与目的地址选择 352

8.6.3 源地址选择算法 353

8.6.4 目的地址选择算法 356

8.6.5 使用地址选择 357

8.7 Windows操作系统对名称解析的支持 359

8.7.1 DNS解析器 359

8.7.2 DNS服务器服务 360

8.7.3 DNS动态更新 362

8.7.4 源地址与目的地址选择 363

8.7.5 LLMNR支持 364

8.7.6 使用ipv6-1iteral.net名称 366

8.7.7 对等体名称解析协议 366

8.8 解决名称解析问题与失败的故障 368

8.8.1 故障的常见原因 369

8.8.2 解决DNS问题的工具 370

8.8.3 netstat 370

8.8.4 nslookup 371

本章小结 374

习题 375

动手项目 377

动手项目8-1:作用于DNS解析器缓存 377

动手项目8-2:设置Windows计算机来使用DNS动态更新 379

动手项目8-3:把IPv6地址转换为一个ipv6-literal.net名称 380

动手项目8-4:捕获并查看你的DNS数据流 380

动手项目8-5:找出Linux计算机的DNS解析器 381

动手项目8-6:使用dig工具来进行DNS查询任务 382

案例项目 385

案例项目8-1:收集IPv6地址数据以配置名称服务器 385

案例项目8-2:请解释一下只用于缓存的服务器的使用 385

案例项目8-3:理解在网络基础设施中所需要的最少DNS服务器数量 385

第9章 TCP/IP传输层协议 386

9.1 理解UDP与TCP 386

9.1.1 IPv4与IPv6上的UDP 387

9.1.2 IPv4与IPv6上的TCP 389

9.2 UDP 390

9.2.1 UDP首部字段和功能 391

9.2.2 UDP端口号与进程 394

9.2.3 UDP与IPv6 395

9.3 TCP 396

9.3.1 TCP与IPv4 396

9.3.2 TCP与IPv6 411

9.4 UDP、TCP与IPv6扩展首部 412

9.5 在TCP和UDP之间做出选择 413

本章小结 414

习题 415

动手项目 417

动手项目9-1:查看UDP首部结构 417

动手项目9-2:查看IPv4与IPv6的TCP首部 418

动手项目9-3:查看TCP握手进程 419

案例项目 420

案例项目9-1:使用Wireshark软件清查网络 420

案例项目9-2:发现动态端口号 420

案例项目9-3:TCP窗口大小问题 420

案例项目9-4:理解重复ACK 421

第10章 从IPv4转换到IPv6 422

10.1 IPv4与IPv6如何相互作用 422

10.1.1 双重栈技术 423

10.1.2 通过IPv4云的隧道技术 423

10.1.3 采用IPv6的进展 424

10.1.4 转换到IPv6的实际问题 424

10.1.5 互操作性 424

10.1.6 网络元素 425

10.1.7 软件 425

10.1.8 从Windows的角度看IPv6转换 426

10.1.9 可用性 427

10.1.10 下一步的工作 427

10.2 IPv4/IPv6混合网络与网络结点 428

10.2.1 基本的混合网络模型 428

10.2.2 嵌套的混合网络模型 429

10.2.3 真实的混合网络模型 429

10.3 IPv6转换地址 430

10.4 IPv4/IPv6转换机制 431

10.5 双重IP层体系结构 432

10.6 双重栈体系结构 433

10.6.1 双重体系结构与隧道技术 434

10.6.2 IPv6-over-IPv4隧道技术 434

10.6.3 DNS基础设施 435

10.7 IPv4与IPv6混合的隧道配置 436

10.7.1 路由器到路由器的隧道配置 436

10.7.2 主机到路由器与路由器到主机的隧道配置 437

10.7.3 主机到主机的隧道配置 438

10.7.4 隧道技术的类型 438

10.8 ISATAP隧道技术 439

10.8.1 ISATAP概述 439

10.8.2 ISATAP的组件 440

10.8.3 ISATAP结点的路由器发现 441

10.8.4 ISATAP寻址与路由 441

10.8.5 ISATAP的通信 443

10.8.6 配置一台ISATAP路由器 444

10.9 6to4隧道技术 446

10.9.1 6to4概述 446

10.9.2 6to4的组件 447

10.9.3 6to4寻址与路由 448

10.9.4 6to4通信 448

10.9.5 ISATAP与6to4一起使用 449

10.10 Teredo隧道技术 450

10.10.1 Teredo概述 450

10.10.2 Teredo的组件 450

10.10.3 Teredo寻址与路由 451

10.10.4 Teredo的处理过程 452

本章小结 454

习题 456

动手项目 458

动手项目10-1:查看ISATAP网络中的数据流 458

动手项目10-2:查看6to4捕获文件 460

动手项目10-3:查看一个Teredo捕获文件和路由器请求数据包 461

案例项目 462

案例项目10-1:准备一个网络,进行IPv4-to-IPv6转换技术部署 462

案例项目10-2:配置要使用Teredo的Windows 7客户端 462

案例项目10-3:绘制ISATAP封装首部 462

第11章 部署IPv6 463

11.1 理解IPv6部署 463

11.2 规划IPv6部署 464

11.2.1 成功准则 465

11.2.2 体系结构的决策 465

11.2.3 迁移与转换技术 472

11.2.4 要完成的任务 476

11.3 部署和使用IPv6 481

11.3.1 构建一个IPv6测试/示范网络 481

11.3.2 开始迁移应用程序 482

11.3.3 把只支持IPv4的主机升级到支持IPv4/IPv6 483

11.3.4 使用6to4创建一个隧道式的IPv6环境 485

11.3.5 使用ISATAP创建一个隧道式的IPv6环境 487

11.4 探讨一些网络管理任务 489

本章小结 490

习题 491

动手项目 493

动手项目11-1:探索路由服务器 493

动手项目11-2:探索IPv6配置 497

案例项目 497

案例项目11-1:创建一个测试实验网络 497

案例项目11-2:创建一个迁移规划 497

第12章 构建安全的TCP/IP环境 498

12.1 理解网络安全性基础 499

12.2 IP安全的原则 500

12.3 常见的TCP/IP攻击、探测与入侵 501

12.3.1 主要术语 501

12.3.2 TCP/IP的主要弱点 502

12.3.3 灵活性与安全性 503

12.4 与IP有关的常见攻击类型 503

12.5 哪些IP服务最易受攻击 504

12.6 IP攻击的各个阶段 506

12.6.1 侦探与发现 506

12.6.2 攻击阶段 508

12.6.3 掩盖阶段 508

12.7 详论常见攻击与入侵点 508

12.7.1 病毒、间谍软件与类似安全威胁 508

12.7.2 拒绝服务攻击 509

12.7.3 分布式拒绝服务攻击 509

12.7.4 缓冲区溢出或过载 510

12.7.5 欺骗 510

12.7.6 TCP会话劫持 510

12.7.7 网络嗅探 511

12.8 维护IP安全性 512

12.8.1 应用安全补丁与修复 512

12.8.2 知道要堵住哪些端口 513

12.8.3 使用IPSec 514

12.8.4 保护网络外设 515

12.8.5 实现防火墙 517

12.8.6 在IP安全中IDS与IPS的作用 519

12.9 蜜罐与蜜网 520

12.10 实行安全意识培训 520

本章小结 520

习题 521

动手项目 523

动手项目12-1:在Wireshark中查看本地扫描 523

动手项目12-2:在Wireshark中查看端口扫描 524

动手项目12-3:在Wireshark中堵住端口 524

动手项目12-4:在Wireshark中查看数据流来自的端口号 525

动手项目12-5:在Wireshark中查看基于IPv4的特定类型端口扫描 525

动手项目12-6:在Wireshark中查看基于IPv6的特定类型端口扫描 526

案例项目 527

案例项目12-1:防火墙过滤器 527

案例项目12-2:防火墙研究、规划与实现 527

附录 学生与教师在线资源 528

术语表 530