第1章 Echo客户/服务器程序 1
1.1 简介 1
1.2 网络结构模型 1
1.2.1 集中式系统 1
1.2.2 分布式系统 2
1.3 Echo客户程序 5
1.4 Echo服务器程序 9
1.5 小结 12
1.6 术语对照 12
第2章 TCP/IP体系结构 13
2.1 术语 13
2.2 历史 15
2.3 模型 19
2.3.1 网络接口层 19
2.3.2 网络层 20
2.3.3 传输层 20
2.3.4 应用层 21
2.4 架构 21
2.5 数据的长征 23
2.5.1 数据封装 23
2.5.2 数据分用 25
2.6 标准化 26
2.6.1 互联网标准 27
2.6.2 当前最好的实践 28
2.6.3 非标准跟踪规范 28
2.6.4 标准化过程 29
2.7 小结 29
2.8 术语对照 30
第3章 网际协议——IP 31
3.1 简介 31
3.2 设计思想 31
3.3 操作模型 32
3.4 主要功能 33
3.5 数据报格式 34
3.6 校验和程序 37
3.7 实际数据 39
3.8 小结 39
第4章 用户数据报协议——UDP 41
4.1 简介 41
4.2 主要功能 42
4.3 数据报格式 43
4.4 校验和 43
4.5 主要应用 44
4.5.1 多播或广播通信 45
4.5.2 简短的请求应答交换 45
4.5.3 效率高于可靠性的应用 46
4.5.4 轻量级通信协议 46
4.6 实际数据 49
4.7 小结 49
4.8 术语对照 49
第5章 传输控制协议——TCP 51
5.1 简介 51
5.2 历史和标准 51
5.3 主要功能 53
5.3.1 数据封装和传输 53
5.3.2 可靠性 53
5.3.3 流量控制 54
5.3.4 拥塞避免 54
5.3.5 多路复用 54
5.3.6 连接管理 54
5.4 数据格式 55
5.4.1 源端口和目的端口 55
5.4.2 序号 55
5.4.3 确认号 56
5.4.4 数据偏移 56
5.4.5 控制位 56
5.4.6 窗口 56
5.4.7 校验和 56
5.4.8 紧急指针 57
5.4.9 选项 57
5.5 实际数据 57
5.6 小结 58
5.7 术语对照 58
第6章 TCP连接管理 60
6.1 简介 60
6.2 TCP有限状态机 60
6.3 建立连接 61
6.3.1 连接目的 62
6.3.2 三次握手 63
6.3.3 同时打开 64
6.4 关闭连接 65
6.4.1 正常关闭 65
6.4.2 同时关闭 67
6.5 初始序号选择 67
6.6 TIME-WAIT状态 67
6.7 平静时间 68
6.8 小结 68
6.9 术语对照 69
第7章 ICMP协议 70
7.1 简介 70
7.2 报文的类型 71
7.3 Echo请求和应答 73
7.4 目的地不可达 74
7.5 源抑制 75
7.6 重定向 75
7.7 路由通告与请求 76
7.7.1 路由器行为 77
7.7.2 主机行为 77
7.8 超时 77
7.9 参数问题 78
7.10 时间戳请求和应答 78
7.11 地址掩码请求和应答 79
7.12 实际数据 79
7.13 小结 80
第8章 多播 81
8.1 简介 81
8.2 报文格式 82
8.2.1 查询报文 82
8.2.2 报告报文 84
8.3 协议实现 85
8.3.1 加入主机组 86
8.3.2 成员关系查询 86
8.3.3 成员关系报告 86
8.4 状态转换 86
8.5 支持多播的级别 87
8.6 多播地址 88
8.7 多播地址映射到以太网地址 89
8.8 单播、广播、多播 90
8.9 实际数据 90
8.10 小结 91
8.11 术语对照 92
第9章 socket基本概念 93
9.1 简介 93
9.1.1 协议簇和地址簇 93
9.1.2 端口 93
9.1.3 地址 94
9.2 socket历史 94
9.3 WinSock简介 95
9.4 WinSock与Berkeley socket的区别 96
9.4.1 头文件和库文件 96
9.4.2 开始和退出 97
9.4.3 句柄数据类型 99
9.4.4 错误码 100
9.4.5 重命名的函数 101
9.5 WinSock I/O模式 101
9.5.1 阻塞I/O 101
9.5.2 非阻塞T/O 102
9.5.3 重叠I/O 102
9.5.4 同步与异步 103
9.6 小结 105
第10章 网络地址 106
10.1 IP地址分类 106
10.2 子网编址 108
10.3 特殊IP地址 108
10.3.1 全“0”的解释 108
10.3.2 全“1”的解释 109
10.3.3 环回地址 109
10.3.4 私有IP地址 110
10.4 地址管理 110
10.5 地址耗尽的解决 111
10.5.1 NAT 111
10.5.2 TPv6 112
10.6 地址映射 112
10.7 ARP的封装 113
10.8 ARP分组格式 113
10.9 实际数据 115
10.10 小结 116
10.11 术语对照 116
第11章 转换函数 117
11.1 数据表示约定 117
11.2 字节序 118
11.3 判断字节序程序 119
11.4 网络字节序 120
11.5 通用socket地址结构 121
11.6 IPv4地址结构 122
11.7 IP地址与ASCII间的转换 122
11.8 转换函数实现 123
11.9 小结 127
第12章 同步名字解析 128
12.1 域名系统简介 128
12.1.1 资源记录 128
12.1.2 解析器 128
12.1.3 名字服务器 129
12.2 域名系统模型 129
12.3 gethostbyname 130
12.4 gethostbyaddr 132
12.5 gethostname 132
12.6 主机查询程序 133
12.7 getservbyname和getservbyport 135
12.8 服务查询程序 137
12.9 getprotobyname和getprotobynumber 138
12.10 协议查询程序 139
12.11 小结 141
第13章 异步名字解析 142
13.1 Windows程序设计 142
13.2 主机异步查询函数 144
13.3 服务和协议异步函数 146
13.4 WSACancelAsyncRequest 148
13.5 域名查询程序 148
13.6 其他查询程序 154
13.7 小结 154
第14章 UDP程序设计 155
14.1 简介 155
14.2 socket 156
14.3 bind 157
14.4 测试bind程序 158
14.5 sendto 159
14.6 recvfrom 160
14.7 closesocket 161
14.8 Daytime客户端程序 163
14.9 Daytime服务器程序 165
14.10 小结 166
第15章 TCP套接口函数 167
15.1 简介 167
15.2 connect 168
15.3 listen 170
15.4 accept 171
15.5 send 172
15.6 recv 173
15.7 shutdown 174
15.8 getpeername 176
15.9 getsockname 176
15.10 小结 177
第16章 Web客户/服务器程序 178
16.1 简介 178
16.2 Web的组成 179
16.3 HTML 180
16.4 HTTP历史 182
16.5 HTTP通信模型 183
16.6 HTTP消息格式 183
16.7 HTTP方法 184
16.8 HTTP状态码 185
16.9 HTTP示例 185
16.10 HTTP服务器程序 186
16.11 HTTP客户端程序 193
16.12 小结 196
16.13 术语对照 197
第17章 独家秘籍——原始套接口 198
17.1 你从哪里来 198
17.2 编程接口 199
17.3 输出处理 200
17.4 输入处理 200
17.5 原始套接口的限制 202
17.6 Ping程序 204
17.7 术语对照 213
第18章 Traceroute程序实现 214
18.1 简介 214
18.2 文件组织 215
18.3 TraceRoute.h文件 216
18.4 TraceRoute.c文件 218
18.5 小结 227
第19章 I/O多路复用——select函数 229
19.1 简介 229
19.2 select函数 233
19.3 MSP原理 235
19.4 MSP服务器程序 236
19.5 MSP客户端程序 243
19.6 小结 249
第20章 套接口选项 250
20.1 简介 250
20.2 ioctlsocket函数 250
20.3 getsockopt和setsockopt函数 252
20.4 基本选项 253
20.5 协议相关选项 256
20.6 获取选项默认值 258
20.7 选项IP_HDRINCL示例 262
20.8 小结 266
20.9 术语对照 267
第21章 广播 268
21.1 简介 268
21.2 广播地址 268
21.3 广播作用 269
21.4 广播通信 270
21.5 Bootstrap协议 271
21.6 服务器程序 273
21.7 客户端程序 277
21.8 小结 282
21.9 术语对照 282
第22章 多播 283
22.1 简介 283
22.2 多播通信 284
22.3 编程原理 286
22.4 多播选项 288
22.5 简单网络时间协议 289
22.6 SNTP服务器程序 293
22.7 SNTP客户端程序 301
22.8 小结 306
22.9 术语对照 306
第23章 WinSock异步编程 307
23.1 简介 307
23.2 WSAAsyncSelect 307
23.3 Finger协议 312
23.4 Finger服务器程序 313
23.5 Finger客户端程序 321
23.6 小结 329
第24章 文件传输协议 330
24.1 简介 330
24.2 FTP模型 331
24.3 控制流程 332
24.3.1 建立控制连接 333
24.3.2 登录序列 334
24.3.3 数据连接 335
24.4 数据存储和表示 338
24.4.1 数据类型 338
24.4.2 格式控制 338
24.4.3 数据结构 339
24.4.4 传输模式 339
24.5 命令 340
24.6 FTP应答 342
24.7 通信实例 345
24.8 小结 346
24.9 术语对照 346
第25章 FTP协议程序 347
25.1 总体结构 347
25.2 状态控制 348
25.3 FtpProt.h文件 349
25.4 协议实现FtpProt.c 351
25.5 小结 368
第26章 FTP界面程序 369
26.1 简介 369
26.2 FtpClnt.h文件 370
26.3 用户界面FtpClnt.c 373
26.4 日志文件FtpTrc.c 389
26.5 小结 390
结束语 391
参考文献 392