前 言
Linux操作系统已经成为目前最流行的开源操作系统,在服务器、嵌入式系统有着广泛的应用,并且逐步走入个人电脑的桌面操作系统。Linux的网络程序设计在服务器领域、嵌入式领域有着广泛的应用。例如Web服务器、P2P应用、嵌入式网络机顶盒、IPTV机顶盒、手持设备等,上述产品大部分采用了开源的Linux系统。因此,熟悉并且能够编写网络程序代码,构建自己的网络架构程序是十分重要的。
本书全面地介绍了Linux的网络编程技术,并以实例介绍了Linux的应用层网络设计、网络协议栈的实现原理和Linux内核防火墙的技术。学完本书之后,读者可以有编写比较复杂项目的本领。
本书的特点
1.循序渐进,由浅入深
为了方便读者学习,本书首先介绍Linux的开发环境,然后介绍基本的网路程序设计方法,再进行Linux内核的网络设计方法。最后,通过3个综合案例,综合运用上述知识,让读者更深刻地了解网络程序设计的知识。在每一部分的介绍中都是按照由浅入深的方式进行介绍,先介绍基础知识,再结合高级知识进行介绍。
2.技术全面,内容充实
本书基本涵盖了Linux网络程序设计的所有知识面,特别对于高级网络编程、原始套接字等高级应用层网络程序设计给出了全面的介绍和丰富的例子程序。除了用户界面的网络程序设计外,本书还对内核空间的网络程序设计进行了详细的介绍,针对netfilter框架,做了很细致的讲解,并给出了一个全面使用netfilter框架的案例方便读者深入了解。
3.对比讲解,理解深刻
由于Linux程序设计的知识用于空间和内核空间的代码和模块是相互作用的,在多个主要函数介绍过程中,本书对用户空间和内核空间进行交互式的对比介绍,使读者在了解如何使用的情况下,更深入地了解为什么这样用,“知其然并知其所以然”。
4.案例精讲,深入剖析
根据本人多年的项目经验,只有实际接触案例和代码才能够对知识点更深入地了解。本书在介绍了Linux网络程序设计知识点的基础上,通过具有典型意义的3个案例,对各个知识点包括应用层的HTTP协议的Web服务器、协议栈原理的协议栈案例和内核网络的防火墙案例进行了深入剖析。
本书的内容
第1章:为了方便读者对Linux历史文化的了解,这一章从Linux的发展历史、发展要素、发行版本和内核的选择、架构、GPL许可证等几个方面向读者介绍Linux操作系统。
第2章:比较详细地介绍了在Linux环境下进行软件开发所必须的几个方面,包括Linux环境下的编辑器、GCC编译器、Makefile的编写、如何使用GDB进行程序调试等。
第3章:介绍了Linux下的文件系统的概念以及如何使用文件相关函数进行文件操作,通过本章读者可以掌握文件编程。
第4章:对Linux下进程、线程以及之间的通信方法进行了详细的介绍。内容包含进程和线程的概念、进程的产生方式、进程间的IPC通信、Linux下的线程及通信方法。
第5章:重点介绍了TCP/IP的模型和多个主要的协议类型,并对IP地址的概念进行了介绍,最后简单介绍了字节序的概念。
第6章:介绍了用户空间的网络协议,包含HTTP协议、FTP协议、NFS协议和TELNET协议,最后介绍了如何利用xinetd定义自己的网络服务。
第7章:重点介绍了TCP网络程序设计的基础知识,包括套接字地址结构、TCP网络程序流程。对套接字编程的主要函数进行了介绍,并提供了一个简单的例子。
第8章:重点介绍了主机信息的获取,包含网络字节需转换、IP地址转换函数、套接字类型判定、协议名称处理、DNS获取函数等。
第9章:介绍了Linux下的IO复用,除了常用的Linux下的IO函数,重点介绍了阻塞IO模型、非阻塞IO模型、IO复用、信号驱动IO模型和异步IO模型等IO模型。
第10章:介绍了UDP协议的编程框架并给出了多个例子。对UDP编程中经常遇到的问题进行了介绍,并给出了问题解决的方案。
第11章:介绍了网络编程中的高级套接字,包含UNIX域协议编程、广播、多播和数据链路层访问。本章给出了详细的例子代码介绍上述的概念。
第12章:介绍套接字选项,对套接字选项的含义进行了详细的介绍,还介绍了ioctl()控制选项和fcntl()控制选项。
第13章:介绍了原始套接字,包含原始套接字的创建、接收数据、发送数据等,对经常使用原始套接字进行程序设计的洪水攻击进行了比较详细的介绍。
第14章:介绍服务器的模型,对循环服务器、简单并发服务器、TCP高级并发服务器、IO复用循环服务器进行了详细介绍。
第15章:简单介绍了IPv6协议,对IPv4和IPv6两种协议的不同点进行讲解,最后介绍了如何使用IPv6的接口进行程序设计。
第16章:介绍了Linux内核中的网络部分代码,以及网络在内核中的分布、软中断、网络数据在内核中的流程。
第17章:介绍了Linux内置防火墙netfilter的报文处理,并介绍了其中的5个钩子和内核模块程序设计框架。
第18章:介绍了一个Web服务器SHTTPD的综合案例。从需求、设计、实现等方面介绍了Web服务器实现的主要框架和实现的技术难点。
第19章:介绍了一个应用层网络协议栈SIP的综合案例,以及网络协议栈的分层结构实现,协议栈包含了物理层、MAC层、IP层、ARP层、UDP层等方面。
第20章:介绍了一个内核防火墙SIPFW的综合案例。在netfilter框架的基础上,实现了一个可以进行用户交互的、可进行信息统计的、网络数据报文过滤型防火墙。
适合的读者
q 包括Linux网络开发工作人员;
q Linux网络开发爱好者;
q 大中专院校的学生;
q 社会培训学生。