万本电子书0元读

万本电子书0元读

顶部广告

Linux网络编程(第2版)电子书

      备受推崇的Linux经典畅销书全面升级,ChinaUnix社区鼎力推荐   资深程序员15年经验总结,深入探讨Linux应用层和内核层的网络编程   详细讲解HTTP服务器、协议栈和防火墙三个典型案例的实际开发过程   内容全面:全书涵盖Linux网络编程从基础到高级开发的方方面面知识点   内容深入:重点讲解了技术性较强的Linux用户空间网络编程及内核网络编程

售       价:¥

纸质售价:¥67.20购买纸书

160人正在读 | 2人评论 6.2

作       者:宋敬彬

出  版  社:清华大学出版社

出版时间:2014-02-01

字       数:9015

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(2条)
  • 读书简介
  • 目录
  • 累计评论(2条)
“Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的*发展,全部采用当前流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。 《Linux网络编程(第2版)》是获得大量读者好评的“Linux典藏大系”中的《Linux网络编程》的第2版。《Linux网络编程(第2版)》第1版出版后获得了读者的高度评价。《Linux网络编程(第2版)》循序渐,从应用层到Linux内核,从基本知识到综合案例,全面、系统地向读者介绍了如何在Linux下行网络程序设计。《Linux网络编程(第2版)》涉及面广,从基本的编程工具介绍和编程环境搭建,到高级技术和核心原理,再到项目实战,几乎涉及Linux网络编程的所有重要知识。 《Linux网络编程(第2版)》共分4篇。第1篇介绍Linux操作系统概述、Linux编程环境、文件系统简介、程序、程和线程;第2篇介绍TCP/IP协议族简介、应用层网络服务程序简介、TCP网络编程基础、服务器和客户端信息的获取、数据的IO和复用、基于UDP协议的收和发送、高级套字、套字选项、原始套字、服务器模型选择,以及IPv6的简介;第3篇介绍Linux内核中网络部分结构,以及分布和netfilter框架内报文处理;第4篇介绍三个网络编程的实例:Web服务器的例子SHTTPD、网络协议栈的例子SIP、防火墙的例子SIPFW。 《Linux网络编程(第2版)》适合所有想全面学习Linux网络编程的人员阅读,也适合已经从事Linux网络发的工程技术人员使用。对于广大的Linux平台下的网络程序设计人员,《Linux网络编程(第2版)》更是一本不可多得的参考手册。<br/>【推荐语】<br/>    资深程序员15年经验总结,ChinaUnix社区鼎力推荐,450余个示例、70余个应用实例、3个项目案例     深探讨Linux应用层和内核层的网络编程,详细讲解HTTP服务器、协议栈和防火墙三个典型案例的实际发过程     内容全面:全书涵盖Linux网络编程从基础到高级发的方方面面知识     内容深:重讲解了技术性较强的Linux用户空间网络编程及内核网络编程     注重原理:对每个知识都从原始概念和基本原理行了详细和透彻的分析     插图丰富:对比较复杂和难度较高的内容绘制了220余幅原理图行讲解     代码经典:书中的示例代码大多是从实际项目总结而来,有很强的实用性     案例典型:详细介绍了HTTP网络服务器、协议栈和防火墙的实现过程 Linux精品图书推荐(请丛书查看) 《Linux环境C程序设计(第2版)》 《Linux C程序设计王者归来》 《零起飞学Linux C编程》 《Linux驱动发门与实战(第2版)》 《Linux系统移植(第2版)》 《ARM嵌式Linux系统发详解(第2版)》 《Linux典藏大系(套装全2册):Linux从门到精通+Shell从门到精通》 《Linux典藏大系(套装全4册):Linux从门到精通+Linux系统管理与网络管理+Linux服务器架设指南+Shell从门到精通》<br/>【作者】<br/>宋敬彬,海信集团国家重实验室高级工程师,海信数字家庭原型系统的主要设计及实现人。有15年的Linux编程经验,对Linux内核和网络协议栈十分熟悉。长期从事嵌式Linux设备、机顶盒产品和IGRS设备互联的研究和发工作。目前主要从事数字家庭系统的设计和实现。曾经在技术期刊上发表过多篇技术论文,参加过国家863高性能集群服务器和电子发展基金的IPv6等项目。<br/>
目录展开

