TCP/IP|TCP/IP 详解(第二版) 笔记 / 目录

1 介绍 1.1 架构原则

  • 1.1.1 分组数据包, 连接, 数据报
  • 1.1.2 End-to-End Argument 与 Fate Sharing
  • 1.1.3 差错控制与流量控制
1.2 设计与实现
  • 1.2.1 分层
  • 1.2.2 分层实现中的多路复用, 解复用, 与封装
1.3 TCP/IP 协议栈的架构与协议
  • 1.3.1 ARPANET 参考模型
  • 1.3.2 TCP/IP 中的多路复用, 解复用, 与封装
  • 1.3.3 端口号
  • 1.3.4 域名, 地址, DNS
1.4 互联网, 内联网, 外联网
1.5 设计应用程序
  • 1.5.1 客户端服务器(Client/Server)
  • 1.5.2 点对点(Peer-to-Peer)
  • 1.5.3 应用程序编程接口(Application Programming Interfaces (APIs))
1.6 标准化过程
  • 1.6.1 Request for Comments (RFC)
  • 1.6.2 其它标准
1.7 实现与软件分发
1.8 涉及互联网架构的攻击
1.9 总结
1.10 参考文献
2 互联网地址架构 2.1 介绍
2.2 IP 地址表示
2.3 基本的 IP 地址结构
  • 2.3.1 地址分类
  • 2.3.2 子网编址
  • 2.3.3 子网掩码
  • 2.3.4 可变长子网掩码(Variable-Length Subnet Masks (VLSM))
  • 2.3.5 广播地址
  • 2.3.6 IPv6 地址与接口标识符
2.4 CIDR 与聚合
  • 2.4.1 前缀
  • 2.4.2 聚合
2.5 有特殊用途的地址
  • 2.5.1 IPv4_IPv6 寻址翻译器
  • 2.5.2 组播地址
  • 2.5.3 IPv4 组播地址
  • 2.5.4 IPv6 组播地址
  • 2.5.5 任播地址
2.6 分配
  • 2.6.1 单播
  • 2.6.2 组播
2.7 单播地址分配
  • 2.7.1 Single Provider/No Network/Single Address
  • 2.7.2 Single Provider/Single Network/Single Address
  • 2.7.3 Single Provider/Multiple Networks/Multiple Addresses
  • 2.7.4 Multiple Providers/Multiple Networks/Multiple Addresses (Multihoming)
2.8 涉及 IP 地址的攻击
2.9 总结
2.10 参考文献
3 链路层 3.1 介绍
3.2 以太网与 IEEE 802 LAN_MAN 标准
  • 3.2.1 IEEE 802 LAN/MAN 标准
  • 3.2.2 以太网框架格式
  • 3.2.3 802.1p/q:Virtual LANs and QoS Tagging
  • 3.2.4 802.1AX:链路聚合 (Formerly 802.3ad)
3.3 全双工, 节能, 自动协商机制, 802.1X 流控制
  • 3.3.1 双工不匹配
  • 3.3.2 Wake-on LAN (WoL), 节能, Magic Packets
  • 3.3.3 链路层流程控制
3.4 桥接器与交换机
  • 3.4.1 生成树协议(Spanning Tree Protocol (STP))
  • 3.4.2 802.1ak:Multiple Registration Protocol (MRP)
3.5 无线局域网 - IEEE 802.11 (Wi-Fi)
  • 3.5.1 802.11 框架
  • 3.5.2 节能模式与 Time Sync Function (TSF)
  • 3.5.3 802.11 介质访问控制
  • 3.5.4 物理层细节:Rates, Channels, Frequencies
  • 3.5.5 Wi-Fi 安全
  • 3.5.6 Wi-Fi 网格 (802.11s)
3.6 点对点协议(Point-to-Point Protocol (PPP))
  • 3.6.1 链路控制协议(Link Control Protocol (LCP))
  • 3.6.2 多链路点对点协议(Multilink PPP (MP))
  • 3.6.3 压缩控制协议(Compression Control Protocol (CCP))
  • 3.6.4 PPP 鉴权
  • 3.6.5 网络控制协议(Network Control Protocols (NCPs))
  • 3.6.6 Header 压缩
  • 3.6.7 例子
