具体描述
本书详尽而细致地介绍了在Linu
作者简介
目录信息
前言
第1章 概论
1.1网络的历史
1.2OSI模型
1.3Internet体系模型
1.4客户/服务器模型
1.5UNIX的历史
1.5.1UNIX诞生前的故事
1.5.2UNIX的诞生
1.5.31979-UNIX第7版
1.5.4UNIX仅仅是历史吗
1.6Linux的发展
1.6.1Linux的发展历史
1.6.2什么叫GNU
1.6.3Linux的特色
1.6.4硬件需求
1.6.5Linux可用的软件
1.6.6为什么选择Linux
1.7Linux和UNIX的发展
第2章 UNIX/Linux 模型
2.1UNIX/Linux基本结构
2.2输入和输出
2.2.1UNIX/Linux文件系统简介
2.2.2流和标准I/O 库
2.3进程
第3章 进程控制
3.1进程的建立与运行
3.1.1进程的概念
3.1.2进程的建立
3.1.3进程的运行
3.1.4数据和文件描述符的继承
3.2进程的控制操作
3.2.1进程的终止
3.2.2进程的同步
3.2.3进程终止的特殊情况
3.2.4进程控制的实例
3.3进程的属性
3.3.1进程标识符
3.3.2进程的组标识符
3.3.3进程环境
3.3.4进程的当前目录
3.3.5进程的有效标识符
3.3.6进程的资源
3.3.7进程的优先级
3.4守护进程
3.4.1简介
3.4.2守护进程的启动
3.4.3守护进程的错误输出
3.4.4守护进程的建立
第4章 进程间通信
4.1进程间通信的一些基本概念
4.2信号
4.2.1信号的处理
4.2.2信号与系统调用的关系
4.2.3信号的复位
4.2.4在进程间发送信号
4.2.5系统调用alarm()和pause()
4.2.6系统调用setjmp()
和longjmp()
4.3管道
4.3.1用C来建立、使用管道
4.3.2需要注意的问题
4.4有名管道
4.4.1有名管道的创建
4.4.2有名管道的I/O使用
4.4.3关于有名管道的一些问题
4.5文件和记录锁定
4.5.1实例程序及其说明
4.5.2锁定中的几个概念
4.5.3SystemV的咨询锁定
4.5.4BSD 的咨询式锁定
4.5.5前面两种锁定方式的比较
4.5.6Linux的其他上锁技术
4.6SystemVIPC
4.6.1ipcs命令
4.6.2ipcrm命令
4.7消息队列
4.7.1有关的数据结构
4.7.2有关的函数
4.7.3消息队列实例
4.8信号量
4.8.1有关的数据结构
4.8.2有关的函数
4.8.3信号量的实例
4.9共享内存
4.9.1有关的数据结构
4.9.2有关的函数
4.9.3共享内存应用举例
4.9.4共享内存与信号量的
结合使用
第5章 通信协议简介
5.1引言
5.2XNS概述
5.2.1XNS机构
5.3IPX/SPX协说概述
5.3.1网际包交换
5.3.2排序包交换
5.4NetBIOS概述
5.5AppleTalk概述
5.6TCP/IP概述
5.6.1TCP/IP结构模型
5.6.2Internet协议
5.6.3传输控制协议
5.6.4用户数据报文协议
第6章 Berkeley套接字
6.1引言
6.2概述
6.2.1套接字的历史
6.2.2套接字的功能
6.2.3套接字的三种类型
6.3Linux支配的网络协议
6.4套接字地址
6.4.1什么是套接字
6.4.2套接字描述符
6.4.3一个套接字是怎样在网络
上传输数据的
6.5套接字的一些基本知识
6.5.1基本结构
6.5.2基本转换函数
6.6基本套接字调用
6.6.1socket()函数
6.6.2bind()函数
6.6.3connect()函数
6.6.4listen()函数
6.6.5accept()函数
6.6.6send()、recv()函数
6.6.7sendto()和recvfrom()函数
6.6.8close()和shutdown()函数
6.6.9setsockopt()和
getsockopt() 函数
6.6.10getpeername()函数
6.6.11gethostname()函数
6.7DNS的操作
6.7.1理解DNS
6.7.2和DNS有关的函数和结构
6.7.3DNS例程
6.8套接字的客户/服务器
结构实现
6.8.1简单的流服务器
6.8.2简单的流式套接字
客户端程序
6.8.3数据报套接字例程
6.9保留端口
6.9.1简介
6.9.2保留端口
6.10五种I/O模式
6.10.1阻塞I/O模式
6.10.2非阻塞模式I/O
6.10.3I/O多路复用
6.10.4信号驱动I/O模式
6.10.5异步I/O模式
6.10.6几种I/O模式的比较
6.10.7fcntl()函数
6.10.8套接字选择项select()函数
6.11带外数据
6.11.1TCP的带外数据
6.11.2OOB传输套接字例程的
服务器代码Server.c
6.11.3OOB传输套接字例程的
客户端代码Clientc
6.11.4编译例子
6.12使用Inetd
6.12.1简介
6.12.2一个简单的服务器程序
6.12.3/etc/services和
/etc/inetd.conf文件
6.12.4 一个复杂一些的
inetd服务器程序
6.12.5一个更加复杂的inetd
服务器程序
6.12.6程序必须遵守的安全性准则
6.13小结
第7章 网络安全性
7.1网络安全简介
7.1.1网络安全的重要性
7.1.2信息系统安全的脆弱性
7.2Linux网络不安全的因素
7.3Linux程序员安全
7.3.1系统子程序
7.3.2标准C函数库
7.3.3书写安全的C程序
7.3.4SUID/SGID程序指导准则
7.3.5root程序的设计
第8章 ping例程
8.1ping命令简介
8.2ping的基本原理
第9章 tftp例程
9.1tftp协议简介
9.2tftp的使用
9.3tftp的原理
9.4tftp的基本结构
第10章 远程命令执行
10.1引言
10.2rcmd函数和rshd服务器
10.3rexec函数和rexecd服务器
第11章 远程登录
11.1简介
11.2终端行律和伪终端
11.3终端方式字和控制终端
11.4rlogin概述
11.5窗口环境
11.6流控制与伪终端方式字
11.7rlogin客户程序
11.8rlogin服务器
第12章 远程过程调用
12.1引言
12.2远程过程调用模型
12.3传统过程调用和远程过程
调用的比较
12.4远程过程调用的定义
12.5远程过程调用的有关问题
12.5.1远程过程调用传送协议
12.5.2SunRPC
12.5.3XeroxCourier
12.5.4ApolloRPC
12.6stub过程简介
12.7rpcgen简介
12.8分布式程序生成的例子
12.9小结
第13章 远程磁带的访问
13.1简介
13.2Linux磁带驱动器的处理
13.3rmt协议
13.4rmt服务器设计分析
第14章 WWW与HTTP协议
14.1引言
14.2HTTP客户请求
14.2.1客户端
14.2.2服务器端
14.2.3Web请求简介
14.2.4HTTP-HyperTextTransferProtocol
超文本传输协议
14.3Web编程
附录A 有关网络通信的服务
和网络库函数
附录B vi使用简介
B.1vi基本观念
B.1.1进入与离开
B.1.2vi输入模式
B.2vi基本编辑
B.2.1删除与修改
B.3vi进阶应用
B.3.1移动光标
B.3.2进阶编辑命令
B.3.3文件命令
附录C Linux下C语言使用
与调试简介
C.1C语言编程
C.2什么是C?
C.3GNUC编译器
C.3.1使用GCC
C.3.2GCC选项
C.3.3优化选项
C.3.4调试和剖析选项
C.3.5用gdb调试GCC程序
C.4另外的C编程工具
C.4.1Xxgdb
C.4.2Calls
C.4.3cprotc
C.4.4Inden
C.4.5Gprof
C.4.6f2c和p2c
附录D ping源码
附录E TFTP服务器程序源码
· · · · · · (收起)
读后感
这就是一个实在的人写得一本实在的书,如果要接触linux系统编程,推荐用这本书来入门。很惭愧的是我只看过本书的电子版……
这就是一个实在的人写得一本实在的书,如果要接触linux系统编程,推荐用这本书来入门。很惭愧的是我只看过本书的电子版……
这就是一个实在的人写得一本实在的书,如果要接触linux系统编程,推荐用这本书来入门。很惭愧的是我只看过本书的电子版……
这就是一个实在的人写得一本实在的书,如果要接触linux系统编程,推荐用这本书来入门。很惭愧的是我只看过本书的电子版……
这就是一个实在的人写得一本实在的书,如果要接触linux系统编程,推荐用这本书来入门。很惭愧的是我只看过本书的电子版……
用户评价
说实话,当我拆开这本《Linux网络编程》的书封时,我对它抱有的是一种**谨慎的期待**。毕竟,网络编程这块“硬骨头”,多少优秀的书籍都倒在了如何平衡基础理论与前沿技术的深度上。但翻开目录后,我的疑虑就烟消云散了。作者的叙事逻辑非常流畅,从最底层的网络接口调用开始,层层递进,稳健地构建起一个完整的知识体系。它没有急于展示那些炫酷的高级框架,而是扎扎实实地从 `socket()`、`bind()`、`listen()` 这些基础 API 讲起,确保读者对网络编程的“肌肉记忆”是正确的。最让我感到惊喜的是,书中对 **UNP(Unix 网络编程)**中那些经典陷阱的剖析,例如各种错误码(`errno`)的处理逻辑、字节序转换的必要性,以及在不同操作系统环境下可能遇到的移植性问题,都有独到的见解。阅读的过程仿佛有一位经验丰富的前辈在你身边指导,不断提醒你“这里可能会出错,你应该这样做”。这本书的价值不在于它提供了多少现成的代码库,而在于它教会了你**如何像一个真正的网络工程师那样去思考和调试**。
我一直觉得,优秀的编程书籍,其价值应该体现在“**启发性**”上,而不是仅仅充当一本参考字典。《Linux网络编程》在这方面做得非常出色。它不满足于告诉你“怎么做”(How),更深挖了“为什么”(Why)。例如,书中在讲解 UDP 广播和多播时,不仅仅是贴出了示例代码,还详细对比了它们在局域网环境下的适用场景和潜在限制,甚至提到了如何利用 TTL(Time To Live)字段来控制数据包的传播范围。这种对**技术选型背后的权衡艺术**的讨论,才是区分入门资料和专业著作的关键。读完关于高并发服务器模型(如 Master/Worker、Reactor 模式)的章节后,我立即将自己项目中的一个性能瓶颈点做了优化,效果立竿见影。这本书的深度足以让有一定基础的开发者进一步精进,同时它的条理清晰度也允许初学者在面对复杂的网络概念时,能够有一个坚实的起点。它是一把钥匙,打开了通往高性能网络世界的大门。
我是一个偏爱阅读**排版和可读性**的读者,很多技术书籍的内容再好,如果排版混乱,也会大大降低阅读体验。令人欣慰的是,《Linux网络编程》在视觉呈现上做到了专业水准。代码块的着色清晰、注释恰到好处,没有出现那种让人眼花缭乱的超长行或嵌套过深的结构。更重要的是,作者在组织章节时,似乎深谙读者的“认知负荷”规律。比如,它会先用一个简单的客户端/服务器模型来介绍基本流程,然后才引入信号处理和异步 I/O 的复杂性。这种**循序渐进,绝不跳跃**的教学方式,使得原本晦涩难懂的概念变得易于消化。我不需要为了理解一个概念而不断地在书本的前后章节之间来回翻找,信息的关联性被构建得非常紧密。对于需要长时间盯着屏幕阅读技术文档的人来说,这种对阅读体验的尊重,本身就是一种加分项,它让学习过程不再是煎熬,而是一种享受。
如果用一个词来概括我对这本《Linux网络编程》的感受,那一定是**“内功心法”**。很多现代框架和库封装了底层细节,让我们误以为网络编程已经变得简单无比。但一旦这些封装出现问题,或者我们需要进行底层调试时,缺乏对操作系统网络栈的深刻理解,就会束手无策。这本书恰恰弥补了这种“**只见树木,不见森林**”的缺陷。它详细剖析了 Linux 内核如何管理网络缓冲区(零拷贝、socket 缓冲区设置)、系统调用是如何被封装和实现的。书中对 `select`, `poll`, `epoll` 的对比分析,不仅仅停留在性能差异上,更深入探讨了它们在内核中的具体实现机制,这对于理解 Linux 异步编程的演变至关重要。读完之后,我感觉自己不再是简单地“调用”网络API,而是真正“**掌握**”了网络通信的底层原理,能够更有底气地去诊断和优化那些看似随机出现的网络延迟和连接中断问题。这是一本可以伴随职业生涯成长的经典之作。
这本《Linux网络编程》绝对是我的**救命稻草**!我之前在工作中遇到一个棘手的网络通信问题,涉及到复杂的 Socket 编程和多线程并发处理,搞得我焦头烂额。市面上很多教材要么讲得过于理论化,公式推导一大堆,让我这个实战派看了直犯困;要么就是代码示例陈旧,跑起来一堆兼容性问题。然而,这本书简直是为我量身定做的。它没有铺天盖地的理论轰炸,而是直击痛点,用大量清晰、现代的 C/C++ 示例代码,手把手地教你如何构建高性能、高可靠性的网络应用。我尤其欣赏作者对 TCP/IP 协议栈的讲解,不是简单地罗列 RFC 标准,而是结合内核的实际工作流程来阐述,让你明白为什么会出现粘包、为什么需要设置 TCP_NODELAY,以及如何利用 epoll 这种高效的 I/O 多路复用机制来管理成千上万的并发连接。光是关于信号量处理和进程间通信(IPC)那几章,我就反复看了好几遍,真正理解了在 Linux 环境下进行健壮编程的精髓。这本书绝对是那种可以放在手边,随时翻阅,并且每次都能找到新收获的**实战手册**。
只读过第六章
网络编程入门级别
网络编程入门级别
我出版的第一本书。:-)
紫霞多年前攒的