前折页

扉页

版权页

前言

目录

第1篇 Linux网络开发基础

第1章 Linux操作系统概述

1.1 Linux发展历史

1.1.1 Linux的诞生和发展

1.1.2 Linux名称的由来

1.2 Linux的发展要素

1.2.1 UNIX操作系统

1.2.2 Minix操作系统

1.2.3 POSIX 标准

1.3 Linux与UNIX的异同

1.4 操作系统类型选择和内核版本的选择

1.4.1 常见的不同公司发行的Linux异同

1.4.2 内核版本的选择

1.5 Linux的系统架构

1.5.1 Linux内核的主要模块

1.5.2 Linux的文件结构

1.6 GNU通用公共许可证

1.6.1 GPL许可证的历史

1.6.2 GPL的自由理念

1.6.3 GPL的基本条款

1.6.4 关于GPL许可证的争议

1.7 Linux软件开发的可借鉴之处

1.8 小结

第2章 Linux编程环境

2.1 Linux环境下的编辑器

2.1.1 Vim使用简介

2.1.2 使用Vim建立文件

2.1.3 使用Vim编辑文本

2.1.4 Vim的格式设置

2.1.5 Vim配置文件.vimrc

2.1.6 使用其他编辑器

2.2 Linux下的GCC编译器工具集

2.2.1 GCC简介

2.2.2 编译程序的基本知识

2.2.3 单个文件编译成执行文件

2.2.4 编译生成目标文件

2.2.5 多文件编译

2.2.6 预处理

2.2.7 编译成汇编语言

2.2.8 生成和使用静态链接库

2.2.9 生成动态链接库

2.2.10 动态加载库

2.2.11 GCC常用选项

2.2.12 编译环境的搭建

2.3 Makefile文件简介

2.3.1 一个多文件的工程例子

2.3.2 多文件工程的编译

2.3.3 Makefile的规则

2.3.4 Makefile中使用变量

2.3.5 搜索路径

2.3.6 自动推导规则

2.3.7 递归make

2.3.8 Makefile中的函数

2.4 用GDB调试程序

2.4.1 编译可调试程序

2.4.2 使用GDB调试程序

2.4.3 GDB常用命令

2.4.4 其他的GDB

2.5 小结

第3章 文件系统简介

3.1 Linux下的文件系统

3.1.1 Linux下文件的内涵

3.1.2 文件系统的创建

3.1.3 挂接文件系统

3.1.4 索引节点inode

3.1.5 普通文件

3.1.6 设备文件

3.1.7 虚拟文件系统VFS

3.2 文件的通用操作方法

3.2.1 文件描述符

3.2.2 打开创建文件open()函数、create()函数

3.2.3 关闭文件close()函数

3.2.4 读取文件read()函数

3.2.5 写文件write()函数

3.2.6 文件偏移lseek()函数

3.2.7 获得文件状态fstat()函数

3.2.8 文件空间映射mmap()函数

3.2.9 文件属性fcntl()函数

3.2.10 文件输入输出控制ioctl()函数

3.3 socket文件类型

3.4 小结

第4章 程序、进程和线程

4.1 程序、进程和线程的概念

4.1.1 程序和进程的差别

4.1.2 Linux环境下的进程

4.1.3 进程和线程

4.2 进程产生的方式

4.2.1 进程号

4.2.2 进程复制fork()函数

4.2.3 system()函数方式

4.2.4 进程执行exec()函数系列

4.2.5 所有用户态进程的产生进程init

4.3 进程间通信和同步

4.3.1 半双工管道

4.3.2 命名管道

