《WinSock网络编程经络》用WinSock作为开发工具,以典型应用和标准协议为示例,向您介绍如何进行各种网络应用程序的设计,不仅实现了客户端程序,也实现了服务器程序。用尽量简洁的代码揭示这些应用程序的本质,对WinSock的不同特性做了详细的分析。
选择的主要协议有:Echo、Ping、Traceroute、Daytime、Bootp、MSG、SNTP、Finger、HTTP、FTP等,这些协议曾伴随过一代程序员努力探索的时光,今天又像老朋友一样一个个地从远方向你走来。它们有的已经隐藏了踪迹,成了一段尘封的历史;有的引入新的机制,通过版本更新,仍被广泛使用。无论如何,了解它们的设计原理、工作流程、通信机制能让你对WinSock网络程序设计有更深入的解读。学习、研究Internet中成熟的网络协议,是你技术上不断进步的基石,向上攀登的阶梯。
第1章 Echo客户/服务器程序
1.1 简介
1.2 网络结构模型
1.2.1 集中式系统
1.2.2 分布式系统
1.3 Echo客户程序
1.4 Echo服务器程序
1.6 小结
1.6 术语对照
第2章 TCP/IP体系结构
2.1 术语
2.2 历史
2.3 模型
2.3.1 网络接口层
2.3.2 网络层
2.3.3 传输层
2.3.4 应用层
2.4 架构
2.5 数据的长征
2.5.1 数据封装
2.5.2 数据分用
2.6 标准化
2.6.1 互联网标准
2.6.2 当前最好的实践
2.6.3 非标准跟踪规范
2.6.4 标准化过程
2.7 小结
2.8 术语对照
第3章 互联网协议——IP
3.1 简介
3.2 设计思想
3.3 操作模型
3.4 主要功能
3.5 数据报格式
3.6 校验和程序
3.7 实际数据
3.8 小结
第4章 用户数据报协议——UDP
4.1 简介
4.2 主要功能
4.3 数据报格式
4.4 校验和
4.5 主要应用
4.5.1 多播或广播通信
4.5.2 简短的请求/应答交换
4.5.3 效率高于可靠性的应用
4.5.4 轻量级通信协议
4.6 实际数据
4.7 小结
4.8 术语对照
第5章 传输控制协议——TCP
5.1 简介
5.2 历史和标准
5.3 主要功能
5.3.1 数据封装和传输
5.3.2 可靠性
5.3.3 流量控制
5.3.4 拥塞避免
5.3.5 多路复用
5.3.6 连接管理
5.4 数据格式
5.4.1 源端口和目的端口
5.4.2 序号
5.4.3 确认号
5.4.4 数据偏移
5.4.5 控制位
5.4.6 窗口
5.4.7 校验和
5.4.8 紧急指针
5.4.9 选项
5.5 实际数据
5.6 小结
5.7 术语对照
第6章 TCP连接管理
6.1 简介
6.2 TCP有限状态机
6.3 建立连接
6.3.1 连接目的
6.3.2 三次握手
6.3.3 同时打开
6.4 关闭连接
6.4.1 正常关闭
6.4.2 同时关闭
6.5 初始序号选择
6.6 TIME-WAIT状态
6.7 平静时间
6.8 小结
6.9 术语对照
第7章 ICMP协议
7.1 简介
7.2 报文的类型
7.3 Echo请求和应答
7.4 目的不可达
7.5 源抑制
7.6 重定向
7.7 路由通告与请求
7.7.1 路由器行为
7.7.2 主机行为
7.8 超时
7.9 参数问题
7.10 时间戳请求和应答
7.11 地址掩码请求和应答
7.12 实际数据
7.13 小结
第8章 多播
8.1 简介
8.2 报文格式
8.2.1 查询报文
8.2.2 报告报文
8.3 协议实现
8.3.1 加入主机组
8.3.2 成员关系查询
8.3.3 成员关系报告
8.4 状态转换
8.5 支持多播的级别
8.6 多播地址
8.7 多播地址映射到以太网地址
8.8 单播、广播、多播
8.9 实际数据
8.10 小结
8.11 术语对照
第9章 socket基本概念
9.1 基本概念
9.1.1 协议簇和地址簇
9.1.2 端口
9.1.3 地址
9.2 socket历史
9.3 WinSock简介
9.4 WinSock与Berkeley socket
的区别
9.4.1 头文件和库文件
9.4.2 开始和退出
9.4.3 句柄数据类型
9.4.4 错误码
9.4.5 重命名的函数
9.5 WinSock I/O模式
9.5.1 阻塞I/O
9.5.2 非阻塞I/O
9.5.3 重叠I/O
9.5.4 同步与异步
9.6 小结
第10章 网络地址
10.1 IP地址分类
10.2 子网编址
10.3 特殊IP地址
10.3.1 全“0”的解释
10.3.2 全“1”的解释
10.3.3 环回地址
10.3.4 私有IP地址
10.4 地址管理
10.5 地址耗尽的解决
10.5.1 NAT
10.5.2 IPv6
10.6 地址映射
10.7 ARP的封装
10.8 ARP分组格式
10.9 实际数据
10.10 小结
10.11 术语对照
第11章 转换函数
11.1 数据表示约定
11.2 字节序
11.3 判断字节序程序
11.4 网络字节序
11.5 通用socket地址结构
11.6 IPv4地址结构
11.7 IP地址与ASCII间的转换
11.8 转换函数实现
11.9 小结
第12章 同步名字解析
12.1 域名系统简介
12.1.1 资源记录
12.1.2 解析器
12.1.3 名字服务器
12.2 域名系统模型
12.3 gethostbyname
12.4 gethostbyaddr
12.5 gethostname
12.6 主机查询程序
12.7 getservbyname和
getservbyport
12.8 服务查询程序
12.9 getprotobyname和getprotobynumber
12.10 协议查询程序
12.11 小结
第13章 异步名字解析
13.1 Windows程序设计
13.2 主机异步查询函数
13.3 服务和协议异步函数
13.4 WSACancelAsyncRequest
13.5 域名查询程序
13.6 其他查询程序
13.7 小结
第14章 UDP程序设计
14.1 简介
14.2 socket
14.3 bind
14.4 测试bind程序
14.5 sendto
14.6 recvfrom
14.7 closesocket
14.8 Daytime客户端程序
14.9 Daytime服务器程序
14.10 小结
第15章 TCP套接口函数
15.1 简介
15.2 connect
15.3 listen
15.4 accept
15.5 send
15.6 recv
15.7 shutdown
15.8 getpeername
15.9 getsockname
15.10 小结
第16章 Web客户/服务器程序
16.1 简介
16.2 Web的组成
16.3 HTML
16.4 HTTP历史
16.5 HTTP通信模型
16.6 HTTP消息格式
16.7 HTTP方法
16.8 HTTP状态码
16.9 HTTP示例
16.10 HTTP服务器程序
16.11 HTTP客户端程序
16.12 小结
16.13 术语对照
第17章 独家秘籍——原始套接口
17.1 你从哪里来
17.2 编程接口
17.3 输出处理
17.4 输入处理
17.5 原始套接口的限制
17.6 Ping程序
17.7 术语对照
第18章 Traceroute程序实现
18.1 简介
18.2 文件组织
18.3 TraceRoute.h文件
18.4 TraceRoute.c文件
18.5 小结
第19章 I/O多路复用——select函数
19.1 简介
19.2 select函数
19.3 MSP原理
19.4 MSP服务器
19.5 MSP客户端
19.6 小结
第20章 套接口选项
……