网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...

图书简介

本书以Linux网络套接字编程和网络分层协议的设计与程序实现为主题,详细介绍如何在Linux平台下进行套接字程序设计,并给出了一个基于分层协议的应用实例,用于模拟Linux网络协议栈中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和setsockopt75

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/O90

5.3.1 非阻塞I/O模型90

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

5.3.3 非阻塞模式下的read和write92

5.3.4 非阻塞模式下的connect92

5.3.5 非阻塞模式下的accept93

5.4 信号驱动I/O94

5.4.1 信号驱动I/O模型94

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

5.4.3 信号驱动I/O示例95

5.5 事件I/O100

5.5.1 创建epoll上下文环境epoll_create101

5.5.2 epoll设置epoll_ctl101

5.5.3 等待事件发生epoll_wait103

5.5.4 epoll程序示例104

5.5.5 边沿触发ET和水平触发LT109

5.6 原始套接字110

5.6.1 创建原始套接字111

5.6.2 原始套接字数据发送111

5.6.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

图书评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值