4.3.3 消息队列

4.3.4 消息队列的一个例子

4.3.5 信号量

4.3.6 共享内存

4.3.7 信号

4.4 Linux下的线程

4.4.1 多线程编程实例

4.4.2 Linux下线程创建函数pthread_create()

4.4.3 线程的结束函数pthread_join()和函数pthread_exit()

4.4.4 线程的属性

4.4.5 线程间的互斥

4.4.6 线程中使用信号量

4.5 小结

第2篇 Linux用户层网络编程

第5章 TCP/IP协议族简介

5.1 OSI网络分层介绍

5.1.1 OSI网络分层结构

5.1.2 OSI的7层网络结构

5.1.3 OSI参考模型中的数据传输

5.2 TCP/IP协议栈

5.2.1 TCP/IP协议栈参考模型

5.2.2 主机到网络层协议

5.2.3 IP协议

5.2.4 网际控制报文协议(ICMP)

5.2.5 传输控制协议(TCP)

5.2.6 用户数据报文协议(UDP)

5.2.7 地址解析协议(ARP)

5.3 IP地址分类与TCP/UDP端口

5.3.1 因特网中IP地址的分类

5.3.2 子网掩码(subnet mask address)

5.3.3 IP地址的配置

5.3.4 端口

5.4 主机字节序和网络字节序

5.4.1 字节序的含义

5.4.2 网络字节序的转换

5.5 小结

第6章 应用层网络服务程序简介

6.1 HTTP协议和服务

6.1.1 HTTP协议概述

6.1.2 HTTP协议的基本过程

6.2 FTP协议和服务

6.2.1 FTP协议概述

6.2.2 FTP协议的工作模式

6.2.3 FTP协议的传输方式

6.2.4 一个简单的FTP过程

6.2.5 常用的FTP工具

6.3 TELNET协议和服务

6.3.1 远程登录的基本概念

6.3.2 使用TELNET协议进行远程登录的工作过程

6.3.3 TELNET协议

6.4 NFS协议和服务

6.4.1 安装NFS服务器和客户端

6.4.2 服务器端的设定

6.4.3 客户端的操作

6.4.4 showmount命令

6.5 自定义网络服务

6.5.1 xinetd/inetd

6.5.2 xinetd服务配置

6.5.3 自定义网络服务

6.6 小结

第7章 TCP网络编程基础

7.1 套接字编程基础知识

7.1.1 套接字地址结构

7.1.2 用户层和内核层交互过程

7.2 TCP网络编程流程

7.2.1 TCP网络编程架构

7.2.2 创建网络插口函数socket()

7.2.3 绑定一个地址端口对函数bind()

7.2.4 监听本地端口listen

7.2.5 接受一个网络请求函数accept()

7.2.6 连接目标网络服务器函数connect()

7.2.7 写入数据函数write()

7.2.8 读取数据函数read()

7.2.9 关闭套接字函数

7.3 服务器/客户端的简单例子

7.3.1 例子功能描述

7.3.2 服务器网络程序

7.3.3 服务器读取和显示字符串

7.3.4 客户端的网络程序

7.3.5 客户端读取和显示字符串

7.3.6 编译运行程序

7.4 截取信号的例子

7.4.1 信号处理

7.4.2 信号SIGPIPE

7.4.3 信号SIGINT

7.5 小结

第8章 服务器和客户端信息的获取

8.1 字节序

8.1.1 大端字节序和小端字节序

8.1.2 字节序转换函数

8.1.3 一个字节序转换的例子

8.2 字符串IP地址和二进制IP地址的转换

8.2.1 inet_xxx()函数

8.2.2 inet_pton()和inet_ntop()函数

8.2.3 使用8.2.1节地址转换函数的例子

8.2.4 使用函数inet_pton()和函数inet_ntop()的例子

8.3 套接字描述符判定函数issockettype()

8.3.1 进行文件描述符判定的函数issockettype()

8.3.2 main()函数

