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 分层
- 1.2.2 分层实现中的多路复用, 解复用, 与封装
- 1.3.1 ARPANET 参考模型
- 1.3.2 TCP/IP 中的多路复用, 解复用, 与封装
- 1.3.3 端口号
- 1.3.4 域名, 地址, DNS
1.5 设计应用程序
- 1.5.1 客户端服务器(Client/Server)
- 1.5.2 点对点(Peer-to-Peer)
- 1.5.3 应用程序编程接口(Application Programming Interfaces (APIs))
- 1.6.1 Request for Comments (RFC)
- 1.6.2 其它标准
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.1 前缀
- 2.4.2 聚合
- 2.5.1 IPv4_IPv6 寻址翻译器
- 2.5.2 组播地址
- 2.5.3 IPv4 组播地址
- 2.5.4 IPv6 组播地址
- 2.5.5 任播地址
- 2.6.1 单播
- 2.6.2 组播
- 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.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.1 双工不匹配
- 3.3.2 Wake-on LAN (WoL), 节能, Magic Packets
- 3.3.3 链路层流程控制
- 3.4.1 生成树协议(Spanning Tree Protocol (STP))
- 3.4.2 802.1ak:Multiple Registration Protocol (MRP)
- 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.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.8 MTU 与 Path MTU
3.9 隧道基础知识
- 3.9.1 单向链路
3.11 总结
3.12 参考文献
4 地址解析协议(Address Resolution Protocol (ARP)) 4.1 介绍
4.2 例子
- 4.2.1 直接交付与 ARP
4.4 ARP 框架格式
4.5 ARP 例子
- 4.5.1 普通例子
- 4.5.2 到不存在的主机的 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.1 IPv6 选项
- 5.3.2 路由 Header
- 5.3.3 分片 Header
- 5.4.1 转发表
- 5.4.2 IP 转发操作
- 5.4.3 例子
- 5.4.4 讨论
- 5.5.1 基本模型:双向隧道
- 5.5.2 路由优化(Route Optimization (RO))
- 5.5.3 讨论
- 5.6.1 主机模型
- 5.6.2 地址选择
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.1 动态配置 IPv4 链路本地地址
- 6.3.2 为链路本地地址做 IPv6 SLAAC
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.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.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.1 防火墙规则
- 7.5.2 NAT 规则
- 7.5.3 与 NAT 和防火墙直接交互:UPnP, NAT-PMP, PCP
- 7.6.1 轻型双协议栈(Dual-Stack Lite (DS-Lite))
- 7.6.2 用 NAT 与 ALG 进行 IPv4 IPv6 翻译
7.8 总结
7.9 参考文献
8 ICMPv4 和 ICMPv6:互联网控制报文协议(Internet Control Message Protocol) 8.1 介绍
- 8.1.1 IPv4 与 IPv6 中的封装
- 8.2.1 ICMPv4 报文
- 8.2.2 ICMPv6 报文
- 8.2.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.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.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.1 将 ICMPv4 翻译为 ICMPv6
- 8.6.2 将 ICMPv6 翻译为 ICMPv4
8.8 总结
8.9 参考手册
9 广播与本地组播 (IGMP 与 MLD) 9.1 介绍
9.2 广播
- 9.2.1 使用广播地址
- 9.2.2 发送广播数据报
- 9.3.1 将 IP 组播地址转换为 802 MAC/以太网地址
- 9.3.2 例子
- 9.3.3 发送组播数据报
- 9.3.4 接收组播数据报
- 9.3.5 主机地址过滤器
- 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.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.7 IP 分片
- 10.7.1 例子:UDP/IPv4 分片
- 10.7.2 重组超时
- 10.8.1 例子
10.10 UDP 数据报的最大长度
- 10.10.1 实现限制
- 10.10.2 数据报截断
- 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.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.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.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.1 TCP 服务模型
- 12.2.2 TCP 可靠性
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.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.1 例子
- 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.1 向不存在的端口请求连接
- 13.6.2 中止连接
- 13.6.3 半开的连接
- 13.6.4 TIME-WAIT 暗杀(TIME-WAIT Assassination (TWA))
- 13.7.1 TCP 端口号
- 13.7.2 限制本地 IP 地址
- 13.7.3 限制外部端点
- 13.7.4 呼入连接队列
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.1 例子
- 14.5.1 例子
- 14.6.1 SACK 接受者行为
- 14.6.2 SACK 发送者行为
- 14.6.3 例子
- 14.7.1 复制 SACK(Duplicate SACK (DSACK))扩展
- 14.7.2 Eifel 检测算法
- 14.7.3 Forward-RTO 恢复 (F-RTO)
- 14.7.4 Eifel 响应算法
- 14.8.1 重排序
- 14.8.2 复制
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.1 滑动窗口
- 15.5.2 零窗口与 TCP 坚持定时器
- 15.5.3 糊涂窗口综合征(Silly Window Syndrome (SWS))
- 15.5.4 大缓冲区与自动调谐
- 15.6.1 例子
15.8 总结
15.9 参考文献
16 TCP 拥塞控制 16.1 介绍
- 16.1.1 TCP 中的拥塞检测
- 16.1.2 减慢 TCP 发送者
- 16.2.1 慢启动
- 16.2.2 拥塞避免
- 16.2.3 在慢启动与拥塞避免之间做选择
- 16.2.4 Tahoe, Reno, 快速恢复
- 16.2.5 标准 TCP
- 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.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.7 TCP 友好
16.8 高速环境中的 TCP
- 16.8.1 高速 TCP(HighSpeed TCP (HSTCP))与有限慢启动
- 16.8.2 二进制增长拥塞控制(Binary Increase Congestion Control (BIC 与 CUBIC))
- 16.9.1 Vegas
- 16.9.2 FAST
- 16.9.3 TCP Westwood and Westwood+
- 16.9.4 复合 TCP
16.11 主动队列管理与 ECN
16.12 涉及 TCP 拥塞控制的攻击
16.13 总结
16.14 参考文献
17 TCP Keepalive 17.1 介绍
17.2 描述
- 17.2.1 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.1 公钥证书, 证书授权中心, X.509
- 18.5.2 验证证书有效性与撤回证书
- 18.5.3 属性证书
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.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.1 TLS 1.2
- 18.9.2 数据报 TLS(TLS with Datagrams (DTLS))
- 18.10.1 DNSSEC 资源记录
- 18.10.2 DNSSEC 操作
- 18.10.3 事务鉴权 (TSIG, TKEY, SIG(0))
- 18.10.4 DNS64 的 DNSSEC
- 18.11.1 DKIM 签密
- 18.11.2 例子
18.13 总结
18.14 参考文献
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- Java|Java OpenCV图像处理之SIFT角点检测详解
- C语言浮点函数中的modf和fmod详解
- 《格列佛游记》第二卷第五章概括
- [青春]翔(五)
- 《卓有成效的管理者》第二十二堂课(创造英雄)
- 17|17 关山松 第二课作业#公众号项目# D20
- 成都之行第二天