3.7 回环
3.8 MTU 与 Path MTU
3.9 隧道基础知识
  • 3.9.1 单向链路
3.10 链路层上的攻击
3.11 总结
3.12 参考文献
4 地址解析协议(Address Resolution Protocol (ARP)) 4.1 介绍
4.2 例子
  • 4.2.1 直接交付与 ARP
4.3 ARP 缓存
4.4 ARP 框架格式
4.5 ARP 例子
  • 4.5.1 普通例子
  • 4.5.2 到不存在的主机的 ARP 请求
4.6 ARP 缓存超时
4.7 代理 ARP
4.8 免费 ARP 与地址冲突检测(Address Conflict Detection (ACD))
4.9 arp 命令
4.10 使用 ARP 为一个内置设备设置 IPv4 地址
4.11 涉及 ARP 的攻击
4.12 总结
4.13 参考文献
5 IP 协议 5.1 介绍
5.2 IPv4 与 IPv6 Header
  • 5.2.1 IP Header 字段
  • 5.2.2 互联网校验和
  • 5.2.3 DS 字段与 ECN (以前叫做 ToS Byte 或 IPv6 流量类型)
  • 5.2.4 IP 选项
5.3 IPv6 扩展 Header
  • 5.3.1 IPv6 选项
  • 5.3.2 路由 Header
  • 5.3.3 分片 Header
5.4 IP 转发
  • 5.4.1 转发表
  • 5.4.2 IP 转发操作
  • 5.4.3 例子
  • 5.4.4 讨论
5.5 移动 IP
  • 5.5.1 基本模型:双向隧道
  • 5.5.2 路由优化(Route Optimization (RO))
  • 5.5.3 讨论
5.6 主机对 IP 数据报的处理
  • 5.6.1 主机模型
  • 5.6.2 地址选择
5.7 涉及 IP 的攻击
5.8 总结
5.9 参考文献
6 系统配置:DHCP 和自动配置 6.1 介绍
6.2 动态主机配置协议(Dynamic Host Configuration Protocol (DHCP))
  • 6.2.1 地址池与租约
  • 6.2.2 DHCP 与 BOOTP 报文格式
  • 6.2.3 DHCP 与 BOOTP 选项
  • 6.2.4 DHCP 协议操作
  • 6.2.5 DHCPv6
  • 6.2.6 在有中继的情况下使用 DHCP
  • 6.2.7 DHCP 鉴权
  • 6.2.8 重新配置扩展
  • 6.2.9 快速提交
  • 6.2.10 位置信息(Location Information (LCI and LoST))
  • 6.2.11 Mobility and Handoff Information (MoS and ANDSF)
  • 6.2.12 DHCP 窥探
6.3 无状态地址自动配置(Stateless Address Autoconfiguration (SLAAC))
  • 6.3.1 动态配置 IPv4 链路本地地址
  • 6.3.2 为链路本地地址做 IPv6 SLAAC
6.4 DHCP 与 DNS 交互
6.5 以太网上的 PPP(PPP over Ethernet (PPPoE))
6.6 涉及系统配置的攻击
6.7 总结
6.8 参考文献
7 防火墙与网络地址转换(Network Address Translation (NAT)) 7.1 介绍
7.2 防火墙
  • 7.2.1 包过滤防火墙
  • 7.2.2 代理防火墙
7.3 网络地址转换(Network Address Translation (NAT))
  • 7.3.1 传统的 NAT:基本 NAT 与 NAPT
  • 7.3.2 地址与端口翻译行为
  • 7.3.3 过滤器行为
  • 7.3.4 NATs 背后的服务器
  • 7.3.5 发夹与 NAT 回环
  • 7.3.6 NAT 编辑器
  • 7.3.7 服务供应商 NAT(Service Provider NAT (SPNAT))与服务供应商 IPv6 翻译
7.4 NAT 穿透
  • 7.4.1 针孔与打洞
  • 7.4.2 单边自我绑定地址(UNilateral Self-Address Fixing (UNSAF))
  • 7.4.3 NAT 会话穿透工具(Session Traversal Utilities for NAT (STUN))
  • 7.4.4 NAT 中继穿透(Traversal Using Relays around NAT (TURN))
  • 7.4.5 交互式连接建立(Interactive Connectivity Establishment (ICE))