8.4 IP地址与域名之间的相互转换

8.4.1 DNS原理

8.4.2 获取主机信息的函数

8.4.3 使用主机名获取主机信息的例子

8.4.4 函数gethostbyname()不可重入的例子

8.5 协议名称处理函数

8.5.1 xxxprotoxxx()函数

8.5.2 使用协议族函数的例子

8.6 小结

第9章 数据的IO和复用

9.1 IO函数

9.1.1 使用recv()函数接收数据

9.1.2 使用send()函数发送数据

9.1.3 使用readv()函数接收数据

9.1.4 使用writev()函数发送数据

9.1.5 使用recvmsg()函数接收数据

9.1.6 使用sendmsg()函数发送数据

9.1.7 IO函数的比较

9.2 使用IO函数的例子

9.2.1 客户端处理框架的例子

9.2.2 服务器端程序框架

9.2.3 使用recv()和send()函数

9.2.4 使用readv()和write()函数

9.2.5 使用recvmsg()和sendmsg()函数

9.3 IO模型

9.3.1 阻塞IO模型

9.3.2 非阻塞IO模型

9.3.3 IO复用

9.3.4 信号驱动IO模型

9.3.5 异步IO模型

9.4 select()函数和pselect()函数

9.4.1 select()函数

9.4.2 pselect()函数

9.5 poll()函数和ppoll()函数

9.5.1 poll()函数

9.5.2 ppoll()函数

9.6 非阻塞编程

9.6.1 非阻塞方式程序设计介绍

9.6.2 非阻塞程序设计的例子

9.7 小结

第10章 基于UDP协议的接收和发送

10.1 UDP编程框架

10.1.1 UDP编程框图

10.1.2 UDP服务器编程框架

10.1.3 UDP客户端编程框架

10.2 UDP协议程序设计的常用函数

10.2.1 建立套接字socket()和绑定套接字bind()

10.2.2 接收数据recvfrom()/recv()

10.2.3 发送数据sendto()/send()

10.3 UDP接收和发送数据的例子

10.3.1 UDP服务器端

10.3.2 UDP服务器端数据处理

10.3.3 UDP客户端

10.3.4 UDP客户端数据处理

10.3.5 测试UDP程序

10.4 UDP协议程序设计中的几个问题

10.4.1 UDP报文丢失数据

10.4.2 UDP数据发送中的乱序

10.4.3 UDP协议中的connect()函数

10.4.4 UDP缺乏流量控制

10.4.5 UDP协议中的外出网络接口

10.4.6 UDP协议中的数据报文截断

10.5 小结

第11章 高级套接字

11.1 UNIX域函数

11.1.1 UNIX域函数的地址结构

11.1.2 套接字函数

11.1.3 使用UNIX域函数进行套接字编程

11.1.4 传递文件描述符

11.1.5 socketpair()函数

11.1.6 传递文件描述符的例子

11.2 广播

11.2.1 广播的IP地址

11.2.2 广播与单播的比较

11.2.3 广播的示例

11.3 多播

11.3.1 多播的概念

11.3.2 广域网的多播

11.3.3 多播的编程

11.3.4 内核中的多播

11.3.5 一个多播例子的服务器端

11.3.6 一个多播例子的客户端

11.4 数据链路层访问

11.4.1 SOCK_PACKET类型

11.4.2 设置套接口以捕获链路帧的编程方法

11.4.3 从套接口读取链路帧的编程方法

11.4.4 定位IP包头的编程方法

11.4.5 定位TCP报头的编程方法

11.4.6 定位UDP报头的编程方法

11.4.7 定位应用层报文数据的编程方法

11.4.8 使用SOCK_PACKET编写ARP请求程序的例子

11.5 小结

第12章 套接字选项

12.1 获取和设置套接字选项getsocketopt()/setsocketopt()

12.1.1 getsockopt()函数和setsocketopt()函数的介绍

12.1.2 套接字选项

