上篇 TCP/IP 2
第1章 TCP/IP概述 2
1.1 TCP/IP的产生与发展 2
1.1.1 TCP/IP的产生 2
1.1.2 TCP/IP的发展与应用 4
1.2 TCP/IP的体系结构 4
1.2.1 TCP/IP的分层体系结构与协议栈的概念 4
1.2.2网络接口层 5
1.2.3网际层 6
1.2.4传输层 6
1.2.5应用层 7
1.3 TCP/IP的工作原理 7
1.3.1使用TCP/IP的Internet网络结构 7
1.3.2 TCP/IP通信模型 8
1.3.3 TCP/IP中数据的封装与解封过程 10
1.3.4 TCP/IP的操作系统边界与地址边界 12
1.4 ISO/OSI与TCP/IP的关系 13
1.4.1 ISO/OSI网络体系结构概述 13
1.4.2 ISO/OSI与TCP/IP的对应关系分析 15
1.5与TCP/IP有关的组织与管理机构 16
1.5.1网络协议的国际标准化组织 17
1.5.2 Internet的管理机构 17
1.5.3 RFC文档 19
小结 20
习题 20
第2章 网络接口层 22
2.1物理层 22
2.1.1数据传输介质 22
2.1.2数据传输方式 24
2.1.3数据编码技术 28
2.1.4信道复用技术 30
2.2数据链路层 32
2.2.1数据链路层的概念 32
2.2.2数据链路的流量控制机制 33
2.2.3差错控制 33
2.2.4点到点协议 35
2.3局域网技术 36
2.3.1局域网的组成 36
2.3.2IEEE 802局域网技术 37
2.3.3以太网技术 38
2.3.4 VLAN 39
小结 40
习题 40
第3章 互联网络层 41
3.1网络层的互联技术 41
3.1.1网络互联概述 41
3.1.2路由器 42
3.1.3面向连接的互联技术 43
3.1.4无连接的互联技术 43
3.1.5 IP互联原理 43
3.2IP 44
3.2.1 IP概述 44
3.2.2 IP数据报格式 45
3.2.3 IP数据报的分片与重组 48
3.2.4 IP数据报选项 50
3.3 IP地址 52
3.3.1 IP地址的表示格式 53
3.3.2 IP地址的分类 53
3.3.3子网的划分 54
3.3.4特殊IP地址 56
3.4 Internet控制报文协议 57
3.4.1 ICMP报文的封装与格式 57
3.4.2 ICMP差错报文 59
3.4.3 ICMP控制报文 60
3.4.4 ICMP请求与应答报文 61
3.5 IP数据报路由选择与路由协议 63
3.5.1路由表 63
3.5.2路由选择算法 64
3.5.3路由表的建立与刷新 65
3.5.4路由选择协议 66
3.6地址转换协议 67
3.6.1 ARP 68
3.6.2 RARP 69
3.7 IPv6 70
3.7.1 IPv6产生的背景 70
3.7.2 IPv6的新特征 71
3.7.3 IPv6数据报格式 72
3.7.4 IPv6地址 72
小结 74
习题 74
第4章 传输层 76
4.1传输层的通信与端口 76
4.1.1点到点通信与端到端通信 76
4.1.2端口的概念与功能 77
4.1.3常用的端口 78
4.2用户数据报协议 79
4.2.1 UDP概述 79
4.2.2伪首部与校验和 80
4.3传输控制协议 81
4.3.1 TCP报文段格式 81
4.3.2 TCP连接的建立与关闭 85
4.3.3 TCP的流量控制和拥塞控制机制 86
4.3.4 TCP的超时重发机制 89
4.4 TCP与UDP的比较 89
小结 90
习题 90
第5章 应用层 92
5.1网络工作模式 92
5.1.1 C/S模式 92
5.1.2 B/S模式 93
5.1.3 B/S模式与C/S模式的比较 95
5.2域名系统 96
5.2.1域名和域名系统 97
5.2.2域名服务器 99
5.2.3域名解析实例 99
5.3远程登录协议 100
5.3.1远程登录概述 100
5.3.2 Telnet的工作原理 101
5.3.3网络虚拟终端的概念 102
5.3.4 Telnet选项协商 104
5.3.5 Telnet协议选项协商实例 105
5.4电子邮件原理及其协议 108
5.4.1 TCP/IP下E-mail的工作原理 108
5.4.2 SMTP原理与工作实例 110
5.4.3 POP3协议原理与工作实例 112
5.4.4电子邮件报文的格式与实例 115
5.4.5多用途因特网邮件扩展 115
5.5超文本传输协议 117
5.5.1万维网的工作过程 117
5.5.2超文本传输协议与应用实例 118
5.6文件传输协议 121
5.6.1 FTP简介 121
5.6.2 FTP支持的文件类型和文件结构 122
5.6.3 FTP的工作原理 123
5.6.4 FTP命令和应答 124
5.6.5 FTP工作实例 127
小结 128
习题 128
第6章 TCP/IP的实现 130
6.1 Windows的TCP/IP实现 130
6.1.1 Windows TCP/IP提供的功能与服务 130
6.1.2 Windows TCP/IP体系结构 131
6.1.3网络接口层 132
6.1.4网际层 133
6.1.5传输控制协议 136
6.1.6用户数据报协议 137
6.2 UNIX/Linux的TCP/IP实现 137
6.2.1 Linux TCP/IP网络协议栈 137
6.2.2 Linux网络数据处理流程 138
6.2.3 Linux的IP路由 139
6.3 TCP/IP协议代码 140
6.3.1 TCP/IP报文时序模型 140
6.3.2报文代码及其分析 142
小结 146
习题 146
下篇 网络编程技术 148
第7章 网络程序设计入门 148
7.1有关网络程序设计的一些概念 148
7.1.1网络应用软件 148
7.1.2网络中两个通信程序如何相互识别对方 148
7.1.3 Windows Sockets介绍 149
7.1.4套接口的概念 150
7.1.5套接口编程原理 151
7.1.6网络字节顺序 153
7.2网络程序工作模型 153
7.2.1网络程序要考虑的几个问题 153
7.2.2网络程序工作模型 155
7.3一个简单的客户机/服务器程序 156
7.3.1程序要求 156
7.3.2服务器程序 156
7.3.3客户端程序 159
7.3.4实例运行结果 160
7.4 Winsock中建立连接的函数及其应用 161
7.4.1加载协议栈(WSAStartup) 161
7.4.2创建套接口(socket或WSASocket) 163
7.4.3地址绑定(bind) 165
7.4.4服务器端监听连接(listen) 167
7.4.5客户端请求连接(connect或WSAConnect) 168
7.4.6服务器端接受连接(accept或WSAAccept) 171
7.5 Winsock中的数据传输函数及其应用 172
7.5.1有连接的数据发送(send或WSASend) 173
7.5.2有连接的数据接收(recv或WSARecv) 175
7.5.3无连接的数据接收(recvfrom或WSARecvfrom) 177
7.5.4无连接数据发送(sendto或WSASendTo) 179
7.6 Winsock中网络连接与套接口的关闭函数及其应用 181
7.6.1关闭读写通道 181
7.6.2关闭套接口 182
7.6.3终止使用Winsock 182
小结 183
习题 183
第8章 TCP程序设计 184
8.1 TCP网络程序设计模型 184
8.1.1服务器端工作流程 184
8.1.2客户端工作流程 185
8.1.3服务器与客户机通信过程 186
8.1.4基于TCP的网络程序框架 186
8.2 TCP实例程序1 187
8.2.1实例程序说明 187
8.2.2服务器程序 188
8.2.3客户端程序 190
8.3 TCP实例程序2 191
8.3.1程序要求 191
8.3.2服务器程序 192
8.3.3客户端程序 195
小结 198
习题 198
第9章 UDP程序设计 200
9.1 UDP网络程序设计模型 200
9.1.1 UDP程序工作流程 200
9.1.2程序框架 201
9.2 UDP实例程序1 202
9.2.1实例程序说明 202
9.2.2服务器程序 203
9.2.3客户端程序 205
9.3 UDP实例程序2 207
9.3.1程序要求 208
9.3.2服务器程序 208
9.3.3客户端程序 212
小结 215
习题 215
第10章 Winsock程序综合实例 216
10.1使用MFC类库设计网络程序 216
10.1.1 MFC类库简介 216
10.1.2 MFC中与网络程序设计有关的类 217
10.1.3 MFC中的Windows套接口类 218
10.1.4客户端程序实例 224
10.1.5服务器端程序实例 228
10.2使用WinInet设计客户端程序 230
10.2.1 WinInet程序设计知识 230
10.2.2实例程序说明 249
10.2.3创建应用程序操作界面 249
10.2.4应用程序代码及其说明 251
10.3使用原始套接口设计网络程序 258
10.3.1原始套接口程序设计简介 259
10.3.2实例说明 259
小结 266
习题 266
第11章 Winsock主要函数及其用法 268
11.1数据格式转换函数 268
11.1.1 htonl()和WSAHtonl() 268
11.1.2 htons()和WSAHtons() 269
11.1.3 ntohl()和WSANtohl() 270
11.1.4 ntohs()和WSANtohs() 270
11.2 IP地址转换函数及其应用 271
11.2.1 inet addr() 271
11.2.2 inet ntoa() 272
11.3网络信息获取函数及其应用 272
11.3.1获得主机名——gethostname() 272
11.3.2获得与套接口相连的远程协议地址——getpeername() 273
11.3.3获得套接口本地协议地址——getsockname() 274
11.3.4根据主机名取得主机信息——gethostbyname()和WSAAsyncGetHostByName() 274
11.3.5根据主机地址取得主机信息——gethostbyaddr()和WSAAsyncGetHostByAddr() 277
11.3.6根据协议名取得主机协议信息——getprotobyname()和WSAAsyncGetProtoByName() 277
11.3.7根据协议号取得主机协议信息——getprotobynumber()和WSAAsyncGetProtoByNumber() 278
11.3.8根据服务名取得相关服务信息——getservbyname()和WSAAsyncGetServByName() 279
11.3.9根据端口号取得相关服务信息——getservbyport()和WSAAsyncGetServByPort() 280
11.3.10网络信息获取函数应用实例 280
11.4套接口选项函数及其应用 282
11.4.1套接口选项函数说明 282
11.4.2 SOL SOCKET选项级别 284
11.4.3 IPPROTO IP选项级别 288
11.4.4 IPPROTO TCP选项级别 290
11.4.5套接口属性设置和获取实例 291
11.5套接口I/O处理函数及其应用 293
11.5.1阻塞与非阻塞通信方式 293
11.5.2设置套接口的工作方式——ioctlsocket()和WSAIoctl() 294
11.5.3套接口I/O状态查询——select() 296
11.5.4异步事件通知——WSAAsyncSelect() 298
11.5.5取消正在执行的阻塞调用——WSACanceiBlockingCall() 301
11.5.6判断是否有阻塞调用——WSAIsBlocking() 302
11.5.7取消未完成的一个异步操作——WSACancelAsyncRequest() 302
11.6事件对象I/O管理及其应用 302
11.6.1创建事件对象——WSACreateEvent() 303
11.6.2网络事件注册——WSAEventSelect() 303
11.6.3事件对象状态复位——WSAResetEvent() 304
11.6.4事件对象状态置位——WSASetEvent() 304
11.6.5关闭事件对象——WSACloseEvent() 304
11.6.6等待事件对象——WSAWaitForMultipleEvents() 305
11.6.7网络事件查询——WSAEnumNetworkEvents() 306
11.6.8事件对象I/O管理程序实例 307
11.7错误处理函数 308
11.7.1获得错误操作代码——WSAGetLastError() 308
11.7.2设置错误操作代码——WSASetLastError() 309
11.8 Winsock2支持的其他函数 309
11.8.1共享套接口——WSADuplicateSocket() 309
11.8.2获取传送协议信息——WSAEnumProtocols() 310
11.8.3初始化服务质量——WSAGetQOSByName() 311
11.8.4返回重叠操作结果——WSAGetOverlappedResult() 312
11.8.5叶节点加入多点会话——WSAJoinLeaf() 313
11.8.6终止套接口上的数据接收——WSARecvDisconnect() 314
11.8.7终止套接口上的数据发送——WSASendDisconnect() 314
小结 315
习题 315
参考文献 316