《TCP/IP 协议与网络编程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:任泰明编著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2004
  • ISBN:7560613608
  • 页数:314 页
图书介绍:本书讲述TCP/IP协议网络编程所需的有关知识。

第1章 Internet与TCP/IP协议 1

1.1 Internet 中的“世界语”——TCP/IP协议 1

1.1.1 Internet——“冷战”的产物 1

1.1.2 网络互联促成了TCP/IP协议的产生 2

1.2 TCP/IP协议的体系结构 4

1.2.1 网络体系结构的概念 4

1.2.2 TCP/IP协议的四个层次 4

和地址边界 5

1.2.3 TCP/IP协议模型中的操作系统边界 5

1.3 TCP/IP协议的工作过程 6

1.3.1 TCP/IP协议通信模型 6

1.3.2 数据的封装与传递过程 7

本章小结 9

习题 9

第2章 IP协议 10

2.1 IP协议如何进行网络互联 10

2.1.1网络互联方式 10

2.1.3 IP协议的地位与IP互联网的特点 12

2.1.2 IP互联网原理 12

2.2 IP地址 13

2.2.1 IP地址的结构 13

2.2.2 IP地址的表示格式 13

2.2.3 IP地址的分类 14

2.2.4 一些有特殊用途的IP地址 15

2.2.5 子网与子网掩码 16

2.3 IP数据报格式 18

2.3.1 IP数据报各字段的功能 18

2.3.2 IP数据报分片与重组 21

2.3.3 IP数据报选项 23

2.4 Internet控制报文协议(ICMP) 26

2.4.1 ICMP报文的封装与格式 26

2.4.2 ICMP差错报文 28

2.4.3 ICMP控制报文 29

2.4.4 ICMP请求与应答报文 31

2.5 地址解析 32

2.5.1 ARP协议 33

2.6.1 路由表 35

2.5.2 RARP协议 35

2.6 IP数据报的路由选择 35

2.6.2 路由选择算法 37

2.6.3 路由表的建立与刷新 37

2.6.4 路由选择协议 38

本章小结 40

习题 40

3.1 端到端通信和端口号 41

3.1.1 端到端通信 41

第3章 传输层协议UDP和TCP 41

3.1.2 传输层端口的概念 42

3.2 用户数据报协议UDP 44

3.2.1 UDP数据报的封装及其格式 44

3.2.2 UDP校验和的计算方法 45

3.2.3 UDP协议的特点 45

3.3 传输控制协议TCP 46

3.3.1 TCP报文段格式 46

3.3.2 TCP连接的建立与关闭 50

3.3.3 TCP的流量控制和拥塞控制机制 51

3.3.4 TCP的超时重发机制 54

3.4 TCP与UDP的比较 55

本章小结 55

习题 56

第4章 TCP/IP应用层常用协议 57

4.1 Telnet协议 57

4.1.1 远程登录 57

4.1.2 Telnet的工作原理 58

4.1.3 网络虚拟终端(NVT)的概念 59

4.1.4 Telnet协议选项协商 61

4.1.5 Telnet协议选项协商实例 64

4.2 文件传输协议FTP 66

4.2.1 FTP简介 66

4.2.2 FTP支持的文件类型和文件结构 66

4.2.3 FTP的工作原理 67

4.2.4 FTP命令和应答 69

4.2.5 FTP工作实例 72

4.3.1 TCP/IP协议下E-mail的工作原理 73

4.3 电子邮件的工作原理及其协议 73

4.3.2 SMTP协议原理与工作实例 75

4.3.3 POP3协议原理与工作实例 78

4.3.4 电子邮件报文的格式与实例 80

4.3.5 多用途因特网邮件扩展MIME 81

4.4 文本传输协议HTTP 82

4.4.1 万维网的工作过程 83

4.4.2 超文本传输协议HTTP与应用实例 83

本章小结 86

习题 87

第5章 TCP/IP协议代码实例分析 88

5.1 TCP/IP报文时序模型 88

5.2 报文代码及其分析 90

习题 93

第6章 网络程序设计基本知识 94

6.1 网络应用程序的概念 94

6.1.1 什么是网络应用程序 94

6.1.2 网络应用程序的标识问题 94

6.1.3 客户/服务器模型 95

6.2 TCP/IP应用程序工作模型与 97

网络编程接口 97

6.2.1 TCP/IP应用程序工作模型 97

6.2.2 Windows Sockets简介 98

6.2.3 Windows Sockets规范的目标及 99

几个相关的概念 99

6.3 套接口的概念及其编程原理 99

6.3.1 套接口(Socket) 99

6.3.2 套接口的分类 100

6.3.3 套接口编程原理 101

6.3.4 Winsock套接口编程时对错误的 102

处理机制 102

6.3.5 网络字节顺序 102

6.4 Winsock API基本函数——套接口与 103

