Next:
List of Figures
Up:
Unix Communication Facilities
Previous:
Unix Communication Facilities
Contents
List of Figures
List of Tables
1 Introduction
1.1 Outline
2 Analysis & Design
2.1 Analysis
2.1.1 History of UNIX
2.1.2 UNIX Standards
2.2 Design
2.2.1 Communication Principles
2.2.2 The Client/Server Model
2.2.3 Interprocess Communication
2.2.4 Some Definitions
2.3 Summary
3 Local IPC
3.1 Signals
3.2 Pipes
3.3 FIFOs (named pipes)
3.4 Stream Pipes
3.5 System V IPC
3.5.1 Message Queues
3.5.2 Semaphores
3.5.3 Shared Memory
3.5.4 System V IPC Problems
3.6 Summary
4 Networking Principles
4.1 Switching Techniques
4.2 Message Passing Concepts
4.3 Addressing Issues
4.3.1 Static vs. Dynamic Binding
4.3.2 Global Name Space
4.3.3 Forms of Dynamic Binding
4.4 Data Representation
4.5 Protocols
4.5.1 Advantages of Protocol Layering
4.5.2 Disadvantages of Protocol Layering
4.5.3 Protocol Control Information
4.6 The OSI Seven Layer Reference Model
4.6.1 Application Layer
4.6.2 Presentation Layer
4.6.3 Session Layer
4.6.4 Transport Layer
4.6.5 Network Layer
4.6.6 Data Link Layer
4.6.7 Physical Layer
4.6.8 Criticism of the OSI Reference Model
4.7 Protocol Suites
4.8 Summary
5 Networking with TCP/IP
5.1 Overview
5.2 TCP/IP compared to the OSI protocol stack
5.3 History and Goals of TCP/IP
5.4 Internet Addresses
5.5 Port Numbers
5.6 Multiplexing/Demultiplexing
5.7 Internet Protocol
5.8 User Datagram Protocol
5.9 Transmission Control Protocol
5.10 Reliability
5.10.1 Checksums
5.10.2 Handling of Timeouts
5.11 Application Level Services
5.11.1 FTP
5.11.2 TELNET
5.11.3 Rlogin
5.12 UNIX Network Tools
5.13 Summary
6 Distributed IPC
6.1 Sockets
6.1.1 Supported Protocols
6.1.2 Connections and Associations
6.1.3 Asymmetry
6.1.4 Socket Types
6.1.5 Basic Socket Function Calls
Socket Creation
Binding
Socket Termination
6.1.6 Connection-oriented Communication
Connection Establishment
Data Exchange
Examples
6.1.7 Connectionless Communication
Connection Establishment
Data Exchange
Examples
6.1.8 Options
6.1.9 Obtaining Local and Remote Socket Addresses
6.1.10 Obtaining and Setting Host Name and Domain
6.1.11 Library Functions
6.1.12 Socket Summary
6.2 Transport Layer Interface
6.3 Remote Procedure Calls
6.4 Summary
7 Performance
7.1 Measuring Time
7.2 Principle Overhead of a System Call
7.3 Signals
7.4 Pipes
7.5 FIFOs (named pipes)
7.6 Message Queues
7.7 Semaphores
7.8 Shared Memory
7.9 Sockets
7.9.1 UNIX Domain
7.9.2 Internet Domain: UDP
7.9.3 Internet Domain: TCP
7.10 Transport Layer Interface
7.11 Conclusion
7.12 Summary
8 Making Unreliable Communication Reliable
8.1 Lost Messages
8.2 Corrupt Messages
8.3 Duplicate Messages
8.4 Messages out of Order
8.5 Congestion Control
8.6 Fundamental Problem of uncertain Communication
8.7 Implementation
8.8 Summary
9 Conclusion
9.1 Results
9.2 Additional IPC Facilities
9.2.1 Memory Mapped I/O
9.2.2 STREAMS
9.2.3 OSF DCE
9.3 Possible Improvements
9.4 The Future of UNIX Communication Facilities
9.4.1 IPng/IPv6
9.4.2 C++ Classes for IPC
9.5 A Final Word
10 References
A Complete Source code
A.1 Makefiles
A.1.1 Makefile
Makefile
A.1.2 Makefile.def
A.1.3 Makefile.def2
A.1.4 Makefile.hpux
A.1.5 Makefile.i386
A.1.6 Makefile.sparc
A.2 Commonly used Subroutines
A.2.1 common/Makefile
A.2.2 common.h
A.2.3 common/catchchildren.c
A.2.4 common/clocktimer.h
A.2.5 common/clocktimer.c
A.2.6 common/cputimer.h
A.2.7 common/cputimer.c
A.2.8 common/errors.h
A.2.9 common/errors.c
A.2.10 common/errordekl.c
A.2.11 common/measurement.h
A.2.12 common/measurement.c
A.2.13 common/readdata.c
A.2.14 common/readline.c
A.2.15 common/readline2.c
A.2.16 common/readn.c
A.2.17 common/readwritedata.h
A.2.18 common/ssleep.c
A.2.19 common/synchronize.c
A.2.20 common/testerror.c
A.2.21 common/writedata.c
A.2.22 common/writen.c
A.3 Local IPC
A.3.1 local/Makefile
A.3.2 local/fifoclient.c
A.3.3 local/fifoserver.c
A.3.4 local/message.c
A.3.5 local/namedstreampipe.c
A.3.6 local/pipe.c
A.3.7 local/semaphore.c
A.3.8 local/shared.c
A.3.9 local/signal.c
A.4 Distributed IPC
A.4.1 distSOCKET/Makefile
A.4.2 distSOCKET/udpclient.c
A.4.3 distSOCKET/udpserver.c
A.4.4 distSOCKET/tcpclient.c
A.4.5 distSOCKET/tcpserver.c
A.4.6 distSOCKET/safesend.c
A.4.7 distTLI/Makefile
A.4.8 distTLI/udpclient.c
A.4.9 distTLI/udpserver.c
A.4.10 distTLI/tcpclient.c
A.4.11 distTLI/tcpserver.c
A.4.12 distTLI/acceptcall.c
A.5 Performance
A.5.1 performance/Makefile
performance/Makefile
A.5.2 performance/fifoclient.c
A.5.3 performance/fifoserver.c
A.5.4 performance/memory.c
A.5.5 performance/message.c
A.5.6 performance/pipes.c
A.5.7 performance/semaphore.c
A.5.8 performance/shared.c
A.5.9 performance/signaloverhead.c
A.5.10 performance/socketlocal.c
A.5.11 performance/systemcalloverhead.c
A.5.12 performance/tcpsclientoverhead.c
A.5.13 performance/tcpsclientthroughput.c
A.5.14 performance/tcpsserverconcurrentoverhead.c
A.5.15 performance/tcpsserverconcurrent.c
A.5.16 performance/timeroverhead.c
A.5.17 performance/udps.h
A.5.18 performance/udpsclient.c
A.5.19 performance/udpsserver.c
A.6 Program Environment
A.6.1 environment/Makefile
A.6.2 environment/confstrtest.c
A.6.3 environment/getpipecapacity.c
A.6.4 environment/hostadress.c
A.6.5 environment/systemtype.c
A.6.6 environment/sysconftest.c
A.6.7 environment/sysvipclimits.c
A.7 Remote Procedure Calls
A.7.1 rpc/Makefile
A.7.2 rpc/date.x
A.7.3 rpc/dateproc.c
A.7.4 rpc/rdate.c
B Additional Information Resources
B.1 Internet Request For Comments
B.2 Periodicals
B.3 Additional Web Pages
C Glossary
D Used UNIX System & Library Calls
E About this Document
Gerhard Müller