12.1.3 套接字选项简单示例

12.2 SOL_SOCKET协议族选项

12.2.1 SO_BROADCAST广播选项

12.2.2 SO_DEBUG调试选项

12.2.3 SO_DONTROUTE不经过路由选项

12.2.4 SO_ERROR错误选项

12.2.5 SO_KEEPALIVE保持连接选项

12.2.6 SO_LINGER缓冲区处理方式选项

12.2.7 SO_OOBINLINE带外数据处理方式选项

12.2.8 SO_RCVBUF和SO_SNDBUF缓冲区大小选项

12.2.9 SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项

12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收发超时选项

12.2.11 SO_REUSERADDR地址重用选项

12.2.12 SO_EXCLUSIVEADDRUSE端口独占选项

12.2.13 SO_TYPE套接字类型选项

12.2.14 SO_BSDCOMPAT与BSD套接字兼容选项

12.2.15 SO_BINDTODEVICE套接字网络接口绑定选项

12.2.16 SO_PRIORITY套接字优先级选项

12.3 IPPROTO_IP选项

12.3.1 IP_HDRINCL选项

12.3.2 IP_OPTNIOS选项

12.3.3 IP_TOS选项

12.3.4 IP_TTL选项

12.4 IPPROTO_TCP选项

12.4.1 TCP_KEEPALIVE选项

12.4.2 TCP_MAXRT选项

12.4.3 TCP_MAXSEG选项

12.4.4 TCP_NODELAY和TCP_CORK选项

12.5 使用套接字选项

12.5.1 设置和获取缓冲区大小

12.5.2 获取套接字类型的例子

12.5.3 使用套接字选项的综合例子

12.6 ioctl()函数

12.6.1 ioctl()函数的命令选项

12.6.2 ioctl()函数的IO请求

12.6.3 ioctl()函数的文件请求

12.6.4 ioctl()函数的网络接口请求

12.6.5 使用ioctl()函数对ARP高速缓存操作

12.6.6 使用ioctl()函数发送路由表请求

12.7 fcntl()函数

12.7.1 fcntl()函数的选项

12.7.2 使用fcntl()函数修改套接字非阻塞属性

12.7.3 使用fcntl()函数设置信号属主

12.8 小结

第13章 原始套接字

13.1 概述

13.2 原始套接字的创建

13.2.1 SOCK_RAW选项

13.2.2 IP_HDRINCL套接字选项

13.2.3 不需要bind()函数

13.3 原始套接字发送报文

13.4 原始套接字接收报文

13.5 原始套接字报文处理时的结构

13.5.1 IP头部的结构

13.5.2 ICMP头部结构

13.5.3 UDP头部结构

13.5.4 TCP头部结构

13.6 ping的例子

13.6.1 协议格式

13.6.2 校验和函数

13.6.3 设置ICMP发送报文的头部

13.6.4 剥离ICMP接受报文的头部

13.6.5 计算时间差

13.6.6 发送报文

13.6.7 接收报文

13.6.8 主函数过程

13.6.9 主函数main()

13.6.10 编译测试

13.7 洪水攻击

13.8 ICMP洪水攻击

13.8.1 ICMP洪水攻击的原理

13.8.2 ICMP洪水攻击的例子

13.9 UDP洪水攻击

13.10 SYN洪水攻击

13.10.1 SYN洪水攻击的原理

13.10.2 SYN洪水攻击的例子

13.11 小结

第14章 服务器模型选择

14.1 循环服务器

14.1.1 UDP循环服务器

14.1.2 TCP循环服务器

14.2 简单并发服务器

14.2.1 并发服务器的模型

14.2.2 UDP并发服务器

14.2.3 TCP并发服务器

14.3 TCP的高级并发服务器模型

14.3.1 单客户端单进程,统一accept()

14.3.2 单客户端单线程,统一accept()

14.3.3 单客户端单线程,各线程独自accept(),使用互斥锁

14.4 IO复用循环服务器

