目录
第1章 TCP/IP导引 11.1 什么是TCP/IP 11.2 TCP/IP的起源和历史 21.2.1 TCP/IP的设计目标 21.2.2 TCP/IP大事年表 21.2.3 谁“拥有”Internet 31.2.4 管理TCP/IP的标准化组织 41.2.5 IPv4与IPv6 41.3 TCP/IP标准和RFC 51.4 OSI网络参考模型概览 61.4.1 网络分层 61.4.2 ISO/OSI网络参考模型 71.4.3 协议层如何工作 81.5 TCP/IP网络模型 121.5.1 TCP/IP网络访问层 121.5.2 TCP/IP网络访问层协议 131.5.3 TCP/IP互联网层的功能 141.5.4 TCP/IP互联网层协议 141.5.5 TCP/IP传输层的功能 151.5.6 TCP/IP传输层协议 151.5.7 TCP/IP应用层 161.6 TCP/IP协议、服务、套接字与端口 171.6.1 TCP/IP协议号 171.6.2 TCP/IP端口号 181.6.3 TCP/IP套接字 191.7 TCP/IP中的数据封装 191.8 关于协议分析 201.8.1 协议分析的有用规则 201.8.2 协议分析器的要素 201.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寻址及其他 382.1 IP寻址基础 382.2 IPv4寻址 402.2.1 IPv4地址类 402.2.2 网络、广播、多播及其他特殊IP地址 412.2.3 广播数据包结构 422.2.4 IPv4网络与子网掩码 442.2.5 IPv4子网与超网 452.2.6 IPv4的无类域间路由 472.2.7 公用和专用IPv4地址 482.2.8 管理对IPv4地址的访问 492.3 获得公用IP地址 502.4 IPv4寻址模式 502.4.1 网络空间 512.4.2 主机空间 522.5 正在耗尽的IPv4地址空间 532.6 IPv6概述 552.7 IPv6寻址 562.7.1 地址格式与表示法 562.7.2 网络与主机部分 572.7.3 作用域标识符 572.7.4 接口标识符 572.7.5 URL中的原始IPv6地址 592.7.6 地址类型 592.7.7 地址分配 632.8 IPv6寻址与子网划分的因素 642.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数据包结构: 与有效载荷 783.1 IP数据包与数据包结构 783.2 IPv4字段及其功能 783.2.1 版本字段 793.2.2 长度字段 793.2.3 TOS字段的功能:差分服务和拥塞控制 793.2.4 总长度字段 833.2.5 标识符字段 833.2.6 标志字段 843.2.7 分段偏移量字段 843.2.8 生存时间字段 843.2.9 协议字段 853.2.10 校验和字段 853.2.11 源地址字段 863.2.12 目的地址字段 863.2.13 可选字段 863.2.14 填充字段 863.3 IPv6字段及其功能 873.3.1 版本字段 873.3.2 流量类型字段 873.3.3 数据流标签字段 883.3.4 有效载荷长度字段 883.3.5 下一个字段的作用 883.3.6 Internet 组管理协议 893.3.7 跳限制字段 893.3.8 源地址字段 893.3.9 目的地址字段 893.4 IPv6扩展 893.4.1 扩展的顺序 903.4.2 逐跳选项扩展 913.4.3 目的地选项扩展 913.4.4 路由扩展 923.4.5 分段扩展 923.4.6 认证扩展 933.4.7 封装安全有效载荷扩展和尾部 943.4.8 超大包 953.4.9 服务质量 953.4.10 路由器警告与逐跳选项 963.5 IPv6 MTU与数据包处理 973.6 IPv6的上层协议校验和 983.7 IPv6结构与IPv4结构 1003.7.1 IPv4与IPv6比较 1003.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中的数据链路层与网络层协议 1134.1 数据链路协议 1144.2 点到点协议 1154.3 帧的类型与大小 1174.3.1 以太网帧类型 1174.3.2 Ethernet Ⅱ帧结构 1174.4 IP环境中的硬件地址 1204.4.1 地址解析协议与网络发现协议 1204.4.2 ARP协议的特性与处理 1214.4.3 NDP协议的特征与处理 1284.5 理解IP协议 1294.5.1 发送IP数据报 1304.5.2 路由解析过程 1314.5.3 IPv4与IPv6有何不同 1334.6 IP数据包的生存周期 1344.7 分段与重组 1354.8 服务交付选项 1374.9 优先级 1374.10 服务类型 1374.11 理解IP路由 1394.11.1 在路由表中如何存放记录 1404.11.2 路由协议和被路由协议 1414.11.3 为路由协议分组 1414.12 路由特性 1454.12.1 路由汇聚 1454.12.2 IPv4路由机制 1454.13 IPv6路由的考虑因素 1494.13.1 IPv6路由机制 1494.13.2 IPv6中的多播侦听器发现 1544.14 路由协议 1594.14.1 IPv4路由协议 1594.14.2 IPv6路由协议 1664.15 管理内部网的路由 1724.16 广域网上的路由 1734.16.1 几个小型办公室 1734.16.2 辐射型结构 1734.16.3 多协议 1734.16.4 移动用户 1744.16.5 移动IP 1744.16.6 本地区移动性 1744.17 往返于Internet的路由 1754.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控制消息协议 1885.1 ICMP基础 1885.2 ICMPv4 1905.2.1 RFC 792概览 1905.2.2 ICMPv4的 1905.2.3 ICMPv4消息的类型 1945.2.4 可变的ICMP结构和功能 1985.3 ICMPv6 2065.3.1 ICMPv6概述 2065.3.2 ICMPv6消息的类型 2065.3.3 ICMPv6 2085.4 ICMPv6错误消息 2085.4.1 目的地不可达消息 2085.4.2 数据包太大消息 2095.4.3 超时消息 2105.4.4 参数问题消息 2105.5 ICMPv6信息消息 2115.5.1 Echo请求与Echo应答消息 2115.5.2 路由器公告与路由器请求消息 2125.5.3 邻居请求与邻居公告消息 2135.5.4 重定向消息 2145.5.5 路由器重编号消息 2155.5.6 ICMPv4与ICMPv6消息的简单比较 2165.6 路径MTU发现 2165.7 ICMP测试和故障诊断顺序 2185.7.1 使用ping进行可连接性测试 2185.7.2 使用Traceroute进行路径发现 2195.7.3 使用Pathping进行路径发现 2205.7.4 使用ICMP的路径MTU发现 2205.7.5 ICMP的路由序列 2235.7.6 ICMPv4的安全问题 2265.7.7 ICMPv6的安全问题 2285.8 解码ICMP数据包 2285.8.1 ICMPv4 2285.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中的邻居发现 2396.1 理解邻居发现 2396.2 IPv6邻居发现协议与IPv4协议的比较 2406.3 邻居发现消息的格式 2416.3.1 路由器请求消息 2416.3.2 路由器公告消息 2426.3.3 邻居请求消息 2456.3.4 邻居公告消息 2466.3.5 重定向消息 2486.4 邻居发现选项的格式 2506.4.1 源链路层地址与目标链路层地址选项 2506.4.2 前缀信息选项 2526.4.3 重定向选项 2546.4.4 MTU选项 2556.4.5 公告时间间隔选项 2566.4.6 宿主智能体信息选项 2566.4.7 路由信息选项 2576.5 概念主机模型 2576.5.1 在主机上存储邻居数据 2586.5.2 概念发送算法 2586.6 邻居发现过程 2606.6.1 地址解析 2606.6.2 邻居不可达检测 2616.6.3 重复地址检测 2626.6.4 路由器发现 2636.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地址自动配置 2787.1 理解自动寻址 2797.2 动态主机配置协议介绍 2797.2.1 DHCP的工作原理 2807.2.2 租用的作用 2817.2.3 DHCP软件部件 2817.2.4 DHCP租用类型 2827.2.5 DHCP租用的更多信息 2837.3 IPv4自动配置 2837.3.1 自动专用IP寻址(APIPA) 2847.3.2 DHCP 2847.4 IPv6自动配置 2997.4.1 IPv6自动配置的类型 2997.4.2 IPv6自动配置的地址的功能状态 3037.4.3 结点网卡标识符 3047.4.4 DHCPv6 3077.4.5 IPv6自动配置过程 3167.5 Microsoft Windows 2012 R2的DHCP范围 3197.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网络中的名称解析 3338.1 理解名称解析的基础 3338.2 网络名称解析协议 3348.2.1 LLMNR 3348.2.2 DNS 3358.2.3 DNS数据库结构 3378.2.4 DNS名称空间 3388.2.5 DNS数据库记录 3398.2.6 委托DNS授权 3408.2.7 DNS服务器的类型 3408.3 域名服务器的工作原理 3428.3.1 递归查询 3428.3.2 迭代或非递归查询 3438.4 DNS缓存的重要性 3448.5 DNS配置文件和资源记录格式 3458.5.1 授权开始记录 3458.5.2 地址和别名记录 3468.5.3 将地址映射为名称 3488.6 IPv6网络中的名称解析 3498.6.1 IPv6中的DNS 3508.6.2 源地址与目的地址选择 3528.6.3 源地址选择算法 3538.6.4 目的地址选择算法 3568.6.5 使用地址选择 3578.7 Windows操作系统对名称解析的支持 3598.7.1 DNS解析器 3598.7.2 DNS服务器服务 3608.7.3 DNS动态更新 3628.7.4 源地址与目的地址选择 3638.7.5 LLMNR支持 3648.7.6 使用ipv6-literal.net名称 3668.7.7 对等体名称解析协议 3668.8 解决名称解析问题与失败的故障 3688.8.1 故障的常见原因 3698.8.2 解决DNS问题的工具 3708.8.3 netstat 3708.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传输层协议 3869.1 理解UDP与TCP 3869.1.1 IPv4与IPv6上的UDP 3879.1.2 IPv4与IPv6上的TCP 3899.2 UDP 3909.2.1 UDP字段和功能 3919.2.2 UDP端口号与进程 3949.2.3 UDP与IPv6 3959.3 TCP 3969.3.1 TCP与IPv4 3969.3.2 TCP与IPv6 4119.4 UDP、TCP与IPv6扩展 4129.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 42210.1 IPv4与IPv6如何相互作用 42210.1.1 双重栈技术 42310.1.2 通过IPv4云的隧道技术 42310.1.3 采用IPv6的进展 42410.1.4 转换到IPv6的实际问题 42410.1.5 互操作性 42410.1.6 网络元素 42510.1.7 软件 42510.1.8 从Windows的角度看IPv6转换 42610.1.9 可用性 42710.1.10 下一步的工作 42710.2 IPv4/IPv6混合网络与网络结点 42810.2.1 基本的混合网络模型 42810.2.2 嵌套的混合网络模型 42910.2.3 真实的混合网络模型 42910.3 IPv6转换地址 43010.4 IPv4/IPv6转换机制 43110.5 双重IP层体系结构 43210.6 双重栈体系结构 43310.6.1 双重体系结构与隧道技术 43410.6.2 IPv6-over-IPv4隧道技术 43410.6.3 DNS基础设施 43510.7 IPv4与IPv6混合的隧道配置 43610.7.1 路由器到路由器的隧道配置 43610.7.2 主机到路由器与路由器到主机的隧道配置 43710.7.3 主机到主机的隧道配置 43810.7.4 隧道技术的类型 43810.8 ISATAP隧道技术 43910.8.1 ISATAP概述 43910.8.2 ISATAP的组件 44010.8.3 ISATAP结点的路由器发现 44110.8.4 ISATAP寻址与路由 44110.8.5 ISATAP的通信 44310.8.6 配置一台ISATAP路由器 44410.9 6to4隧道技术 44610.9.1 6to4概述 44610.9.2 6to4的组件 44710.9.3 6to4寻址与路由 44810.9.4 6to4通信 44810.9.5 ISATAP与6to4一起使用 44910.10 Teredo隧道技术 45010.10.1 Teredo概述 45010.10.2 Teredo的组件 45010.10.3 Teredo寻址与路由 45110.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 46311.1 理解IPv6部署 46311.2 规划IPv6部署 46411.2.1 成功准则 46511.2.2 体系结构的决策 46511.2.3 迁移与转换技术 47211.2.4 要完成的任务 47611.3 部署和使用IPv6 48111.3.1 构建一个IPv6测试/示范网络 48111.3.2 开始迁移应用程序 48211.3.3 把只支持IPv4的主机升级到支持IPv4/IPv6 48311.3.4 使用6to4创建一个隧道式的IPv6环境 48511.3.5 使用ISATAP创建一个隧道式的IPv6环境 48711.4 探讨一些网络管理任务 489本章小结 490习题 491动手项目 493动手项目11-1:探索路由服务器 493动手项目11-2:探索IPv6配置 497案例项目 497案例项目11-1:创建一个测试实验网络 497案例项目11-2:创建一个迁移规划 497第12章 构建安全的TCP/IP环境 49812.1 理解网络安全性基础 49912.2 IP安全的原则 50012.3 常见的TCP/IP攻击、探测与入侵 50112.3.1 主要术语 50112.3.2 TCP/IP的主要弱点 50212.3.3 灵活性与安全性 50312.4 与IP有关的常见攻击类型 50312.5 哪些IP服务易受攻击 50412.6 IP攻击的各个阶段 50612.6.1 侦探与发现 50612.6.2 攻击阶段 50812.6.3 掩盖阶段 50812.7 详论常见攻击与入侵点 50812.7.1 病毒、间谍软件与类似安全威胁 50812.7.2 拒绝服务攻击 50912.7.3 分布式拒绝服务攻击 50912.7.4 缓冲区溢出或过载 51012.7.5 欺骗 51012.7.6 TCP会话劫持 51012.7.7 网络嗅探 51112.8 维护IP安全性 51212.8.1 应用安全补丁与修复 51212.8.2 知道要堵住哪些端口 51312.8.3 使用IPSec 51412.8.4 保护网络外设 51512.8.5 实现防火墙 51712.8.6 在IP安全中IDS与IPS的作用 51912.9 蜜罐与蜜网 52012.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 XTCP/IP协议原理与应用(第5版)
XI目录