Linux/UNIX 网络编程 (21世纪高等院校计算机科学规划教材)
分類: 图书,计算机/网络,操作系统/系统开发,LINUX ,
作者: 甘刚主编
出 版 社: 水利水电出版社
出版时间: 2008-7-1字数: 378000版次: 1页数: 235印刷时间: 2008/07/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787508454672包装: 平装编辑推荐
丛书特点:
培养学生实际动手能力,加大了实战检验的比重。
教材体系合理,展现了高校计算机教育教学改革的最新科研成果。
采用“案例引导,任务驱动”的编写方式,便于激发学习兴趣。
教学资源丰富,提供电子教案和程序源代码。
内容简介
本书详细介绍了在UNIX/Linux系统下基于TCP/IP网络套接口的基本编程方法,包括迭代与并发服务器编写方法、进程与线程编程技术、I/O编程技术、IPv4与IPv6的兼容性、原始套接口、数据链路访问技术、广播与多播技术等。为满足教学实际需要,在本书最后一章给出了Socket基本编程、服务器与单客户的连接处理、多进程服务器模板、多线程编写模板和线程专用数据TSD实现模板5个实验指导。在本书编写过程中,编者参阅了国内外同类书籍及各类报刊杂志,将精华思想应用到教学实践中,形成的教学成果与体会反映在书中。在书中相关章节,编者都至少列举一个完整的例子来说明问题,学习者将书中的基础实验做好,再通过相关章节中的实验进行验证,就可以学习高级Linux/UNIX编程了。
本书在编写上力求由简到繁、由浅入深和循序渐进,读者不但可以学会程序设计的基本知识、设计思想和方法,还可以学会网络程序设计的通用方法与步骤。本书适合作为高等院校计算机及相关专业的教材,也可作为广大计算机爱好者、网络研究人员和网络程序开发人员的自学参考书。
目录
序
前言
第1章 TCP/IP简介
1.1 概述
1.1.1 基本的C/S服务模型
1.1.2 OSI模型和TCP/IP四层结构
1.2 IP协议介绍
1.2.1 IP数据报的格式
1.2.2 IP地址
1.2.3 子网掩码(subnet mask)
1.3 TCP协议介绍
1.3.1 TcP连接的建立与终止
1.3.2 TcP状态转换图
1.4 UDP协议
1.5 端口号
1.6 本章小结
1.7 实战检验
理论巩固
第2章 套接字编程简介
2.1 套接字基础
2.2 套接字的类型
2.3 套接字地址结构
2.3.1 IPv4套接字地址结构
2.3.2 IPv6套接字地址结构
2.3.3 两种套接字地址结构的比较
2.3.4 通用套接字地址结构
2.4 套接字基本函数
2.4.1 字节排序函数
2.4.2 字节操纵函数
2.4.3 IP地址转换函数
2.4.4 isfdtype()函数
2.5 值结果参数
2.6 本章小结
2.7 实战检验
理论巩固
上机实战
第3章 基本TCP套接字编程
3.1 TCP套接字编程
3.1.1 socket()1函数
3.1.2 connect()函数
3.1.3 bind()函数
3.1.4 listen()函数
3.1.5 accept()函数
3.1.6 数据传输函数
3.1.7 close()函数
3.2 TCP套接字编程实例
3.3 服务器的3种异常情况
3.3.1 服务器主机崩溃
3.3.2 服务器主机崩溃后重启
3.3.3 服务器主机关闭
3.4 本章小结
3.5 实战检验
理论巩固
上机实战
第4章 基本UDP套接口编程
4.1 UDP套接字编程
4.1.1 recvfrom()函数
4.1.2 sendto函数
4.2 UDP套接字编程实例
4.3 UDP中对数据报的各项处理
4.3.1 数据报的丢失
4.3.2 验证收到的响应
4.3.3 服务器进程未运行
4.4 connect函数用于UDP
4.5 本章小结
4.6 实战检验
理论巩固
上机实战
第5章 并发服务器
5.1 服务器的分类
5.2 多进程并发服务器
5.2.1 进程基础
5.2.2 进程创建
5.2.3 进程终止
5.2.4 多进程并发服务器
5.2.5 多进程并发服务器实例
5.3 多线程服务器
5.3.1 线程基础
5.3.2 线程基础函数
5.3.3 给新线程传递参数
5.3.4 多线程并发服务器实例
5.3.5 线程安全函数
5.3.6 线程安全实例
5.3.7 用函数参变量实现线程安全性
5.4 本章小结
5.5 实战检验
理论巩固
上机实战
第6章名宇与地址转换编程
6.1 概述
6.2 域名系统
6.3 gethostbyname()函数
6.4 RES USE INET6解析器选项
6.5 gethostbyname2函数对IPv6的支持
6.6 gethostbyaddr()函数
6.7 uname()函数
6.8 gethostname函数
6.9 getservbyname和getservbyport函数
6.10 getaddrinfo、gai strerror和host—serv函数
6.11 freeaddrinfo函数
6.12 使用getaddrinfo的TCP和UDP
6.13 gemameinfo函数
6.14 gethostbyaddr实例
6.15 本章小结
6.16 实战检验
理论巩固
上机实战
第7章 IPv4和IPv6编程
7.1 IPv4客户与IPv6服务器
7.2 IPv6客户与IPv4服务器
7.3 IPv6 ADDRFORM套接口选项
7.4 IPv6地址测试宏
7.5 源代码的可移植性
7.6 本章小结
7.7 实战检验
理论巩固
上机实战
第8章 守护进程和inetd超级服务器
8.1 守护进程的原理
8.1.1 启动守护进程
8.1.2 输出守护进程消息
8.1.3 syslog函数
8.1.4 创建守护进程
8.1.5 以守护进程方式运行的时间服务器
8.2 inetd的工作原理
8.2.1 概念
8.2.2 工作流程
8.2.3 inetd处理并发
8.3 本章小结
8.4 实战检验
理论巩固
上机实战
第9章 I/O编程
9.1 I/O模型
9.2 select函数
9.3 shutdown函数
9.4 poll函数
9.5 使用select函数的TCP例子
9.6 高级的I/O编程
9.6.1 recv和send函数
9.6.2 recvmsg和sendmsg函数
9.7 非阻塞connect
9.8 ioctl函数
9.8.1 套接口操作
9.8.2 文件操作
9.8.3 接口配置
9.8.4 接口操作
9.8.5 ARP操作
9.8.6 路由表操作
9.9 本章小结
9.10 实战检验
理论巩固
上机实战
第10章 广播与多播编程
10.1 广播的概念
10.1.1 广播的原理
10.1.2 广播的示例
10.2 多播概念
10.2.1 多播与广播的比较
10.2.2 多播套接口选项
10.2.3 多播的实例
10.3 本章小结
10.4 理论与巩固
实战检验
上机实战
第11章 路由套接口编程
11.1 概念和数据链路套接口地址结构
11.2 sysctl操作
11.3 接口名和索引函数
11.4 本章小结
11.5 实战检验
理论与巩固
上机实战
第12章 信号量编程
12.1 信号的概念
12.2 信号的概念及常见信号介绍
12.2.1 signal函数
12.2.2 处理SIGCHLD信号
12.2.3 wait和waitpid函数
12.2.4 kill和raise函数
12.2.5 SIGPIPE信号
12.2.6 alarm和pause函数
12.2.7 sigprocmask函数
12.2.8 sigpending函数
12.2.9 sigaction函数
12.2.10 sigsecjmp和siglongjmp函数
12.2.1l sigsuspend函数
12.2.12 abort函数
12.2.13 system函数
12.2.14 sleep函数
12.3 例子:使用SIGIO的uDP回射服务器程序
12.4 本章小结
12.5 实战检验
理论巩固
上机实战
第13章 原始套接口与数据链路访问编程
13.1 原始套接口创建
13.2 原始套接口输出
13.3 原始套接口输入
13.4 原始套接字编程实例
13.4.1 实例1:拒绝服务攻击
13.4.2 实例2:ICMP包的构建、发送和接收
13.4.3 实例3:ping程序
13.5 数据链路层访问
13.5.1 BPF BSD分组过滤器
13.5.2 数据链路提供者DLPI
13.5.3 Unux的SOCK PACKET
13.5.4 分组捕获函数库libpcap
13.5.5 libpcap的库函数
13.5.6 数据链路层访问实例
13.6 本章小结
13.7 理论与巩固
实战检验
上机实战
第14章 实验指导
14.1 Socket基本编程
14.2 服务器与单客户的连接处理
14.3 多进程服务器模板
14.4 多线程编写模板
14.5 线程专用数据TSD实现模板
参考文献
书摘插图
第1章TCP/IP简介
1.1 概述
1.1.1 基本的C/S服务模型
网络编程是指编写的网络通信程序可以与网络上的其他程序进行通信。相互通信的网络程序通常可以分为两部分:客户端(Client)和服务器端(Server)。在图中给出了一个最简单的C/S服务模型。
在此模型中,客户和服务器之间采用的是一对一的关系,即客户一次只与一个服务器通信。当然一个客户同时与多个服务器进行通信,一个服务器同时与多个客户通信的情况也存在。以最常用到的使用Web浏览器浏览网页为例,IE浏览器在这里就是客户端,而远程提供信息的服务器就是服务器端,可以在5分钟内与许多不同的Web服务器通信;反之从服务器的角度来看,一台Web服务器也可以同时处理多个客户的请求。
对刚开始学习网络编程的读者来说,当第一次看到对C/S服务模型的介绍时,可能对它的理解就只是图中所描述的逻辑关系(一端享受服务,一端提供服务)而已,而并不是非常清楚用户数据和服务器的数据是怎么完成相互传递的。
……