14.4.1 IO复用循环服务器模型介绍

14.4.2 IO复用循环服务器模型的例子

14.5 小结

第15章 IPv6简介

15.1 IPv4的缺陷

15.2 IPv6的特点

15.3 IPv6的地址

15.3.1 IPv6的单播地址

15.3.2 可聚集全球单播地址

15.3.3 本地使用单播地址

15.3.4 兼容性地址

15.3.5 IPv6多播地址

15.3.6 IPv6任播地址

15.3.7 主机的多个IPv6地址

15.4 IPv6的头部

15.4.1 IPv6头部格式

15.4.2 与IPv4头部的对比

15.4.3 IPv6的TCP头部

15.4.4 IPv6的UDP头部

15.4.5 IPv6的ICMP头部

15.5 IPv6运行环境

15.5.1 加载IPv6模块

15.5.2 查看是否支持IPv6

15.6 IPv6的结构定义

15.6.1 IPv6的地址族和协议族

15.6.2 套接字地址结构

15.6.3 地址兼容考虑

15.6.4 IPv6通用地址

15.7 IPv6的套接字函数

15.7.1 socket()函数

15.7.2 没有发生改变的函数

15.7.3 发生改变的函数

15.8 IPv6的套接字选项

15.8.1 IPv6的套接字选项

15.8.2 单播跳限IPV6_UNICAST_HOPS

15.8.3 发送和接收多播包

15.8.4 IPv6中获得时间戳的ioctl命令

15.9 IPv6的库函数

15.9.1 地址转换函数的差异

15.9.2 域名解析函数的差异

15.9.3 测试宏

15.10 IPv6的编程的一个简单例子

15.10.1 服务器程序

15.10.2 客户端程序

15.10.3 编译调试

15.11 小结

第3篇 Linux内核网络编程

第16章 Linux内核中网络部分结构以及分布

16.1 概述

16.1.1 代码目录分布

16.1.2 内核中网络部分流程简介

16.1.3 系统提供修改网络流程点

16.1.4 sk_buff结构

16.1.5 网络协议数据结构inet_protosw

16.2 软中断CPU报文队列及其处理

16.2.1 Linux内核网络协议层的层间传递手段——软中断

16.2.2 网络收发处理软中断的实现机制

16.3 socket数据如何在内核中接收和发送

16.3.1 socket()的初始化

16.3.2 接收网络数据recv()

16.3.3 发送网络数据send()

16.4 小结

第17章 netfilter框架内报文处理

17.1 netfilter

17.1.1 netfilter简介

17.1.2 netfilter框架

17.1.3 netfilter检查时的表格

17.1.4 netfilter的规则

17.2 iptables和netfilter

17.2.1 iptables简介

17.2.2 iptables的表和链

17.2.3 使用iptables设置过滤规则

17.3 内核模块编程

17.3.1 内核“Hello World!”程序

17.3.2 内核模块的基本架构

17.3.3 内核模块加载和卸载过程

17.3.4 内核模块初始化和清理函数

17.3.5 内核模块初始化和清理过程的容错处理

17.3.6 内核模块编译所需的Makefile

17.4 5个钩子点

17.4.1 netfilter的5个钩子点

17.4.2 NF_HOOK宏

17.4.3 钩子的处理规则

17.5 注册/注销钩子

17.5.1 结构nf_hook_ops

17.5.2 注册钩子

17.5.3 注销钩子

17.5.4 注册注销函数

17.6 钩子的简单处理例子

17.6.1 功能描述

17.6.2 需求分析

17.6.3 ping回显屏蔽实现

17.6.4 禁止向目的IP地址发送数据的实现

17.6.5 端口关闭实现

17.6.6 动态配置实现

17.6.7 可加载内核实现代码

17.6.8 应用层测试代码实现

17.6.9 编译运行

17.7 一点多个钩子的优先级

17.8 校验和问题

17.9 小结

第4篇 综合案例