7.5 配置包过滤防火墙与 NAT
  • 7.5.1 防火墙规则
  • 7.5.2 NAT 规则
  • 7.5.3 与 NAT 和防火墙直接交互:UPnP, NAT-PMP, PCP
7.6 实现 IPv4 与 IPv6 共存与转换的 NAT
  • 7.6.1 轻型双协议栈(Dual-Stack Lite (DS-Lite))
  • 7.6.2 用 NAT 与 ALG 进行 IPv4 IPv6 翻译
7.7 涉及防火墙与 NAT 的攻击
7.8 总结
7.9 参考文献
8 ICMPv4 和 ICMPv6:互联网控制报文协议(Internet Control Message Protocol) 8.1 介绍
  • 8.1.1 IPv4 与 IPv6 中的封装
8.2 ICMP 报文
  • 8.2.1 ICMPv4 报文
  • 8.2.2 ICMPv6 报文
  • 8.2.3 ICMP 报文的处理
8.3 ICMP 错误报文
  • 8.3.1 扩展的 ICMP 与多部分报文
  • 8.3.2 无法到达目的地 (ICMPv4 Type 3, ICMPv6 Type 1) 与包太大 (ICMPv6 Type 2)
  • 8.3.3 重定向 (ICMPv4 Type 5, ICMPv6 Type 137)
  • 8.3.4 ICMP 超时 (ICMPv4 Type 11, ICMPv6 Type 3)
  • 8.3.5 参数问题 (ICMPv4 Type 12, ICMPv6 Type
8.4 ICMP 请求/有信息的报文
  • 8.4.1 回显请求/回复 (ping) (ICMPv4 Types 0/8, ICMPv6 Types 129/128)
  • 8.4.2 路由器发现:路由器请求与公告 (ICMPv4 Types 9, 10)
  • 8.4.3 本地代理地址发现请求/回复 (ICMPv6 Types 144/145)
  • 8.4.4 移动前缀请求/公告 (ICMPv6 Types 146/147)
  • 8.4.5 移动 IPv6 快速切换报文 (ICMPv6 Type 154)
  • 8.4.6 组播侦听者请求/报告/完成 (ICMPv6 Types 130/131/132)
  • 8.4.7 组播侦听者发现版本 2(Version 2 Multicast Listener Discovery (MLDv2))(ICMPv6 Type 143)
  • 8.4.8 组播路由器发现(Multicast Router Discovery (MRD))(IGMP Types 48/49/50, ICMPv6 Types 151/152/153)
8.5 IPv6 中的邻居发现
  • 8.5.1 ICMPv6 路由器请求与公告 (ICMPv6 Types 133, 134)
  • 8.5.2 ICMPv6 令居请求与公告 (ICMPv6 Types 135, 134)
  • 8.5.3 ICMPv6 反向邻居发现请求/公告 (ICMPv6 Types 141/142)
  • 8.5.4 邻居状态检测(Neighbor Unreachablility Detection (NUD))
  • 8.5.5 安全邻居发现(Secure Neighbor Discovery (SEND))
  • 8.5.6 ICMPv6 邻居发现(Neighbor Discovery (ND))选项
8.6 翻译 ICMPv4 与 ICMPv6
  • 8.6.1 将 ICMPv4 翻译为 ICMPv6
  • 8.6.2 将 ICMPv6 翻译为 ICMPv4
8.7 涉及 ICMP 的攻击
8.8 总结
8.9 参考手册
9 广播与本地组播 (IGMP 与 MLD) 9.1 介绍
9.2 广播
  • 9.2.1 使用广播地址
  • 9.2.2 发送广播数据报
9.3 组播
  • 9.3.1 将 IP 组播地址转换为 802 MAC/以太网地址
  • 9.3.2 例子
  • 9.3.3 发送组播数据报
  • 9.3.4 接收组播数据报
  • 9.3.5 主机地址过滤器
9.4 互联网组管理协议(Internet Group Management Protocol (IGMP))与组播侦听者发现协议(Multicast Listener Discovery Protocol (MLD))
  • 9.4.1 IGMP 与组成员处理 MLD (“组成员部分”)
  • 9.4.2 IGMP 与组播路由器处理 MLD (“组播路由器部分”)
  • 9.4.3 例子
  • 9.4.4 轻量级 IGMPv3 与 MLDv2
  • 9.4.5 IGMP 与 MLD 健壮性
  • 9.4.6 IGMP 与 MLD 计数器与变量
  • 9.4.7 IGMP 与 MLD 窥探
9.5 涉及 IGMP 与 MLD 的攻击
9.6 总结
9.7 参考文献
10 用户数据报协议(User Datagram Protocol (UDP))和 IP 分片 10.1 介绍
10.2 UDP Header
10.3 UDP 校验和
10.4 例子
10.5 UDP 与 IPv6
  • 10.5.1 Teredo:通过 IPv4 网络建立 IPv6 隧道
10.6 轻量级 UDP(UDP-Lite)
10.7 IP 分片
  • 10.7.1 例子:UDP/IPv4 分片
  • 10.7.2 重组超时
10.8 UDP 的 Path MTU 发现
  • 10.8.1 例子
10.9 IP 分片与 ARP/ND 交互
10.10 UDP 数据报的最大长度
  • 10.10.1 实现限制
  • 10.10.2 数据报截断
10.11 UDP 服务器设计
  • 10.11.1 IP 地址与 UDP 端口号
  • 10.11.2 限制本地 IP 地址
  • 10.11.3 使用多个地址
  • 10.11.4 限制外部 IP 地址
  • 10.11.5 每个端口使用多个服务器
  • 10.11.6 Spanning Address Families:IPv4 与 IPv6
  • 10.11.7 流量不够用与拥塞控制
10.12 翻译 UDP/IPv4 与 UDP/IPv6 数据报
10.13 互联网中的 UDP
10.14 设计 UDP 与 IP 分片的攻击
10.15 总结
10.16 参考文献
11 域名解析与域名系统(Domain Name System (DNS)) 11.1 介绍
11.2 DNS 命名空间
  • 11.2.1 DNS 命名语法
11.3 域名服务器与区域
11.4 缓存
11.5 DNS 协议
  • 11.5.1 DNS 报文格式
  • 11.5.2 DNS 扩展格式(The DNS Extension Format (EDNS0))
  • 11.5.3 UDP 或 TCP
  • 11.5.4 Question (Query) 与区域部分格式
  • 11.5.5 回答, 授权, 额外信息部分格式
  • 11.5.6 资源记录类型
  • 11.5.7 动态更新 (DNS UPDATE)
  • 11.5.8 区域翻译与 DNS NOTIFY
11.6 Sort Lists, Round-Robin, Split DNS
11.7 Open DNS 服务器与 DynDNS
11.8 透明度与扩展性
11.9 将 IPv4 翻译为 IPv6 的 DNS (DNS64)
11.10 LLMNR 与 mDNS
11.11 LDAP
11.12 DNS 上的攻击
11.13 总结
11.14 参考文献
12 TCP:传输控制协议(Transmission Control Protocol (Preliminaries)) 12.1 介绍
  • 12.1.1 ARQ 与重发
  • 12.1.2 数据包窗口与滑动窗口
  • 12.1.3 变量窗口:流程控制与拥塞控制
  • 12.1.4 设置重发超时
12.2 TCP 介绍
  • 12.2.1 TCP 服务模型
  • 12.2.2 TCP 可靠性
12.3 TCP Header 与封装
12.4 总结
12.5 参考文献
13 TCP 连接管理 13.1 介绍
13.2 TCP 连接建立与终止
  • 13.2.1 TCP 半关闭
  • 13.2.2 同时打开与关闭
  • 13.2.3 初始序列号(Initial Sequence Number (ISN))
  • 13.2.4 例子
  • 13.2.5 连接建立超时
  • 13.2.6 连接与翻译器
13.3 TCP 选项
  • 13.3.1 最大报文段长度(Maximum Segment Size (MSS))选项
  • 13.3.2 选择性确认(Selective Acknowledgment (SACK))选项
  • 13.3.3 Window Scale (WSCALE 或 WSOPT) 选项
  • 13.3.4 时间戳选项与防止序号回绕(Protection against Wrapped Sequence Numbers (PAWS))
  • 13.3.5 用户超时(User Timeout (UTO))选项
  • 13.3.6 鉴权选项(Authentication Option (TCP-AO))
13.4 TCP 的 Path MTU 发现
  • 13.4.1 例子
13.5 TCP 状态转换
  • 13.5.1 TCP 状态转换图
  • 13.5.2 TIME_WAIT (2MSL Wait) 状态
  • 13.5.3 安静时间
  • 13.5.4 FIN_WAIT_2 状态
  • 13.5.5 开关同时转换
13.6 重置段
  • 13.6.1 向不存在的端口请求连接
  • 13.6.2 中止连接
  • 13.6.3 半开的连接
  • 13.6.4 TIME-WAIT 暗杀(TIME-WAIT Assassination (TWA))
13.7 TCP 服务器操作
  • 13.7.1 TCP 端口号
  • 13.7.2 限制本地 IP 地址
  • 13.7.3 限制外部端点
  • 13.7.4 呼入连接队列
13.8 涉及 TCP 连接管理的攻击
13.9 总结
13.10 参考文献
14 TCP 超时与重传 14.1 介绍
14.2 简单的超时与重传例子
14.3 设置重传超时(Retransmission Timeout (RTO))
  • 14.3.1 经典方法
  • 14.3.2 标准方法
  • 14.3.3 Linux 方法
  • 14.3.4 RTT 估计器行为
  • 14.3.5 RTTM 健壮性降低与重排序
14.4 基于定时器的重传
  • 14.4.1 例子
14.5 快速重传
  • 14.5.1 例子
14.6 用选择性确认进行重传
  • 14.6.1 SACK 接受者行为
  • 14.6.2 SACK 发送者行为
  • 14.6.3 例子
14.7 假超时与重传
  • 14.7.1 复制 SACK(Duplicate SACK (DSACK))扩展
  • 14.7.2 Eifel 检测算法
  • 14.7.3 Forward-RTO 恢复 (F-RTO)
  • 14.7.4 Eifel 响应算法
14.8 数据包重排序与复制
  • 14.8.1 重排序
  • 14.8.2 复制
14.9 目的地度量
14.10 重新打包
14.11 涉及 TCP 重传的攻击
14.12 总结
14.13 参考文献
15 TCP 数据流与窗口管理 15.1 介绍
15.2 交互式通信
15.3 延迟确认
15.4 Nagle 算法
  • 15.4.1 延迟 ACK 与 Nagle 算法交互
  • 15.4.2 禁用 Nagle 算法
15.5 流程控制与窗口管理
  • 15.5.1 滑动窗口
  • 15.5.2 零窗口与 TCP 坚持定时器
  • 15.5.3 糊涂窗口综合征(Silly Window Syndrome (SWS))
  • 15.5.4 大缓冲区与自动调谐
15.6 应急机制
  • 15.6.1 例子
15.7 与窗口管理相关的攻击
15.8 总结
15.9 参考文献
16 TCP 拥塞控制 16.1 介绍
  • 16.1.1 TCP 中的拥塞检测
  • 16.1.2 减慢 TCP 发送者
16.2 经典算法
  • 16.2.1 慢启动
  • 16.2.2 拥塞避免
  • 16.2.3 在慢启动与拥塞避免之间做选择
  • 16.2.4 Tahoe, Reno, 快速恢复
  • 16.2.5 标准 TCP
16.3 标准算法的演变
  • 16.3.1 NewReno
  • 16.3.2 用 SACK 进行 TCP 拥塞控制
  • 16.3.3 转发确认(Forward Acknowledgment (FACK))与比率等分
  • 16.3.4 有限传输
  • 16.3.5 拥塞窗口验证(Congestion Window Validation (CWV))
16.4 处理假 RTO - Eifel 响应算法
16.5 扩展的例子
  • 16.5.1 慢启动行为
  • 16.5.2 发送者暂停与本地拥塞 (Event 1)
  • 16.5.3 Stretch ACKs 与从本地拥塞中恢复
  • 16.5.4 快速重传与 SACK 恢复 (Event 2)
  • 16.5.5 额外本地拥塞与快速重传事件
  • 16.5.6 超时, 重传, Undoing cwnd Changes
  • 16.5.7 连接完成
16.6 共享拥塞状态
16.7 TCP 友好
16.8 高速环境中的 TCP
  • 16.8.1 高速 TCP(HighSpeed TCP (HSTCP))与有限慢启动
  • 16.8.2 二进制增长拥塞控制(Binary Increase Congestion Control (BIC 与 CUBIC))
16.9 基于延迟的拥塞控制
  • 16.9.1 Vegas
  • 16.9.2 FAST
  • 16.9.3 TCP Westwood and Westwood+
  • 16.9.4 复合 TCP
16.10 缓冲区膨胀
16.11 主动队列管理与 ECN
16.12 涉及 TCP 拥塞控制的攻击
16.13 总结
16.14 参考文献
17 TCP Keepalive 17.1 介绍
17.2 描述
  • 17.2.1 Keepalive 例子
17.3 涉及 TCP Keepalive 的攻击
17.4 总结
17.5 参考文献
18 安全:EAP, IPsec, TLS, DNSSEC, DKIM 18.1 介绍
18.2 信息安全的基本原则
18.3 对网络通信的威胁
18.4 基本加密与安全机制
  • 18.4.1 密码系统
  • 18.4.2 Rivest, Shamir, Adleman (RSA) 公钥加密
  • 18.4.3 Diffie-Hellman-Merkle Key Agreement (aka Diffie-Hellman 或 DH)
  • 18.4.4 签密与 Elliptic Curve Cryptography (ECC)
  • 18.4.5 密钥导出与完全正向保密(Perfect Forward Secrecy (PFS))
  • 18.4.6 伪随机数, 生成器, 函数族
  • 18.4.7 随机数与加盐
  • 18.4.8 加密哈希函数与消息摘要
  • 18.4.9 消息认证码(Message Authentication Codes (MACs, HMAC, CMAC, GMAC))
  • 18.4.10 Cryptographic Suites 与 Cipher Suites
18.5 证书, 证书授权中心(Certificate Authorities (CAs)), PKIs
  • 18.5.1 公钥证书, 证书授权中心, X.509
  • 18.5.2 验证证书有效性与撤回证书
  • 18.5.3 属性证书
18.6 TCP/IP 安全协议与分层
18.7 网络访问控制:802.1X, 802.1AE, EAP, PANA
  • 18.7.1 EAP 方法与密钥导出
  • 18.7.2 EAP 重新认证协议(EAP Re-authentication Protocol (ERP))
  • 18.7.3 承载网络访问认证的协议(Protocol for Carrying Authentication for Network Access (PANA))
18.8 3 层 IP 安全(IP Security (IPsec))
  • 18.8.1 互联网密钥交换(Internet Key Exchange (IKEv2))协议
  • 18.8.2 Authentication Header (AH)
  • 18.8.3 封装安全载荷(Encapsulating Security Payload (ESP))
  • 18.8.4 组播
  • 18.8.5 L2TP/IPsec
  • 18.8.6 IPsec NAT 穿越
  • 18.8.7 例子
18.9 传输层安全(Transport Layer Security (TLS 与 DTLS))
  • 18.9.1 TLS 1.2
  • 18.9.2 数据报 TLS(TLS with Datagrams (DTLS))
18.10 DNS 安全(DNS Security (DNSSEC))
  • 18.10.1 DNSSEC 资源记录
  • 18.10.2 DNSSEC 操作
  • 18.10.3 事务鉴权 (TSIG, TKEY, SIG(0))
  • 18.10.4 DNS64 的 DNSSEC
18.11 域名密钥识别邮件(DomainKeys Identified Mail (DKIM))
  • 18.11.1 DKIM 签密
  • 18.11.2 例子
18.12 安全协议上的攻击
18.13 总结
18.14 参考文献

    推荐阅读