红联Linux门户
Linux帮助

TCP/IP网络互连第3卷:客户/服务器编程及应用:Linux/POSIX Sockets版(英文版)

发布时间:2008-01-30 11:53:58来源:红联作者:zidscen
本书讨论了客户/服务器编程和应用,讲述了构筑所有分布式计算系统的客户/服务器计算模型的基本概念,内容包括各种不同的服务器设计方法,以及用来构造客户/服务器的各种工具和技术,包括远程调用RPC。书中包括了用来说明各种设计和工具的运行程序示例的源代码。这本书是基于Linux/POSIX Sockets版本编写的,组织结构合理,易于阅读,是一本关于TCP/IP网络互连的既经典又可读性极强的书,是任何一个想要了解网络互连技术的人所必不可少的参考书。

本书适合作为高等院校计算机专业网络相关课程的教材,也适合各类网络技术开发人员阅读。

购买地址 作  者: [美]科默,[美]史蒂文斯 著
出 版 社: 人民邮电出版社
出版时间: 2002-1-1
字  数: 766000
版  次: 1
页  数: 599
印刷时间: 2002-1

[ 本帖最后由 zidscen 于 2008-1-30 11:58 编辑 ]
文章评论

共有 1 条评论

  1. zidscen 于 2008-01-30 11:53:58发表:

    目录
    Chapter 1 Introduction And Overview

    1.1 Internet Applications Using TCP/IP
    1.2 Designing Applications For A Distributed Environment
    1.3 Standard And Nonstandard Application Protocols
    1.4 An Example Of Standard Application Protocol Use
    1.5 An Example TELNET Connection
    1.6 Using TELNET To Access An Alternative Service
    1.7 Application Protocols And Software Flexibility
    1.8 Viewing Services From The Provider's Perspective
    1.9 The Remainder Of This Text
    1.10 Summary

    Chapter 2 The Client Server Model And Software Design

    2.1 Introduction
    2.2 Motivation
    2.3 Terminology And Concepts
    2.3.1 Clients And Servers
    2.3.2 Privilege And Complexity
    2.3.3 Standard Vs. Nonstandard Client Software
    2.3.4 Parameterization Of Clients
    2.3.5 Connectionless Vs. Connection-Oriented Servers
    2.3.6 Stateless Vs. Stateful Servers
    2.3.7 A Stateless File Server Example
    2.3.8 A Stateful File Server Example
    2.3.9 Identifying A Client
    2.3.10 Statelessness Is A Protocol Issue
    2.3.11 Servers As Clients
    2.4 Summary

    Chapter 3 Concurrent Processing In Client-Server Software

    3.1 Introduction
    3.2 Concurrency In Networks
    3.3 Concurrency In Servers
    3.4 Terminology And Concepts
    3.4.1 The Process Concept
    3.4.2 Sharing Of Local And Global Variables
    3.4.3 Procedure Calls
    3.5 An Example Of Concurrent Process Creation
    3.5.1 A Sequential C Example
    3.5.2 A Concurrent Version
    3.5.3 Timeslicing
    3.5.4 Singly-Threaded Process Assumption
    3.5.5 Making Processes Diverge
    3.6 Executing New Code
    3.7 Context Switching And Protocol Software Design
    3.8 Concurrency And Asynchronous I/O
    3.9 Summary

    Chapter 4 Application Interface To Protocols

    4.1 Introduction
    4.2 Loosely Specified Protocol Software Interface
    4.2.1 Advantages And Disadvantages
    4.3 Interface Functionality
    4.4 Conceptual Interface Specification
    4.5 System Calls
    4.6 Two Basic Approaches To Network Communication
    4.7 The Basic I/O Functions Available In Linux
    4.8 Using Linux I/O With TCP/IP
    4.9 Summary

    Chapter 5 The Socket API

    5.1 Introduction
    5.2 Berkeley Sockets
    5.3 Specifying A Protocol Interface
    5.4 The Socket Abstraction
    5.4.1 Socket Descriptors And File Descriptors
    5.4.2 System Data Structures For Sockets
    5.4.3 Making A Socket Active Or Passive
    5.5 Specifying An Endpoint Address
    5.6 A Generic Address Structure
    5.7 Major System Calls In The Socket API
    5.7.1 The Socket Call
    5.7.2 The Connect Call
    5.7.3 The Send Call
    5.7.4 The Recv Call
    5.7.5 The Close Call
    5.7.6 The Bind Call
    5.7.7 The Listen Call
    5.7.8 The Listen Call
    5.7.9 Using Read And Write With Sockets
    5.7.10 Summary Of Socket Calls
    5.8 Utility Routines For Integer Conversion
    5.9 Using Socket Calls In A Program
    5.10 Symbolic Constants For Socket Call Parameters
    5.11 Summary

    Chapter 6 Algorithms And Issues In Client Software Design

    6.1 Introduction
    6.2 Learning Algorithms Instead Of Details
    6.3 Client Architecture
    6.4 Identifying The Location Of A Server
    6.5 Parsing An Address Argument
    6.6 Looking Up A Domain Name
    6.7 Looking Up A Well-Known Port By Name
    6.8 Port Numbers And Network Byte Order
    6.9 Looking Up A Protocol By Name
    6.10 The TCP Client Algorithm
    6.11 Allocation A Socket
    6.12 Choosing A Local Protocol Port Number
    6.13 A Fundamental Problem In Choosing A Local IP Address
    6.14 Connecting A TCP Socket To A Server
    6.15 Communicating With The Server Using TCP
    6.16 Receiving A Response From A TCP Connection
    6.17 Closing A TCP Connection
    6.17.1 The Need For Partial Close
    6.17.2 A Partial Close Operation
    6.18 Programming A UDP Client
    6.19 Connected And Unconnected UDP Sockets
    6.20 Using Connect With UDP
    6.21 Communicating With A Server Using UDP
    6.22 Closing A Socket That Uses UDP
    6.23 Partial Close For UDP
    6.24 A Warning About UDP Unreliability
    6.25 Summary

    Chapter 7 Example Client Software

    7.1 Introduction
    7.2 The Importance Of Small Examples
    7.3 Hiding Details
    7.4 An Example Procedure Library For Client Programs
    7.5 Implementation Of ConnectTCP
    7.6 Implementation Of ConnectUDP
    7.7 A Procedure That Forms Connections
    7.8 Using The Example Library
    7.9 The DAYTIME Service
    7.10 Implementation Of A TCP Client For DAYTIME
    7.11 Reading From A TCP Connection
    7.12 The TIME Service
    7.13 Accessing The TIME Service
    7.14 Accurate Times And Network Delays
    7.15 A UDP Client For The TIME Service
    7.16 The ECHO Service
    7.17 A TCP Client For The ECHO Service
    7.18 A UDP Client For The ECHO Service
    7.19 Summary

    Chapter 8 Algorithms And Issues In Server Software Design

    8.1 Introduction
    8.2 The Conceptual Server Algorithm
    8.3 Concurrent Vs. Iterative Servers
    8.4 Connection-Oriented Vs. Connectionless Access
    8.5 Transport Protocol Semantics
    8.5.1 TCP Semantics
    8.5.2 UDP Semantics
    8.6 Choice Of Transport
    8.7 Connection-Oriented Servers
    8.8 Connectionless Servers
    8.9 Failure,Reliability,And Statelessness
    8.10 Optimizing Stateless Servers
    8.11 Four Basic Types Of Servers
    8.12 Request Processing Time
    8.13 Iterative Server Algorithms
    8.14 An Iterative,Connection-Oriented Server Algorithm
    8.15 Binding To A Well-Known Address Using INADDR_ANY
    8.16 Placing The Socket In Passive Mode
    8.17 Accepting Connections And Using Them
    8.18 An Iterative,Connectionless Server Algorithm
    8.19 Forming A Reply Address In A Connectionless Server
    8.20 Concurrent Server Algorithms
    8.21 Master And Slaves
    8.22 A Concurrent,Connectionless Server Algorithm
    8.23 A Concurrent,Connection-Oriented Server Algorithm
    8.24 Implementations Of Server Concurrency
    8.25 Using Separate Programs As Slaves
    8.26 Apparent Concurrency Using A Single Thread
    8.27 When To Use Each Server Type
    8.28 A Summary of Server Types
    8.29 The Important Problem Of Server Deadlock
    8.30 Alternative Implementations
    8.31 Summary

    Chapter 9 Iterative,Connectionless Servers(UDP)

    9.1 Introduction
    9.2 Creating A Passive Socket
    9.3 Process Structure
    9.4 An Example TIME Server
    9.5 Summary

    Chapter 10 Iterative,Connection-Oriented Servers(TCP)

    10.1 Introduction
    10.2 Allocation A Passive TCP Socket
    10.3 A Server For The DAYTIME Service
    10.4 Process Structure
    10.5 An Example DAYTIME Server
    10.6 Closing Connections
    10.7 Connection Termination And Server Vulnerability
    10.8 Summary

    Chapter 11 Concurrent,Connection-Oriented Servers(TCP)

    11.1 Introduction
    11.2 EHO Service
    11.3 Iterative Vs. Concurrent Implementations
    11.4 Process Structure
    11.5 An Example Concurrent ECHO Server
    11.6 Cleaning Up Errant Processes
    11.7 Summary

    Chapter 12 Using Threads For Concurrency(YCP)

    12.1 Introduction
    12.2 Overview Of Linux Threads
    12.3 Advantages Of Threads
    12.5 Descriptors,Delay,And Exit
    12.6 Thread Exit
    12.7 Thread Coordination And Synchronization
    12.7.1 Mutex
    12.7.2 Semaphore
    12.7.3 Condition Variable
    12.8 An Example Server Using Threads
    12.9 Monitor And Control
    12.10 Summary

    Chapter 13 Single-Thread,Concurrent Servers(TCP)

    13.1 Introduction
    13.2 Data-driven Processing In a Server
    13.3 Data-Driven Processing With A Single Thread
    13.4 Process Structure Of A Single-Thread Server
    13.5 An Example Single-Thread ECHO Server
    13.6 Summary

    Chapter 14 Multiprotocol Servers(TCP,UDP)

    14.1 Introduction
    14.2 The Motivation For Reducing The Number Of Servers
    14.3 Multiprotocol Server Design
    14.4 Process Structure
    14.5 An Example Multiprotocol DAYTIME Server
    14.6 The Concept Of Shared Code
    14.7 Concurrent Multiprotocol Servers
    14.8 Summary

    Chapter 15 Multiservice Servers(TCP,UDP)

    15.1 Introduction
    15.2 Consolidation Servers
    15.3 A Connectionless,Multiservice Server Design
    15.4 A Connection-Oriented,Multiservice Server Design
    15.5 A Concurrent,Connection-Oriented,Multiservice Server
    15.6 A Single-Thread,Multiservice Server Implementation
    15.7 Invoking Separate Programs From A Multiservice Server
    15.8 Multiservice,Multiprotocol Designs
    15.9 An Example Multiservice Server
    15.10 Static and Dynamic Server Configuration
    15.11 The Super Server,Inetd
    15.12 An Example Inetd Server
    15.13 A List Of Server Variations
    15.14 Summary

    Chapter 16 Uniform,Efficient Management Of Server Concurrency

    16.1 Introduction
    16.2 Choosing Between An Iterative And A Concurrent Design
    16.3 Level Of Concurrency
    16.4 Demand-Driven Concurrency
    16.5 The Cost Of Concurrency
    16.6 Overhead And Delay
    16.7 Small Delays Can Matter
    16.8 Slave Preallocation
    16.8.1 Preallocation In Linux
    16.8.2 Preallocation In A Connection-Oriented Server
    16.8.3 Mutex,File Locking,and Concurrent Calls To Accept
    16.8.4 Preallocation In A Connectionless Server
    16.8.5 Preallocation,Bursty Traffic,And NFS
    16.8.6 Preallocation On A Multiprocessor
    16.9 Delayed Slave Allocation
    16.10 The Uniform Basis For Both Techniques
    16.11 Combining Techniques
    16.12 Summary

    Chapter 17 Concurrency In Clients

    17.1 Introduction
    17.2 The Advantages Of Concurrency
    17.3 The Motivation For Exercising Control
    17.4 Concurrent Contact With Multiple Servers
    17.5 Implementing Concurrent Clients
    17.6 Single-Thread Implementations
    17.7 An Example Concurrent Client That Uses ECHO
    17.8 Execution Of The Concurrent Client
    17.9 Concurrency In The Example Code
    17.10 Summary

    Chapter 18 Tunneling At The Transport And Application Levels

    18.1 Introduction
    18.2 Multiprotocol Environments
    18.3 Mixing Network Technologies
    18.4 Dynamic Circuit Allocation
    18.5 Encapsulation And Tunneling
    18.6 Tunneling Through An IP Internet
    18.7 Application-Level Tunneling Between Clients And Servers
    18.8 Tunneling,Encapsulation,And Dialup Phone Lines
    18.9 Summary

    Chapter 19 Application Level Gateways

    19.1 Introduction
    19.2 Clients And Servers In Constrained Environments
    19.2.1 The Reality Of Limited Access
    19.2.2 Computers With Limited Functionality
    19.2.3 Connectivity Constraints That Arise From Security
    19.3 Using Application Gateways
    19.4 Interoperability Through A Mail Gateway
    19.5 Implementation Of A Mail Gateway
    19.6 A Comparison Of Application Gateways And Tunneling
    19.7 Application Gateways And Limited Internet Connectivity
    19.8 Application Gateways Used For Security
    19.9 Application Gateways And The Extra Hop Problem
    19.10 An Example Application Gateway
    19.11 Implementation Of An Application Gateway
    19.12 Code For The Application Gateway
    19.13 An Example Gateway Exchange
    19.14 Using Rfcd With .forward Or Slocal
    19.15 A General-Purpose Application Gateway
    19.16 Operation Of SLIRP
    19.17 How SLIRP Handles Connections
    19.18 IP Addressing And SLIRP
    19.19 Summary

    Chapter 20 External Data Representation(XDR)

    20.1 Introduction
    20.2 Representations Of Data
    20.3 Asymmetric Conversion And The N-Squared Problem
    20.4 Network Standard Byte Order
    20.5 A De Facto Standard External Data Representation
    20.6 XDR Data Types
    20.7 Implicit Types
    20.8 Software Support For Using XDR
    20.9 XDR Library Routines
    20.10 Building A Message One Piece At A time
    20.11 Conversion Routines In The XDR Library
    20.12 XDR Streams,I/O,and TCP
    20.13 Records,Record Boundaries,And Datagram I/O
    20.14 Summary

    Chapter 21 Remote Procedure Call Concept(RPC)

    21.1 Introduction
    21.2 Remote Procedure Call Model
    21.3 Two Paradigms For Building Distributed Programs
    21.4 A Conceptual Model For Conventional Procedure Calls
    21.5 An Extension Of the Procedural Model
    21.6 Execution Of Conventional Procedure Call And Return
    21.7 The Procedural Model In Distributed Systems
    21.8 Analogy Between Client-Server And RPC
    21.9 Distributed Computation As A Program
    21.10 Sun Microsystems' Remote Procedure Call Definition
    21.11 Remote Programs And Procedures
    21.12 Reducing The Number Of Arguments
    21.13 Identifying Remote Programs And Procedures
    21.14 Accommodating Multiple Versions Of A Remote Program
    21.15 Mutual Exclusion For Procedures In A Remote Program
    21.16 Communication Semantics
    21.17 At Least Once Semantics
    21.18 RPC Retransmission
    21.19 Mapping A Remote Program To A Protocol Port
    21.20 Dynamic Port Mapping
    21.21 RPC Port Mapper Algorithm
    21.22 ONC RPC Message Format
    21.23 Marshaling Arguments For A Remote Procedure
    21.24 Authentication
    21.25 An Example Of RPC Message Representation
    21.26 An Example Of The UNIX Authentication Field
    21.27 Summary

    Chapter 22 Distributed Program Generation(Rpcgen Concept)

    22.1 Introduction
    22.2 Using Remote Procedure Calls
    22.3 Programming Mechanisms To Support RPC
    22.4 Dividing A Program Into Local And Remote Procedures
    22.5 Adding Code For RPC
    22.6 Stub Procedures
    22.7 Multiple Remote Procedures And Dispatching
    22.8 Name Of The Client-Side Stub Procedure
    22.9 Using Rpcgen To Generate Distributed Programs
    22.10 Rpcgen Output And Interface Procedures
    22.11 Rpcgen Input And Output
    22.12 Uaing Rpcgen To Build A Client And Server
    22.13 Summary

    Chapter 23 Distributed Program Generation(Rpcgen Example)

    23.1 Introduction
    23.2 An Example To Illustrate Rpcgen
    23.3 Dictionary Operations
    23.4 Eight Steps To A Distributed Application
    23.5 Step1:Build A Conventional Application Program
    23.6 Step2:Divide The Program Into Two Parts
    23.7 Step3:Create An Rpcgen Specification
    23.8 Step4:Run Rpcgen
    23.9 The .h File Produced By Rpcgen
    23.10 The XDR Conversion File Produced By Rpcgen
    23.11 The Client Code Produced By Rpcgen
    23.12 The Server Code Produced By Rpcgen
    23.13 Step5:Write Stub Interface Procedures
    23.13.1 Client-Side Interface Routines
    23.13.2 Server-Side Interface Routines
    23.14 Step6:Compile And Link The Client Program
    23.15 Step7:Compile And Link The Server Program
    23.16 Step8:Start The Server And Execute The Client
    23.17 Using The Make Utility
    23.18 Summary

    Chapter 24 Network File System Concepts(NFS)

    24.1 Introduction
    24.2 Remote File Access Vs. Transfer
    24.3 Operations On Remote Files
    24.4 File Access Among Heterogeneous Computers
    24.5 Stateless Servers
    24.6 NFS And UNIX File Semantics
    24.7 Review Of The UNIX File System
    24.7.1 Basic Definitions
    24.7.2 A Byte Sequence Without Record Boundaries
    24.7.3 A File's Owner And Group Identifiers
    24.7.4 Protection And Group Identifiers
    24.7.5 The Open-Read-Write-Close Paradigm
    24.7.6 Data Transfer
    24.7.7 Permission To Search A Directory
    24.7.8 Random Access
    24.7.9 Seeking Beyond The End Of File
    24.7.10 File Names And Paths
    24.7.11 Semantics Of Write During Concurrent Access
    24.7.12 File Names And Paths
    24.7.13 Inode:Information Stored With A File
    24.7.14 Stat Operation
    24.7.15 The File Naming Mechanism
    24.7.16 File System Mounts
    24.7.17 File Name Resolution
    24.7.18 Symbolic Links
    24.8 Files Under NFS
    24.9 NFS File Types
    24.10 NFS File Modes
    24.11 NFS File Attributes
    24.12 NFS Client And Server
    24.13 NFS Client Operation
    24.14 NFS Client And UNIX Systems
    24.15 NFS Mounts
    24.16 File Handle
    24.17 Handles Replace Path Names
    24.18 File Positioning With A Stateless Server
    24.19 Operations On Directories
    24.20 Reading A Directory Statelessly
    24.21 Multiple Hierarchies In An NFS Server
    24.22 The Mount Protocol
    24.23 Transport Protocols For NFS
    24.24 Summary

    Chapter 25 Network File System Protocols(NFS,Mount)

    25.1 Introduction
    25.2 Using RPC To Define A Protocol
    25.3 Defining A Protocol With Data Structures And Procedures
    25.4 NFS Constant,Type,And Data Declarations
    25.4.1 NFS Constants
    25.4.2 NFS Typedef Declarations
    25.4.3 NFS Data Structures
    25.5 NFS Procedures
    25.6 Semantics Of NFS Operations
    25.6.1 NFSPROC3_NULL(Procedure0)
    25.6.2 NFSPROC3_GETATTR(Procedure1)
    25.6.3 NFSPROC3_SETATTR(Procedure2)
    25.6.4 NFSPROC3_LOOKUP(Procedure3)
    25.6.5 NFSPROC3_ACCESS(Procedure4)
    25.6.6 NFSPROC3_READLINK(Procedure5)
    25.6.7 NFSPROC3_READ(Procedure6)
    25.6.8 NFSPROC3_WRITE(Procedure7)
    25.6.9 NFSPROC3_CREATE(Procedure8)
    25.6.10 NFSPROC3_MKDIR(Procedure9)
    25.6.11 NFSPROC3_SYMLINK(Procedure10)
    25.6.12 NFSPROC3_MKNOD(Procedure11)
    25.6.13 NFSPROC3_REMOVE(Procedure12)
    25.6.14 NFSPROC3_RMDIR(Procedure13)
    25.6.15 NFSPROC3_RENAME(Procedure14)
    25.6.16 NFSPROC3_LINK(Procedure15)
    25.6.17 NFSPROC3_READDIR(Procedure16)
    25.6.18 NFSPROC3_READDIRPLUS(Procedure17)
    25.6.19 NFSPROC3_FSSTAT(Procedure18)
    25.6.20 NFSPROC3_FSINFO(Procedure19)
    25.6.21 NFSPROC3_PATHCONF(Procedure20)
    25.6.22 NFSPROC3_COMMIT(Procedure21)
    25.7 The Mount Protocol
    25.7.1 Mount Constant Definitions
    25.7.2 Mount Type Definitions
    25.7.3 Mount Data Structures
    25.8 Procedures In The Mount Protocol
    25.9 Semantics of Mount Operations
    25.9.1 MOUNTPROC3_NULL(Procedure0)
    25.9.2 MOUNTPROC3_MNT(Procedure1)
    25.9.3 MOUNTPROC3_DUMP(Procedure2)
    25.9.4 MOUNTPROC3_UMNT(Procedure3)
    25.9.5 MOUNTPROC3_UMNTALL(Procedure4)
    25.9.6 MOUNTPROC3_EXPORT(Procedure5)
    25.10 NFS And Mount Authentication
    25.11 File Locking
    25.12 Changes In NFS Between Versions 3 And 4
    25.13 Summary

    Chapter 26 A TELNET Client(Program Structure)

    26.1 Introduction
    26.2 Overview
    26.2.1 The User's Terminal
    26.2.2 Command And Control Information
    26.2.3 Terminals,Windows,and Files
    26.2.4 The Need For Concurrency
    26.2.5 A Process Model For A TELNET Client
    26.3 A TELNET Client Algorithm
    26.4 Terminal I/O In Linux
    26.4.1 Controlling A Device Driver
    26.5 Establishing Terminal Modes
    26.6 Global Variable Used For Stored State
    26.7 Restoring Terminal Modes Before Exit
    26.8 Client Suspension And Resumption
    26.9 Finite State Machine Specification
    26.10 Embedding Commands In A TELNET Data Stream
    26.11 Option Negotiation
    26.12 Request/Offer Symmetry
    26.13 TELNET Character Definitions
    26.14 A Finite State Machine For Data From The Server
    26.15 Transitions Among States
    26.16 A Finite State Machine Implementation
    26.17 A Compact FSM Representation
    26.18 Keeping The Compact Representation At Run-Time
    26.19 Implementation Of A Compact Representation
    26.20 Building An FSM Transition Matrix
    26.21 The Socket Output Finite State Machine
    26.22 Definitions For The Socket Output FSM
    26.23 The Option Subnegotiation Finite State Machine
    26.24 Definitions For The Option Subnegotiation FSM
    26.25 FSM Initialization
    26.26 Arguments For The TELNET Client
    26.27 The Heart Of The TELNET Client
    26.28 Implementation Of The Main FSM
    26.29 Summary

    Chapter 27 A TENET Client(Implementation Details)

    27.1 Introduction
    27.2 The FSM Action Procedures
    27.3 Recording The Type Of An Option Request
    27.4 Performing No Operation
    27.5 Responding To WILL/WONT For The Echo Option
    27.6 Responding To WILL/WONT For Unsupported Options
    27.7 Responding To WILL/WONT For The No Go-Ahead Option
    27.8 Generating DO/DON'T For Binary Transmission
    27.9 Responding To DO/DON'T For Unsupported Options
    27.10 Responding To DO/DON'T For Transmit Binary Option
    27.11 Responding To DO/DON'T For The Terminal Type Option
    27.12 Option Subnegotiation
    27.13 Sending Terminal Type Information
    27.14 Terminating Subnegotiation
    27.15 Sending A Character To The Server
    27.16 Displaying Incoming Data On The User's Terminal
    27.17 Using Termcap To Control The User's Terminal
    27.18 Writing A Block Of Data To The Server
    27.19 Interacting With The Client Process
    27.20 Responding To Illegal Commands
    27.21 Scripting To A File
    27.22 Implementation Of Scripting
    27.23 Initialization Of Scripting
    27.24 Collecting Characters Of The Script File Name
    27.25 Opening A Script File
    27.26 Terminating Scripting
    27.27 Printing Status Information
    27.28 Summary

    Chapter 28 Streaming Audio And Video Transport(RTP Concept And Design)

    28.1 Introduction
    28.2 Streaming Service
    28.3 Real-Time Delivery
    28.4 Protocol Compensation For Jitter
    28.5 Retransmission,Loss,And Recovery
    28.6 Real-Time Transport Protocol
    28.7 Stream Translation And Jitter Buffers
    28.9 RTP Control Protocol(RTCP)
    28.10 Synchronizing Multiple Streams
    28.11 RTP Transport And Many-To-Many Transmission
    28.12 Sessions,Streams,Protocol Ports,And Demultiplexing
    28.13 Basic Approaches To Encoding
    28.14 Conceptual Organization Of RTP Software
    28.15 Process/Thread Structure
    28.16 Semantics Of The API
    28.17 Jitter Buffer Design And Rebuffering
    28.18 Event Handling
    28.19 Playback Anomaly And Timestamp Complications
    28.20 Size of An Example Real-Time Library
    28.21 An Example MP3 Player
    28.22 Summary

    Chapter 29 Streaming Audio And Video Transport(Example RTP Implementation

    29.1 Introduction
    29.2 An Integrated Implementation
    29.3 Program Architecture
    29.4 RTP Definitions
    29.5 Manipulation Of Time Values
    29.6 RTP Packet Queue Manipulation
    29.7 RTP Packet Queue Manipulation
    29.8 RTP Input Processing
    29.9 Keeping Statistics For RTCP
    29.10 RTP Initialization
    29.11 RTCP Definitions
    29.12 receiving RTCP Sender Reports
    29.13 Generating RTCP Receiver Reports
    29.14 RTCP Header Creation
    29.15 RTCP Delay Computation
    29.16 Generation Of An RTCP Bye Message
    29.17 Size Of An Integrated Implementation
    29.18 Summary

    Chapter 30 Practical Hints And Techniques For Linux Servers

    30.1 Introduction
    30.2 Operating In Background
    30.3 Programming A Server To Operate In Background
    30.4 Open Descriptors And Inheritance
    30.5 Programming A Server To Close Inherited Descriptors
    30.6 Signals From The Controlling TTY
    30.7 Programming A Server To Change Its Controlling TTY
    30.8 Moving To A Safe And Known Directory
    30.9 Programming A Server To Change Directories
    30.10 The Linux Umask
    30.11 Programming A Server To Set Its Umask
    30.12 Process Groups
    30.13 Programming A Server To Set Its Process Group
    30.14 Descriptors For Standard I/O
    30.15 Programming A Server To Open Standard Descriptors
    30.16 Mutual Exclusion For The Server
    30.17 Programming A Server To Avoid Multiple Copies
    30.18 Recording A Server's Process ID
    30.19 Programming A Server To Record Its Process ID
    30.20 Waiting For A Server To Wait For Each Child To Exit
    30.22 Extraneous Signals
    30.23 Programming A Server To Ignore Extraneous Signals
    30.24 Using A System Log Facility
    30.24.1 Generating Log Messages
    30.24.2 The Advantage Of Indirection And Standard Error
    30.24.3 Limitations Of I/O Redirection
    30.24.4 A Client-Server Solution
    30.24.5 The Syslog Mechanism
    30.24.6 Syslog Message Classes
    30.24.7 Syslog Facilities
    30.24.8 Syslog Priority Levels
    30.24.9 Using Syslog
    30.24.10 An Example Syslog Configuration File
    30.25 Summary

    Chapter 31 Deadlock And Starvation In Client-Server Systems

    31.1 Introduction
    31.2 Definition Of Deadlock
    31.3 Difficulty Of Deadlock Detection
    31.4 Deadlock Avoidance
    31.5 Deadlock Between A Client And Server
    31.6 Avoiding Deadlock In A Single Interaction
    31.7 Starvation Among A Set Of Clients And A Server
    31.8 Busy Connections And Starvation
    31.9 Avoiding Blocking Operations
    31.10 Processes,Connections,And Other Limits
    31.11 Cycles Of Clients And Servers
    31.12 Documenting Dependencies
    31.13 Summary

    Appendix 1 System Calls And Library Routines Used With Sockets

    Appendix 2 Manipulation Of Linux File And Socket Descriptors

    Bibliography
    Index

    [ 本帖最后由 zidscen 于 2008-1-30 11:59 编辑 ]