首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 图书频道 > 计算机与网络 > 操作系统 >

用TCP/IP进行网际互连:客户-服务器编程与应用(Linux/POSIX套接字版)(第3卷) [平装]

2013-12-29 
编辑推荐《用TCP/IP进行网际互连:客户-服务器编程与应用Linux/POSIX套接字版)(第3卷)》(是其中的第三卷,作者
商家名称 信用等级 购买信息 订购本书
用TCP/IP进行网际互连:客户-服务器编程与应用(Linux/POSIX套接字版)(第3卷) [平装] 去商家看看
用TCP/IP进行网际互连:客户-服务器编程与应用(Linux/POSIX套接字版)(第3卷) [平装] 去商家看看

用TCP/IP进行网际互连:客户-服务器编程与应用(Linux/POSIX套接字版)(第3卷) [平装]

编辑推荐

《用TCP/IP进行网际互连:客户-服务器编程与应用Linux/POSIX套接字版)(第3卷)》(是其中的第三卷,作者讲解了应用程序软件如何利用TCP/lP在因特网上通信,并且这一版对全书内容进行了重新组织和全面更新。书中解释了客户一服务器范例及应用程序用于网络通信的套接字API,讨论了如何使用基本工具来创建服务器,并重点强调了实际的设计过程和技术,这些概念对于编程人员都是非常重要的。一代又一代的专业技术人员把DotJgIas Comer的该书视为了解那些使因特网得以运转的协议和技术的敲门砖,它思路清晰,简单易懂。

作者简介

作者:(美国)科默 (Comer.D.E) (美国)史蒂文 (Stevens.D.L) 译者:赵刚 林瑶 蒋慧

Douglas E.Comer:普度大学的一位杰出的计算机科学教授,思科系统公司的访问教授成员,并且是计算机网络和TCP/IP及因特网方面的国际公认的专家。他的著作已翻译成16种语言,并广泛用于世界各地的工业界和学术界。作为他的得意之作,这套共分三卷的《用TCP/IP进行网际互连》彻底改变了组网和网络方面的教育,并且他的不断创新的工作继续影响着研究生和大学生所学的课程。作为美国计算机学会的会士,在他获得的许多荣誉中包括Usenixx终生成就奖。

目录

第1章 引言和概述
1.1 使用TCP/IP的因特网应用
1.2 为分布式环境设计应用程序
1.3 标准和非标准的应用协议
1.4 使用标准应用协议的例子
1.5 telnet连接的例子
1.6 使用TELNET访问其他服务
1.7 应用协议和软件的灵活性
1.8 从提供者的角度看服务
1.9 本教材的其余部分
1.10 小结
深入研究
习题

第2章 客户-服务器模型与软件设计
2.1 引言
2.2 动机
2.3 术语和概念
2.4 小结
深入研究
习题

第3章 客户-服务器软件中的并发处理
3.1 引言
3.2 网络中的并发
3.3 服务器中的并发
3.4 术语和概念
3.5 一个创建并发进程的例子
3.6 执行新的代码
3.7 上下文切换和协议软件设计
3.8 并发和异步I/O
3.9 小结
深入研究
习题

第4章 协议的程序接口
4.1 引言
4.2 不精确指明的协议软件接口
4.3 接口功能
4.4 概念性接口的规约
4.5 系统调用
4.6 网络通信的两种基本方法
4.7 LINIX中提供的基本I/O功能
4.8 将Linux I/O用于TCP/IP
4.9 小结
深入研究
习题

第5章 套接字API
5.1 引言
5.2 Berkeley套接字
5.3 指明一个协议接口
5.4 套接字的抽象
5.5 指明端点地址
5.6 类属地址结构
5.7 套接字API中的主要系统调用
5.8 用于整数转换的实用例程
5.9 在程序中使用套接字调用
5.10 套接字调用的参数所使用的符号常量
5.11 小结
深入研究
习题

第6章 客户软件设计中的算法和问题
6.1 引言
6.2 不是研究细节而是学习算法
6.3 客户体系结构
6.4 标识服务器的位置
6.5 分析地址参数
6.6 查找域名
6.7 由名字查找某个熟知端口
6.8 端口号和网络字节顺序
6.9 由名字查找协议
6.10 TCP客户算法
6.11 分配套接字
6.12 选择本地协议端口号
6.13 选择本地IP地址中的一个基本问题
6.14 将TCP套接字连接到某个服务器
6.15 使用TCP与服务器通信
6.16 从TCP连接中读取响应
6.17 关闭TCP连接
6.18 UDP客户的编程
6.19 连接的和非连接的UDP套接字
6.20 对UDP使用connect
6.21 使用UDP与服务器通信
6.22 关闭使用UDP的套接字
6.23 对UDP的部分关闭
6.24 关于UDP不可靠性的警告
6.25 小结
深入研究
习题

第7章 客户软件举例
7.1 引言
7.2 小例子的重要性
7.3 隐藏细节
7.4 针对客户程序的过程库例子
7.5 connectTCP的实现
7.6 connectUDP的实现
7.7 构成连接的过程
7.8 使用例子库
7.9 DAYTIME服务
7.10 针对DAYTIME的TCP客户实现
7.11 从TCP连接中进行读
7.12 TIME服务
7.13 访问TIME服务
7.14 精确时间和网络时延
7.15 针对TIME服务的UDP客户
7.16 ECHO服务
7.17 针对ECHO服务的TCP客户
7.18 针对ECHO服务的UDP客户
7.19 小结
深入研究
习题

第8章 服务器软件设计的算法和问题
8.1 引言
8.2 概念性的服务器算法
8.3 并发服务器和循环服务器
8.4 面向连接的和无连接的访问
8.5 传输协议的语义
8.6 选择传输协议
8.7 面向连接的服务器
8.8 无连接的服务器
8.9 故障.可靠性和无状态
8.10 优化无状态服务器
8.11 四种基本类型的服务器
8.12 请求处理时间
8.13 循环服务器的算法
8.14 一种循环的面向连接的服务器的算法
8.15 用INADDR_ANY绑定熟知端口
8.16 将套接字置于被动模式
8.17 接受连接并使用这些连接
8.18 循环的无连接的服务器的算法
8.19 在五连接的服务器中构造应答
8.20 并发服务器的算法
8.21 主线程和从线程
8.22 并发的无连接的服务器的算法
8.23 并发的面向连接服务器的算法
8.24 服务器并发性的实现
8.25 把单独的程序作为从进程来使用
8.26 使用单线程获得表面上的并发性
8.27 各服务器类型所适用的场合
8.28 服务器类型小结
8.29 重要问题——服务器死锁
8.30 其他的实现方法
8.31 小结
深入研究
习题

第9章 循环的无连接服务器(UDP)
9.1 引言
9.2 创建被动套接字
9.3 进程结构
9.4 TIME服务器举例
9.5 小结
深入研究
习题

第10章 循环的面向连接的服务器(TCP)
10.1 引言
10.2 分配被动的TCP套接字
10.3 用于DAYTIME服务的服务器
10.4 进程结构
10.5 DAYTIME服务器举例
10.6 关闭连接
10.7 连接终止和服务器的脆弱性
10.8 小结
深入研究
习题

第11章 并发的面向连接的服务器(TCP)
11.1 引言
11.2 并发ECHO
11.3 循环与并发实现的比较
11.4 进程结构
11.5 并发ECHO服务器举例
11.6 清除游离(errant)进程
11.7 小结
深入研究
习题

第12章 将线程用于并发(TCP)
12.1 引言
12.2 Linux线程概述
12.3 线程的优点
12.4 线程的缺点
12.5 描述符.延迟和退出
12.6 线程退出
12.7 线程协调和同步
12.8 使用线程的服务器实例
12.9 监控
12.10 小结
深入研究
习题

第13章 单线程并发服务器(TCP)
13.1 引言
13.2 服务器中的数据驱动处理
13.3 用单线程进行数据驱动处理
13.4 单线程服务器的线程结构
13.5 单线程ECHO服务器举例
13.6 小结
深入研究
习题

第14章 多协议服务器(TCP, UDP)
14.1 引言
14.2 减少服务器数量的动机
14.3 多协议服务器的设计
14.4 进程结构
14.5 多协议DAYTIME服务器的例子
14.6 共享代码的概念
14.7 并发多协议服务器
14.8 小结
深入研究
习题

第15章 多服务服务器(TCP, UDP)
15.1 引言
15.2 合并服务器
15.3 无连接的,多服务服务器的设计
15.4 面向连接的, 多服务服务器的设计
15.5 并发的, 面向连接的, 多服务服务器
15.6 单线程的, 多服务服务器的实现
15.7 从多服务服务器调用单独的程序
15.8 多服务 ,多协议设计
15.9 多服务服务器的例子
15.10 静态的和动态的服务器配置
15.11 UNIX超级服务器, inetd
15.12 inetd服务器的例子
15.13 服务器的几种变形清单
15.14 小结
深入研究
习题

第16章 服务器并发性的统一 高效管理
16.1 引言
16.2 在循环设计和并发设计间选择
16.3 并发等级
16.4 需求驱动的并发
16.5 并发的代价
16.6 额外开销和时延
16.7 小时延可能出麻烦
16.8 从线程/进程预分配
16.9 延迟的从线程/进程分配
16.10 两种技术统一的基础
16.11 技术的结合
16.12 小结
深入研究
习题

第17章 客户进程中的并发
17.1 引言
17.2 并发的优点
17.3 用控制的动机
17.4 与多个服务器的并发联系
17.5 实现并发客户
17.6 单线程实现
17.7 使用ECHO的并发客户例子
17.8 并发客户的执行
17.9 例子代码中的并发性
17.10 小结
习题

第18章 运输层和应用层的隧道技术
18.1 引言
18.2 多协议环境
18.3 混合网络技术
18.4 动态电路分配
18.5 封装和隧道技术
18.6 通过IP互联网的隧道技术
18.7 客户和服务器之间的应用级隧道技术
18.8 隧道技术.封装和电话拨号线
18.9 小结
深入研究
习题

第19章 应用级网关
19.1 引言
19.2 在受约束的环境中的客户和服务器
19.3 使用应用网关
19.4 通过邮件网关互操作
19.5 邮件网关的实现
19.6 应用网关与隧道技术的比较
19.7 应用网关和有限因特网连接
19.8 为解决安全问题而使用的应用网关
19.9 应用网关和额外跳问题..
19.10 应用网关举例
19.11 一个应用网关的实现
19.12 应用网关的代码
19.13 网关交换的例子
19.14 使用fred和.forward或sloeal文件
19.15 通用的应用网关
19.16 SLIBP的运行
19.17 SLIRP如何处理连接
19.18 IP寻址和SLIRP
19.19 小结
深入研究
习题

第20章 外部数据表示(XDR)
20.1 引言
20.2 数据表示
20.3 N平方转换问题
20.4 网络标准字节顺序
20.5 外部数据表示的事实上的标准
20.6 XDR数据类型
20.7 隐含类型
20.8 使用XDR的软件支持
20.9 XDR库例程
20.10 一次一片地构造报文
20.11 XDB库中的转换例程
20.12 XDR流.I/O和TCP
20.13 记录、记录边界和数据报I/O
20.14 小结
深入研究
习题

第21章 远程过程调用(RPC)的概念
21.1 引言
21.2 远程过程调用模型
21.3 构建分布式程序的两种模式
21.4 常规过程调用的概念性模型
21.5 过程模型的扩充
21.6 常规过程调用的执行和返回
21.7 分布式系统中的过程模型
21.8 客户-服务器和RPC之间的类比
21.9 作为程序的分布式计算
21.10 Sun Microsystems的远程过程调用定义
21.11 远程程序和过程
21.12 减少参数的数量
21.13 标识远程程序和过程
21.14 适应远程程序的多个版本
21.15 远程程序中的互斥
21.16 通信语义
21.17 至少一次语义
21.18 RPC重传
21.19 将远程程序映射到协议端口
21.20 动态端口映射
21.21 RPC端口映射器算法
21.22 ONC RPC的报文格式
21.23 对远程过程进行参数排序
21.24 鉴别
21.25 RPC报文表示的例子
21.26 UNIX鉴别字段的例子
21.27 小结
深入研究
习题

第22章 分布式程序的生成(rpcgen的概念)
22.1 引言
22.2 使用远程过程调用
22.3 支持RPC的编程工具
22.4 将程序划分成本地过程和远程过程
22.5 为RPC增加代码
22.6 stub过程
22.7 多个远程过程和分派
22.8 客户端的stub过程的名字
22.9 使用rpcgen生成分布式程序
22.10 rpcgen输出和接口过程
22.11 rpcgen的输入和输出
22.12 使用rpcgen构建客户和服务器
22.13 小结
深入研究
习题

第23章 分布式程序的生成(rpcgen的例子)
23.1 引言
23.2 说明rpcgen的例子
23.3 查找字典
23.4 分布式程序的八个步骤
23.5 步骤1:构建常规应用程序
23.6 步骤2:将程序划分成两部分
23.7 步骤3:创建rpcgen规约
23.8 步骤4:运行rpcgen
23.9 rpcgen产生的, h文件
23.10 rpcgen产生的XDR转换文件
23.11 rpcgen产生的客户代码
23.12 rpcgen产生的服务器代码
23.13 步骤5:编写stub接口过程
23.14 步骤6:编译和链接客户程序
23.15 步骤7:编译和链接服务器程序
23.16 步骤8:启动服务器和执行客户
23.17 使用make实用程序
23.18 小结
深入研究
习题

第24章 网络文件系统(NFS)的概念
24.1 引言
24.2 远程文件存取和传送
24.3 对远程文件的操作
24.4 异构计算机之间的文件存取
24.5 无状态服务器
24.6 NFS和UNIX的文件语义
24.7 UNIX文件系统的回顾
24.8 NFS下的文件
24.9 NFS的文件类型
24.10 NFS文件模式
24.11 NFS文件属性
24.12 NFS客户和服务器
24.13 NFS客户操作
24.14 NFS客户与UNIX系统
24.15 NFS安装
24.16 文件句柄
24.17 句柄取代路径名
24.18 无状态服务器的文件定位
24.19 对目录的操作
24.20 无状态地读目录
24.21 NFS服务器中的多个分层结构
24.22 安装(mount)协议
24.23 NFS的传输协议
24.24 小结
深入研究
习题

第25章 网络文件系统协议(NFS, Mount)
25.1 引言
25.2 用BPC定义协议
25.3 用数据结构和过程定义协议
25.4 NFS常数.类型和数据声明
25.5 NFS过程
25.6 NFS操作的语义
25.7 安装协议
25.8 安装协议中的过程
25.9 安装操作的语义
25.10 NFS和安装鉴别
25.11 文件加锁
25.12 NFS第3版与第4版之间的变化
25.13 小结
深入研究
习题

第26章 TELNET客户(程序结构)
26.1 引言
26.2 概述
26.3 TELNET客户算法
26.4 Linux中的终端I/O
26.5 建立终端模式
26.6 用于保存状态的全局变量
26.7 在退出之前恢复终端模式
26.8 客户挂起与恢复
26.9 有限状态机的规约
26.10 在TELNET数据流中嵌入命令
26.11 选项协商
26.12 请求/提供的对称性
26.13 TELNET字符定义
26.14 针对来自服务器数据的有限状态机
26.15 在各种状态之间转移
26.16 有限状态机的实现
26.17 压缩的有限状态机表示
26.18 在运行时维持压缩表示
26.19 压缩表示的实现
26.20 构造有限状态机转移矩阵
26.21 套接字输出有限状态机
26.22 套接字输出有限状态机的相关定义
26.23 选项子协商有限状态机
26.24 选项子协商有限状态机的相关定义
26.25 有限状态机初始化
26.26 TELNET客户的参数
26.27 TELNET客户的核心
26.28 主有限状态机的实现
26.29 小结
深入研究
习题

第27章 TELNET客户(实现细节)
27.1 引言
27.2 有限状态机动作过程
27.3 记录选项请求的类型
27.4 完成空操作
27.5 对回显选项的WILL/WONT做出响应
27.6 对未被支持的选项的WILL/WONT做出响应
27.7 对no go-ahead选项的WILL/WONT做出响应
27.8 生成用于二进制传输的DO/DONT
27.9 对未被支持的选项的DO/DONT做出响应
27.10 对传输二进制选项的DO/DONT做出响应
27.11 对终端类型选项的DO/DONT做出响应
27.12 选项子协商
27.13 发送终端类型信息
27.14 终止子协商
27.15 向服务器发送字符
27.16 显示在用户终端上出现的传入数据
27.17 使用termeap控制用户终端
27.18 将数据块写到服务器
27.19 与客户进程交互
27.20 对非法命令做出响应
27.21 脚本描述文件
27.22 脚本描述的实现
27.23 初始化脚本描述
27.24 收集脚本文件名的字符
27.25 打开脚本文件
27.26 终止脚本描述
27.27 打印状态信息
27.28 小结
深入研究
习题

第28章 流式音频和视频传输(RTP概念和设计)
28.1 引言
28.2 流式传输服务
28.3 实时交付
28.4 抖动的协议补偿
28.5 重传.丢失和恢复
28.6 实时传输协议
28.7 流的转换和混合
28.8 迟延回放和抖动缓存
28.9 RTP控制协议(RTCP)
28.10 多种流同步
28.11 RTP传输和多对多传输
28.12 会话、流、协议端口和分用
28.13 编码的基本方法
28.14 RTP软件的概念性组织
28.15 进程/线程结构
28.16 API的语义
28.17 抖动缓存的设计和重新缓存
28.18 事件处理
28.19 回放异常及时间戳的复杂性
28.20 实时库例子的大小
28.21 MP3播放器的例子
28.22 小结
深入研究
习题

第29章 流式音频和视频传输(RTP实现示例)
29.1 引言
29.2 集成实现
29.3 程序结构
29.4 RTP定义
29.5 时间值的处理
29.6 RTP序列空间的处理
29.7 RTP分组队列的处理
29.8 RTP输入处理
29.9 为RTCP保存统计信息
29.10 RTP初始化
29.11 RTCP的定义
29.12 接收RTCP发送方的报告
29.13 产生BTCP接收方的报告
29.14 创建RTCP的首部
29.15 RTCP时延的计算
29.16 RTCP Bye(再见)报文的产生
29.17 集成实现的大小
29.18 小结
深入研究
习题

第30章 Linux服务器中的实用技巧和技术
30.1 引言
30.2 后台操作
30.3 编写在后台运行的服务器
30.4 打开描述符和继承
30.5 对服务器编程以关闭所继承的描述符
30.6 来自控制TTY的信号
30.7 对服务器编程以改变它的控制TTY
30.8 转移到一个安全的和已知的目录
30.9 对服务器编程以改变目录
30.10 Linux umask
30.11 对服务器编程以设置其umask
30.12 进程组,
30.13 对服务器编程以设置其进程组
30.14 标准I/O描述符
30.15 对服务器编程以打开标准描述符
30.16 服务器互斥
30.17 对服务器编程以避免多个副本
30.18 记录服务器的进程ID
30.19 对服务器编程以记录其进程ID
30.20 等待一个子进程退出
30.21 对服务器编程以等待每个子进程退出
30.22 外来信号
30.23 对服务器编程以忽略外来信号
30.24 使用系统日志设施
30.25 小结
深入研究
习题

第31章 客户-服务器系统中的死锁和资源缺乏
31.1 引言
31.2 死锁的定义
31.3 死锁检测的难度
31.4 避免死锁
31.5 客户和服务器间的死锁
31.6 在单个交互中避免死锁
31.7 一组客户和一个服务器之间的资源缺乏
31.8 忙连接和资源缺乏
31.9 避免阻塞的操作
31.10 进程、连接和其他限制
31.11 客户和服务器的循环
31.12 用文档确认依赖性
31.13 小结
习题
附录1 系统调用与套接字使用的库例程
附录2 Linux文件和套接字描述符的操作
参考文献

序言

Douglas E.Comer博士的系列著作——《用TCP/IP进行网际互联》是一套令人瞩目的丛书。能向开放源码(open source)读者介绍该书的第三卷,对我来说实在是荣幸之至。
开放源码和TCP/IP的历史是紧密相连的.没有网络把你和合作者连接起来,就不能进行协作!而且,最早一批开放源码软件就有TCP/IP协议的实现。我记得在20世纪80年代初,“开放源码”还不像现在那样受媒体青睐,理解网络体系结构和实现的研究者屈指可数,而Douglas就是其中的佼佼者。

文摘

插图:



第1章 引言和概述
1.2 为分布式环境设计应用程序
随着网络技术已日渐成为所有软件的一部分,程序员必须掌握这样的基础知识:设计和实现分布式应用程序所用到的原则和技术。我们将会看到,分布式计算的一个主要目标就是透明性——所产生的分布式程序的行为应尽可能与同样程序的非分布版本一样。因此,分布式计算的目标就是提供一个环境,该环境隐藏了计算机和服务的地理位置,使它们看上去就像是在本地一样。

喜欢用TCP/IP进行网际互连:客户-服务器编程与应用(Linux/POSIX套接字版)(第3卷) [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务

热点排行