Linux网络编程入门:历史、模型与进程管理

5星 · 超过95%的资源 需积分: 9 119 下载量 185 浏览量 更新于2024-08-02 1 收藏 3.25MB PDF 举报
《Linux网络编程》是一本深入探讨Linux网络编程技术的入门书籍,它从网络基础知识开始,逐步引导读者理解操作系统、互联网体系结构以及客户/服务器模型。全书分为多个章节,旨在帮助读者掌握Linux环境下的网络编程实践。 在第一章,作者首先回顾了网络的历史,介绍了OSI模型,它将通信过程划分为七层,从物理层到应用层,为理解网络编程提供了理论框架。随后,作者介绍了Internet体系模型,即TCP/IP协议栈,这是现代网络通信的基础。接着,作者详细讲述了客户/服务器模型,这种模式在分布式计算中至关重要,Linux作为服务器端操作系统,其在这一领域的应用广泛。 章节中提到的UNIX是Linux的先驱,特别是其发展历程,从诞生初期的简单工具到第七版的完善,展现了操作系统演进的历程。作者还讨论了GNU项目,Linux正是在GNU Public License(GPL)下开发的自由软件,强调了开源精神。Linux的硬件需求和可用软件也有所提及,如对处理器、内存等的要求,以及丰富的开源软件库。 第二章着重于UNIX/Linux的基本结构,包括输入输出系统和进程管理。文件系统是系统的核心组成部分,而流和标准I/O库则用于数据传输。进程是程序在系统中的执行实体,包括创建、运行、控制以及资源管理。 第三章深入探讨进程控制,涵盖了进程的建立、运行机制,如数据和文件描述符的继承,以及进程同步、终止和优先级等概念。守护进程的特性和使用场景也在这一章介绍,它们通常在后台运行,处理长期任务并保持系统稳定。 进程间通信是关键章节,通过讨论信号处理、系统调用如`alarm()`、`pause()`以及异常处理函数`setjmp()`和`longjmp()`,展示了不同方法在程序之间传递信息和协调工作。 《Linux网络编程.pdf》为读者提供了一个全面的学习平台,涵盖了从基础网络原理到实际编程技巧的诸多知识点,有助于初学者理解和实践Linux网络编程技术。
2010-07-10 上传
第一篇 基础知识篇  第一章 文件系统和进程系统  1.1 文件系统  1.1.1 文件系统的总体结构  1.1.2 文件结构和目录结构  1.2 文件系统的相关编程  1.3 进程系统  1.3.1 进程的概念  1.3.2 Linux中描述进程的核心数据结构。  1.3.3 和进程相关的系统调用  本章小结 第二章 进程间通信和同步  2.1 信号的处理  2.1.1 Linux中支持的信号  2.1.2 信号的捕获和处理  2.1.3 系统调用和信号的相互作用  2.1.4 pause和suspend函数  2.2 信号量  2.2.1 进程间的互斥  2.2.2 信号量的结构和信号量操作函数 . 2.2.3 应用示例  2.3 消息队列  2.3.1 消息队列的结构  2.3.2 消息队列的操作函数  2.3.3 应用示例  2.4 共享内存  2.4.1 共享内存的操作函数  2.4.2 应用示例  本章小结 第三章 TCP/IP协议  3.1 OSI参考模型、协议和服务  3.2 协议和服务  3. 2.1 TCB/IP  3.2.2 TCP和UDP的比较  3.2.3 Internet上两主机进程间通信数据的封装和解包  3.2.4 IP地址、网络地址和网络掩码  3.2.5 传输层端口  3. 3 域名系统  3.4 域名解析和名字服务器  3. 4. 1 TCP协议  3.4.2 TCP的确认和超时重发机制  3.4.3 TCP头部格式(HeaderFFormat)  3.4.4 TCP连接的状态转移过程  3.5 IP数据包格式  3.6 Internet消息控制协议  本章小结 第二篇 初级应用篇  第四章 基本套接字编程实践  4.1 基本套接字函数族  4.1.1 socket编程的基本流程  4.1.2 函数socket  4.1. 3 函数connect  4.1. 4 函数bind  4.1.5 函数listen  4.1.6 函数accept  4.1.7 函数read和write  4.1.8 函数close  4.2 应用示例  4.3 程序结果和异常说明  4.3.1 程序的运行结果  4.3. 2 程序的异常  本章小结  第五章 无阻塞套接字和单进程轮询服务器  5.1 无阻塞套接字  5.1.1 阻塞套接字的缺点  5.1. 2 阻塞和无阻塞的比较  5.1.3 无阻塞的实现  5.2 单进程轮询服务器工作方式  5. 3 应用示例  5.3.1 应用说明  5.3.2 应用源码  第六章 带外数据与多路复用、信号驱动的输入J输出模型  6.1 多路复用的输入/输出模型  6.1.1 多路复用模型的概念与select函数  6.1.2 应用示例  6.1.3 pselect函数对select的增强  6.2 信号驱动的输入/输出模型  6.3 系统I/O模型的总结  6.4 带外数据  6.4.1 带外数据的发送  6.4.2 带外数据的接收  6.4.3 带外数据接收方法的示例  本章小结  第七章 UDF数据报  7.1 UDP数据报的概述  7.2 UDP通信的过程  7.3 UDP的服务器和TCP服务器的比较  7.4 UDP的“连接”  7.5 应用示例  本章小结  第八章 域名系统和通用套接字选项  8.1 域名系统  8.1.1 域名系统的回顾  8.1.2 通过地址获取主机信息  8.1.3 通过主机名获取主机信息  8.1.4 获取本地主机的信息  8.1.5 通过服务名获取服务端口  8.1.6 通过端口号获取服务名  8.2 套接字选项  8.2.1 获取和设置套接字选项  8.2.2 通用套接字选项  本章小结 第三篇 应用提高篇  第九章 高级套接字函数编程实践  9.1 函数recv和send  9.1.1 函数send  9.1.2 函数recv  9.1.3 应用示例  9.1.4 应用源码和分析  9.2 函数readv和writev  9.2.1 函数说明  9.2.2 应用示例  9.3 函数比recvmsg和sendmsg  本章小结  第十章 守护进程和超级服务器inetd  10.1 守护进程的原理  10.2 编程实践  10.3 超级服务器inetd的工作原理  10.3.1 超级服务器的概念  10.3.2 超级服务器使用的配置文件  10.3.3 inetd处理并发服务的过程  本章小结  第十一章 数据结构的传输和xDR标准  11.1 数据结构的传送  11.1.1 数据结构传送的问题  11.1.2 简单的示例  11.2 XDR标准  11.2.1 XDR中包含的数据类型  11.2.2 XDR实现的原理  11.2.3 XDR的转换函数库  本章小结  第十二章 BPC远程过程调用原理和实践  12.1 RPC的原理  12.1.1 XDR的更进一步  12.1.2 本地函数调用的过程  12.1.3 用远程调用来虚拟本地调用  12.2 RPC的实现  12.2.1 远程过程的标识  12.2.2 端口的动态映射  12.2.3 RPC的报文  12.2.4 RPC开发工具  12.2.5 设计的原则  12.3 应用示例:网络记事本  12.3.1 编写本地应用  12.3.2 Rpcgen构建RPC应用  12.3.3 编写RPC说明文件  12.3.4 修改客户端程序  12.3.5 修改服务器端程序  12.3.6 调用的完整过程  12.3.7 程序的结果、分析和总结  本章小结 第四篇 高级编程篇  第十三章 UNIX域套接字和并发服务器的预创建技术  13.1 UNIX域套接字  13.1.1 UNIX域的地址结构  13.1.2 UNIX(套接字使用的示例  13.1.3 传递文件描述符  13.2 并发服务器的预创建技术  13.2.1 预创建固定服务器进程的数量  13.2.2 动态的管理子进程  13.2.3 重用服务器子进程  本章小结  第十四章 原始套接字编程实践  14.1 原始套接字  14.1.1 原始套接字的创建  14.1.2 原始套接字的使用  14.1.3 IP包头和ICMP报文的C语言描述  14.2 Ping应用程序  14.2.1 程序设计  14.2.2 程序源码  14.3 IP套接字选项  14.3.1 IP_TTL选项  14.3.2 IP_TOS选项  14.3.3 IP_OPTIONS选项  14.3.4 IP_HDRINCL选项  本章小结  第十五章 多线程编程  15.1 线程的概念  15.1.1 线程的概念  15.1.2 线程的分类  15.1.3 线程的创建和等待函数  15.1.4 线程的属性函数  15.2 线程间的同步  15.2.1 无名信号量  15.2.2 互斥锁、条件变量和条件信号  15.2.3 线程和信号  15.3 在网络程序中应用多线程  15.3.1 线程间参数的传递  15.3.2 线程安全函数的设计  15.3.3 多进程的并发服务器和多线程的并发服务器  15.3.4 客户端进程的多线程化  本章小结 第十六章 网络售票系统的简单模拟  16.1 系统的总体设计  16.1.1 应用的说明  16.1.2 数据格式的设计  16.1.3 服务器端的设计  16.1.4 客户端的设计  16.2 程序源码和解析  16.2.1 服务器端的源码  16.2.2 客户端的源码  本章小结