《网络编程与分层协议设计 基于Linux平台实现》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:刘飚编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2011
  • ISBN:9787111350521
  • 页数:253 页
图书介绍:本书以Linux网络套接字编程和网络分层协议的设计与程序实现为主题,详细介绍如何在Linux平台下进行套接字程序设计,并着重以Linux网络协议栈中IP层的核心功能IP报文分段与重组为例,设计并实现一个基于分层协议的应用实例,用于模拟IP报文的分段和重组过程。本书旨在通过具有一定复杂度的应用,切实帮助读者掌握网络协议分层的设计思想和程序实现方法。此外,本书的许多程序示例直接使用了Linux的内核链表和散列链表,以及内核的其他数据结构和多线程等程序设计技巧,通过实际应用的形式有效地衔接了C语言、数据结构、操作系统、计算机网络和网络协议分析等课程的相关内容。

第1章 TCP/IP网络编程基础 1

1.1 网络和网络互联 1

1.1.1 ISO/OSI网络模型和TCP/IP协议栈 1

1.1.2 IP地址和端口 2

1.2 客户端/服务器编程模型 3

1.2.1 循环式服务器 3

1.2.2 并发式服务器 3

1.3 本章小结 4

习题 4

第2章 Linux下的C编程环境 5

2.1 进程 5

2.1.1 进程标识 5

2.1.2 创建进程 6

2.1.3 终止进程 6

2.1.4 僵死进程 7

2.1.5 子进程退出的异步善后处理 7

2.2 线程 8

2.2.1 线程标识 9

2.2.2 创建线程 9

2.2.3 终止线程 10

2.2.4 线程同步 11

2.3 信号 14

2.3.1 信号的概念 14

2.3.2 常用信号及其含义 14

2.3.3 信号集和信号掩码 15

2.3.4 信号处理 16

2.3.5 可重入函数 18

2.4 时间 20

2.4.1 时间表示 21

2.4.2 获得时间 21

2.4.3 休眠时间 22

2.4.4 间隔定时器 23

2.5 文件 24

2.6 本章小结 26

习题 26

第3章 网络编程中常用的典型知识 28

3.1 结构体大小的计算 28

3.2 数据存储与字节序 29

3.3 常用数据结构 30

3.3.1 Linux链表 30

3.3.2 Linux散列链表 33

3.4 函数指针 34

3.5 校验和 35

3.6 用户态下多定时器的实现 37

3.7 本章小结 47

习题 48

第4章 基础套接字 49

4.1 套接字基本概念 49

4.1.1 创建套接字 49

4.1.2 域和地址族 50

4.1.3 套接字地址 50

4.1.4 流式套接字和数据报套接字 51

4.1.5 使用套接字 51

4.1.6 套接字编程常用基本函数和数据类型 55

4.1.7 客户端/服务器通信方式 56

4.2 流式套接字客户端/服务器编程 57

4.3 并发流式套接字服务器编程 63

4.3.1 服务器主进程 67

4.3.2 服务器子进程 67

4.3.3 服务器子进程终止 67

4.4 数据报套接字客户端/服务器编程 67

4.5 本章小结 73

习题 73

第5章 高级套接字 75

5.1 套接字选项 75

5.1.1 getsockopt和setsockopt 75

5.1.2 套接字通用选项示例 76

5.2 I/O多路复用 78

5.2.1 I/O多路复用模型 79

5.2.2 select函数 79

5.2.3 文件描述符集合的使用 80

5.2.4 文件描述符的可读写状态 82

5.2.5 最大文件描述符个数 82

5.2.6 select函数的应用 82

5.3 非阻塞I/O 90

5.3.1 非阻塞I/O模型 90

5.3.2 fcntl函数设置非阻塞模式 91

5.3.3 非阻塞模式下的read和write 92

5.3.4 非阻塞模式下的connect 92

5.3.5 非阻塞模式下的accept 93

5.4 信号驱动I/O 94

5.4.1 信号驱动I/O模型 94

5.4.2 设置套接字工作于信号驱动I/O模式 94

5.4.3 信号驱动I/O示例 95

5.5 事件I/O 100

5.5.1 创建epoll上下文环境epoll_create 101

5.5.2 epoll设置epoll_ctl 101

5.5.3 等待事件发生epoll_wait 103

5.5.4 epoll程序示例 104

5.5.5 边沿触发ET和水平触发LT 109

5.6 原始套接字 110

5.6.1 创建原始套接字 111

5.6.2 原始套接字数据发送 111

5.5.3 原始套接字数据接收 111

5.7 本章小结 111

习题 112

第6章 网络协议 113

6.1 IP协议 113

6.1.1 IP协议格式 113

6.1.2 IP协议头的C语言定义 114

6.1.3 IP报文分段 115

6.1.4 IP报文分段重组 116

6.2 ICMP协议 118

6.2.1 ICMP消息类型 118

6.2.2 ICMP消息通用格式 118

6.2.3 ICMP查询请求和应答消息格式 118

6.2.4 ICMP消息格式的C语言定义 119

6.3 FTP协议 119

6.3.1 FTP连接管理 120

6.3.2 FTP通信过程 121

6.3.3 FTP命令处理 122

6.3.4 数据(文件)传输过程 123

6.3.5 数据传输端口 124

6.4 一个简单应用层协议示例 125

6.5 分层协议示例——IP报文分段和重组模拟 127

6.5.1 程序功能描述 128

6.5.2 分层协议栈 129

6.5.3 分层协议定义 130

6.6 本章小结 131

习题 132

第7章 ICMP协议程序设计 133

7.1 ping程序功能模块 133

7.2 回应请求和应答实例分析 133

7.3 ping程序实现 134

7.4 ping程序的编译和测试 140

7.5 本章小结 140

习题 140

第8章 FTP协议程序设计 141

8.1 FTP交互命令实例分析 141

8.2 FTP客户端程序功能模块 143

8.3 FTP客户端程序实现 144

8.4 FTP客户端程序的编译和测试 168

8.5 本章小结 169

习题 169

第9章 IP报文分段和重组模拟程序设计 170

9.1 主机工作流程 170

9.2 转发服务器工作流程 171

9.3 消息分段 172

9.4 主机程序功能模块 172

9.5 转发服务器程序功能模块 175

9.6 消息分段的错序和丢失模拟 176

9.7 关键数据结构 177

9.8 主机程序实现 180

9.9 转发服务器程序实现 220

9.10 IP报文分段和重组模拟程序的编译和运行 240

9.11 本章小结 243

习题 243

附录A C/C++源文件编辑 244

附录B C/C++源文件编译 247

附录C C/C++源文件调试 250

参考文献 253