连接的建立 103

6.4.1 打开Winsock WSAStartup() 103

6.4.2 创建套接口——socket()或 105

WSASocket() 105

6.4.3 指定本地地址——bind() 108

6.4.4 监听连接——listen() 110

6.4.5 请求连接—connect()或 111

WSAConnect() 111

6.4.6 接受连接—accept()或 114

WSAAccept() 114

6.5.1 带外数据的概念 116

6.5.2 在已建立连接的套接口上发送数据——send()或WSASend() 116

6.5.2 在已建立连接的套接口上发送数据——send()或WSASend() 116

6.5.1 带外数据的概念 116

6.5 Winsock API基本函数——数据传输 116

6.5.3 在已建立连接的套接口上接收数据——reev()或WSARecv() 118

6.5.3 在已建立连接的套接口上接收数据——reev()或WSARecv() 118

6.5.4 在无连接的套接口上接收数据——recvfrom()或WSARecvFrom() 121

6.5.4 在无连接的套接口上接收数据——recvfrom()或WSARecvFrom() 121

6.5.5在无连接的套接口上发送数据——sendto()或WSASendTo() 123

6.6 Winsock API基本函数——连接与 125

套接口的关闭 125

6.6.1 关闭读写通道——shutdown() 125

6.6.2 关闭套接口——closesocket() 126

6.6.2 关闭套接口——closesocket() 126

6.6.3 终止使用Winsock——WSACleanup() 127

本章小结 128

习题 128

第7章 TcP/IP网络程序框架与实例 129

7.1 网络应用程序的基本工作流程 129

7.1.1 面向连接的客户/服务器程序 129

工作流程 129

工作流程 132

7.1.2 无连接的客户/服务器程序 132

7.2 基于TCP的客户/服务器通信程序 134

实例 134

7.2.1 实例程序说明 134

7.2.2 服务器端程序 134

7.2.3 客户端程序 137

7.2.4 程序执行结果 138

7.3 基于UDP的客户与服务器通信程序 139

实例 139

7.3.2 服务器端程序 140

7.3.1 实例程序说明 140

7.3.3 客户端程序 143

7.3.4 程序执行结果 145

本章小结 146

习题 147

第8章 Winsock API 148

8.1 字节排序函数 148

8.1.1 4字节主机字节顺序的数转化为 148

网络字节顺序——htonl()和 148

WSAHtonl() 148

8.1.2 2字节主机字节顺序的数转化为 149

网络字节顺序—htons()和 149

WSAHtons() 149

8.1.3 4字节网络字节顺序的数转化为 150

主机字节顺序——ntohl()和 150

WSANtohI() 150

主机字节顺序——ntohs()和 151

WSANtohs() 151

8.1.4 2字节网络字节顺序的数转化为 151

8.2 IP地址转换函数 152

8.2 IP地址转换函数 152

为网络字节顺序的IP地址 152

8.2.1 点分十进制数表示的IP地址转换——inet_addr() 152

8.2.1 点分十进制数表示的IP地址转换——inet_addr() 152

8.3.1 获得主机名——gethostname() 153

8.3.1 获得主机名——gethostname() 153

8.3 网络信息获取函数(数据库函数) 153

8.2.2 网络字节顺序的IP地址转换为——inet_ntoa() 153

点分十进制数表示的IP地址 153

8.3.2 获得与套接口相连的远程协议地址——getpeemame() 154

8.3.2 获得与套接口相连的远程协议地址——getpeemame() 154

8.3.3 获得套接口本地协议地址——getsockname() 155

8.3.4 根据主机名取得主机信息 156

gethostbyname()或 156

WSAAsyncGetHostByName() 156

——getprotobyname()或 159

8.3.6 根据协议名取得主机协议信息 159

WSAAsyncGetProtoByName() 159

8.3.5 根据主机地址取得主机信息 159

WSAAsyncGetHostByAddr() 159

——gethostbyaddr()或 159

8.3.7 根据协议号取得主机协议信息 160

——getprotobynumber()或 160

WSAAsyncGetProtoByNumber() 160

8.3.8 根据服务名取得相关服务信息 161

——getservbyname()或 161

WSAAsyncGetServByName() 161

8.3.9 根据端口号取得相关服务信息 162

——getservbyport()或 162

WSAAsyncGetServByPort () 162

8.3.10 网络信息获取函数应用实例 163

8.4 套接口选项函数 165

8.4.1 套接口选项函数说明 165

8.4.2 SOL_SOCKET选项级别 167

8.4.3 IPPROTO_IP选项级别 172

8.4.4 IPPROTO_TCP选项级别 174

8.4.5 套接口属性设置和获取实例 175

8.5 套接口I/O处理函数 177

8.5.1 阻塞与非阻塞通信方式 177

8.5.1 阻塞与非阻塞通信方式 177

