第一部分 Linux IP协议栈源代码
第二部分 TCP/IP协议栈源代码分析
第1章 TCP/IP协议栈分析概述
第2章 背景与基本概念
2.1 黑暗时代
2.2 Ghu说“用Linux吧,随后一切都会充满希望”
2.3 网络编程规则
2.4 合作
第3章 Linux与ISO模型
3.1 ISO和OSI
3.2 OSI栈
3.2.1 第1层—物理层
3.2.2 第2层—数据链路层
3.2.3 第3层—网络层
3.2.4 第4层—传输层
3.2.5 第5层—会话层
3.2.6 第6层—表示层
3.2.7 第7层—应用层
3.3 从TCP/IP到OSI模型的映射
第4章 ICMP
4.1 规范化的报文
4.2 输入函数
4.3 输出函数
4.4 管理例程
第5章 套接字API概述
5.1 主要的套接字函数
5.1.1 socket
5.1.2 connect
5.1.3 bind
5.1.4 listen
5.1.5 accept
5.1.6 read、readv
5.1.7 write、writev
5.1.8 shutdown
5.1.9 close(一个套接字对象)
5.1.10 recv、recvfrom、recvmsg
5.1.11 send、sendto、sendmsg
5.2 套接字选项函数
5.2.1 getsockopt
5.2.2 setsockopt
5.2.3 套接字选项(SOL_SOCKET)
5.2.4 IP标准选项(IPPROTO_IP)
5.2.5 IP多播选项(IPPROTO_IP)
5.2.6 TCP选项(IPPROTO_TCP)
第6章 路由
6.1 ARPAnet的遗产
6.2 路由选择:让Internet名副其实
6.3 信包和支票
6.4 Linux的路由选择:路由表处理例程
6.4.1 路由表结构
6.4.2 支持/proc文件系统
6.4.3 ioctl处理例程
6.4.4 增加路由表中的路由
6.4.5 从路由表中删除路由
6.4.6 高速缓存管理例程
6.4.7 后台处理程序
6.4.8 路由请求处理程序
第7章 IPv4
7.1 IP包格式
7.1.1 版本
7.1.2 头长度
7.1.3 服务类型
7.1.4 总长度
7.1.5 标识
7.1.6 分片控制
7.1.7 生命周期
7.1.8 协议
7.1.9 头校验和
7.1.10 源和目的地址
7.1.11 IP包选项
7.2 实现应该做的与不该做的
7.3 函数讨论
7.4 API的其他功能
7.5 包装
7.6 IP信包发送
7.7 传送数据
7.8 数据泛洪
7.9 管理任务
第8章 UDP
8.1 UDP信包的轨迹
8.2 函数索引
8.3 发送一个UDP信包
8.4 ioctl接口—udp_ioctl
8.5 接收UDP信包
8.6 IP连接例程
第9章 TCP
9.1 无错的错误控制
9.2 内部视角
9.3 像棋游戏
9.3.1 设定棋盘
9.3.2 开始连接的开棋法
9.3.3 游戏之中
9.3.4 不利的交易
9.3.5 游戏结束
9.3.6 将死
9.3.7 判定失败一方
9.4 信号灯测试
9.5 一个包头的解析
9.6 分析
9.7 tcp.c
9.8 tcp_output.c
9.9 tcp_timer.c
9.10 timer.c
第10章 IP防火墙支持
10.1 请给我您的护照
10.2 瞒天过海
10.3 防火墙特性
10.4 包过滤例程
10.5 /proc文件系统支持
10.6 IP伪装支持
10.7 防火墙管理
附录A GNU通用公共许可证
附录B 缩写
附录C DNS