第18章 一个简单Web服务器的例子SHTTPD

18.1 SHTTPD的需求分析

18.1.1 SHTTPD启动参数可动态配置的需求

18.1.2 SHTTPD的多客户端支持的需求

18.1.3 SHTTPD支持方法的需求

18.1.4 SHTTPD支持的HTTP协议版本的需求

18.1.5 SHTTPD支持头部的需求

18.1.6 SHTTPD定位URI的需求

18.1.7 SHTTPD支持CGI的需求

18.1.8 SHTTPD错误代码的需求

18.2 SHTTPD的模块分析和设计

18.2.1 SHTTPD的主函数

18.2.2 SHTTPD命令行解析的分析设计

18.2.3 SHTTPD配置文件解析的分析设计

18.2.4 SHTTPD的多客户端支持的分析设计

18.2.5 SHTTPD头部解析的分析设计

18.2.6 SHTTPD对URI的分析设计

18.2.7 SHTTPD支持方法的分析设计

18.2.8 SHTTPD支持CGI的分析设计

18.2.9 SHTTPD错误处理的分析设计

18.3 SHTTPD各模块的实现

18.3.1 SHTTPD命令行解析的实现

18.3.2 SHTTPD文件配置解析的实现

18.3.3 SHTTPD的多客户端支持的实现

18.3.4 SHTTPD所请求URI解析的实现

18.3.5 SHTTPD方法解析的实现

18.3.6 SHTTPD响应方法的实现

18.3.7 SHTTPD支持CGI的实现

18.3.8 SHTTPD支持HTTP协议版本的实现

18.3.9 SHTTPD内容类型的实现

18.3.10 SHTTPD错误处理的实现

18.3.11 SHTTPD生成目录下文件列表文件的实现

18.3.12 SHTTPD主函数的实现

18.4 SHTTPD的编译、调试和测试

18.4.1 建立源文件

18.4.2 制作Makefile

18.4.3 制作执行文件

18.4.4 使用不同的浏览器测试服务器程序

18.5 小结

第19章 一个简单网络协议栈的例子SIP

19.1 SIP网络协议栈的功能描述

19.1.1 SIP网络协议栈的基本功能描述

19.1.2 SIP网络协议栈的分层功能描述

19.1.3 SIP网络协议栈的用户接口功能描述

19.2 SIP网络协议栈的架构

19.3 SIP网络协议栈的存储区缓存

19.3.1 SIP存储缓冲的结构定义

19.3.2 SIP存储缓冲的处理函数

19.4 SIP网络协议栈的网络接口层

19.4.1 SIP网络接口层的架构

19.4.2 SIP网络接口层的数据结构

19.4.3 SIP网络接口层的初始化函数

19.4.4 SIP网络接口层的输入函数

19.4.5 SIP网络接口层的输出函数

19.5 SIP网络协议栈的ARP层

19.5.1 SIP地址解析层的架构

19.5.2 SIP地址解析层的数据结构

19.5.3 SIP地址解析层的映射表

19.5.4 SIP地址解析层的ARP映射表维护函数

19.5.5 SIP地址解析层的ARP网络报文构建函数

19.5.6 SIP地址解析层的ARP网络报文收发处理函数

19.6 SIP网络协议栈的IP层

19.6.1 SIP网际协议层的架构

19.6.2 SIP网际协议层的数据结构

19.6.3 SIP网际协议层的输入函数

19.6.4 SIP网际协议层的输出函数

19.6.5 SIP网际协议层的分片函数

19.6.6 SIP网际协议层的分片组装函数

19.7 SIP网络协议栈的ICMP层

19.7.1 SIP控制报文协议的数据结构

19.7.2 SIP控制报文协议的协议支持

19.7.3 SIP控制报文协议的输入函数

19.7.4 SIP控制报文协议的回显应答函数

19.8 SIP网络协议栈的UDP层

19.8.1 SIP数据报文层的数据结构

19.8.2 SIP数据报文层的控制单元