8.5.2 设置套接口的工作方式——ioctlsocket()和WSAIoctl() 178

8.5.3 套接口I/O状态查询——select() 181

8.5.3 套接口I/O状态查询——select() 181

8.5.4 异步事件通知——WSAAsyncSelect() 184

8.5.4 异步事件通知——WSAAsyncSelect() 184

8.5.5 取消正在执行的阻塞调用—WSACancelBlockingCall() 187

8.5.5 取消正在执行的阻塞调用—WSACancelBlockingCall() 187

8.5.6 判断是否有阻塞调用——WSAIsBlocking() 188

8.5.6 判断是否有阻塞调用——WSAIsBlocking() 188

8.5.7 取消未完成的一个异步操作——WSACancelAsyncRequest () 188

8.6.2 网络事件注册——WSAEventSelect() 189

8.6.1 创建事件对象——WSACreatEvent() 189

8.6.2 网络事件注册——WSAEventSelect() 189

8.6 事件对象I/O管理 189

8.6 事件对象I/O管理 189

8.6.1 创建事件对象——WSACreatEvent() 189

8.6.3 事件对象状态复位——WSAResetEvent() 190

8.6.3 事件对象状态复位——WSAResetEvent() 190

8.6.5 关闭事件对象——WSACloseEvent() 191

8.6.6 等待事件对象——WSAWaitForMultipleEvents() 191

8.6.6 等待事件对象——WSAWaitForMultipleEvents() 191

8.6.5 关闭事件对象——WSACloseEvent() 191

8.6.4 事件对象状态置位——WSASetEvent() 191

8.6.4 事件对象状态置位——WSASetEvent() 191

8.6.7 网络事件查询——WSAEnumNetworkEvents() 193

8.6.8 事件对象I/O管理程序实例 194

8.7 错误处理函数 196

8.7 错误处理函数 196

8.7.1 获得错误操作代码——WSAGetLastError() 196

8.7.1 获得错误操作代码——WSAGetLastError() 196

8.7.2 设置错误操作代码——WSASetLastError() 196

8.8.1 共享套接口——WSADuplicateSocket() 197

8.8.1 共享套接口——WSADuplicateSocket() 197

8.8 Winsock 2支持的其他函数 197

8.8 Winsock 2支持的其他函数 197

8.8.2 获取传送协议信息——WSAEnumProtocols() 198

8.8.2 获取传送协议信息——WSAEnumProtocols() 198

8.8.3 初始化服务质量——WSAGetQOSByName() 199

8.8.3 初始化服务质量——WSAGetQOSByName() 199

8.8.4 返回重叠操作结果——WSAGetOverlappedResult() 200

8.8.4 返回重叠操作结果——WSAGetOverlappedResult() 200

8.8.5 叶结点加入多点会话——WSAJoinLeaf() 201

8.8.5 叶结点加入多点会话——WSAJoinLeaf() 201

8.8.6 终止套接口上的数据接收——WSARecvDisconnect() 202

8.8.6 终止套接口上的数据接收——WSARecvDisconnect() 202

8.8.7 终止套接口上的数据发送——WSASendDisconnect() 203

本章小结 204

习题 205

第9章 高级网络编程API 206

9.1 MFC提供的Winsock类 206

9.1.1 CAsyncSocket类 206

9.1.2 CSocket类 213

9.2 信报API(MAPI) 215

9.2.1 MAPI的结构 215

9.2.2 MFC对MAPI的支持 216

9.2.3 MAPI的高级应用 218

9.2.4 通用信报调用CMC 219

9.3 WinInet APl 234

9.3.1 Winlnet概述 234

9.3.2 基本Winlnet函数 236

9.3.3 FTP客户机Winlnet函数 245

9.3.4 HTTP客户机Winlnet函数 249

9.3.5 MFC Winlnet类及其应用方法 254

9.4 其他网络程序设计API 258

9.4.1 ISAPI简介 258

9.4.2 TAPI简介 260

本章小结 261

习题 261

10.1.1 程序源代码 263

实例 263

10.1 使用Winsock API设计网络程序的 263

第10章 网络程序设计实例 263

10.1.2 程序运行结果 269

10.2 使用MFC类库进行网络程序设计的 270

实例 270

10.2.1 创建客户端程序 271

10.2.2 创建服务器端程序 276

10.3.2 建立应用程序的用户操作界面 278

10.3.1 应用程序说明 278

实例 278

10.3 基于Winlnet API的客户程序编写 278

10.3.3 应用程序代码及其说明 280

10.4 原始套接口(SOCK_RAW)程序设计 292

实例 292

10.4.1 原始套接口简介 292

10.4.2 原始套接口程序设计实例 293

10.5 广播通信与组播通信程序设计实例 300

10.5.1 广播通信程序设计 301

10.5.2 组播通信程序设计 305

习题 314