19.8.3 SIP数据报文层的输入函数

19.8.4 SIP数据报文层的输出函数

19.8.5 SIP数据报文层的建立函数

19.8.6 SIP数据报文层的释放函数

19.8.7 SIP数据报文层的绑定函数

19.8.8 SIP数据报文层的发送数据函数

19.8.9 SIP数据报文层的校验和计算

19.9 SIP网络协议栈的协议无关层

19.9.1 SIP协议无关层的系统架构

19.9.2 SIP协议无关层的函数形式

19.9.3 SIP协议无关层的接收数据函数

19.10 SIP网络协议栈的BSD接口层

19.10.1 SIP用户接口层的架构

19.10.2 SIP用户接口层的套接字建立函数

19.10.3 SIP用户接口层的套接字关闭函数

19.10.4 SIP用户接口层的套接字绑定函数

19.10.5 SIP用户接口层的套接字连接函数

19.10.6 SIP用户接口层的套接字接收数据函数

19.10.7 SIP用户接口层的发送数据函数

19.11 SIP网络协议栈的编译

19.11.1 SIP的文件结构

19.11.2 SIP的Makefile

19.11.3 SIP的编译运行

19.12 小结

第20章 一个简单防火墙的例子SIPFW

20.1 SIPFW防火墙的功能描述

20.1.1 SIPFW防火墙对主机进行网络数据过滤的功能描述

20.1.2 SIPFW防火墙用户设置防火墙规则的功能描述

20.1.3 SIPFW防火墙配置文件等附加功能的功能描述

20.2 SIPFW需求分析

20.2.1 SIPFW防火墙条件和动作

20.2.2 SIPFW防火墙支持过滤的类型和内容

20.2.3 SIPFW防火墙过滤的方式和动作

20.2.4 SIPFW防火墙的配置文件

20.2.5 SIPFW防火墙命令行配置格式

20.2.6 SIPFW防火墙的规则文件格式

20.2.7 SIPFW防火墙的日志文件数据格式

20.2.8 SIPFW防火墙构建所采用的技术方案

20.3 使用netlink进行用户空间和内核空间数据交互

20.3.1 netlink的用户空间程序设计

20.3.2 netlink的内核空间API

20.4 使用proc进行内存数据用户空间映射

20.4.1 proc虚拟文件系统的结构

20.4.2 创建proc虚拟文件

20.4.3 删除proc虚拟文件

20.4.4 proc文件的写函数

20.4.5 proc文件的读函数

20.5 内核空间的文件操作函数

20.5.1 内核空间的文件结构

20.5.2 内核空间的文件建立操作

20.5.3 内核空间的文件读写操作

20.5.4 内核空间的文件关闭操作

20.6 SIPFW防火墙的模块分析和设计

20.6.1 SIPFW防火墙的总体架构

20.6.2 SIPFW防火墙的用户命令解析

20.6.3 SIPFW用户空间与内核空间的交互

20.6.4 SIPFW防火墙内核链上的规则处理

20.6.5 SIPFW防火墙的PROC虚拟文件系统

20.6.6 SIPFW防火墙的配置文件和日志文件处理

20.6.7 SIPFW防火墙的过滤模块设计

20.7 SIPFW防火墙各功能模块的实现

20.7.1 SIPFW防火墙的命令解析代码

20.7.2 SIPFW防火墙的过滤规则解析模块代码

20.7.3 SIPFW防火墙的网络数据拦截模块代码

20.7.4 SIPFW防火墙的PROC虚拟文件系统

20.7.5 SIPFW防火墙对配置文件的解析

20.7.6 SIPFW防火墙内核模块初始化和退出

20.7.7 用户空间处理主函数

20.8 编译、调试和测试

20.8.1 用户程序和内核程序的Makefile

20.8.2 编译及运行

20.8.3 下发过滤规则,测试过滤结果

20.9 小结

后折页

累计评论(2条) 3个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部