[comp.unix.questions] SUMMARY: A Good Network Programming Book.

scoob@vlsi.polymtl.ca (Christian Marcotte) (01/10/91)

	Hello networker out there !!!

	After posting  a request for advise on a good Unix Network
	programming book covering both Berkeley Sockets ant TLI,
	I received replies, ALL of them praising the same book:


		Unix Network Programming
		By: W. Richard Stevens
		    Prentiss Hall Software Series
		    (Published in 1990)

		    ISBN  0-13-949876-1


	It seems unanimous, every one loves this book.  It covers
	everything I asked for and more.  There seems to be examples
	of code with sources available on the NET (UUNET.UU.NET).

	Here's some of the feedbacks I received.  (The last one was
	sent by the author and is the table of content).

	Many thanks to every one who bothered to reply.

		Scoob.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



	This book in my opinion should give you a good platform on 
   exactly how all the pieces of a network fit together. It has 
   a good introduction on the use of Interprocess Communication
   facilities (Pipes,Fifos,Messages,Shared Memory, etc.), it then
   discusses Protocols (TCP/IP,XNS,SNA,OSI,UUCP, etc.). Finally,
   the book has entire chapters on the discussion of Sockets and
   the System V TLI.
	Another interesting feature I like about this book (besides
    the examples) is that it point out some limitations of different
    vendors products, that is, it takes such things as byte ordering,
    maximum amount of shared memory, etc for different CPU's.
	

-----------------------------------------------------------------------

  [...]
  It'd take years to fully sing its praises; suffice it to say, 
  it's precisely what you want.

------------------------------------------------------------------------


``UNIX Network Programming'' is the best book I have found on the subject of
sockets, TLI, XNS, etc... It is quite comprehensive with good chapters on
controlling UNIX processes and an overview of networks in addition to
covering the various network standards. 

-----------------------------------------------------------------------

It is a good introduction for beginning network programmers in general
and does a good job of explaining both sockets and TLI.  Examples are
done in both forms to make it clear how things work.  The sources to
the examples are supposed to be available on UUNET.

-----------------------------------------------------------------------



----------------------------------------------------------------------
"UNIX Network Programming" by W. Richard Stevens
(c) Prentice Hall  1990
ISBN# 0-13-949876-1

Preface                                            x

Chapter  1.   Introduction                         1

   1.1   History                                1
   1.2   Layering                               3
   1.3   OSI Model                              3
   1.4   Processes                              4
   1.5   A Simplified Model                     4
   1.6   Client-Server Model                    5
   1.7   Plan of the Book                       6
   1.8   A History of Unix Networking           8

Chapter  2.   The Unix Model                      10

   2.1   Introduction                          10
   2.2   Basic Definitions                     10
   2.3   Input and Output                      38
   2.4   Signals                               43
   2.5   Process Control                       54
   2.6   Daemon Processes                      72
   2.7   Summary                               85

Chapter  3.   Interprocess Communication          87

   3.1   Introduction                          87
   3.2   File and Record Locking               88
   3.3   A Simple Client-Server Example       101
   3.4   Pipes                                102
   3.5   FIFOs                                110
   3.6   Streams and Messages                 115
   3.7   Name Spaces                          119
   3.8   System V IPC                         121
   3.9   Message Queues                       126
   3.10  Semaphores                           137
   3.11  Shared Memory                        153
   3.12  Sockets and TLI                      169
   3.13  Summary                              170

Chapter  4.   A Network Primer                   171

Chapter  5.   Communication Protocols            197

   5.1   Introduction                         197
   5.2   TCP/IP--the Internet Protocols       198
   5.3   XNS--Xerox Network Systems           214
   5.4   SNA--Systems Network Architecture    224
   5.5   NetBIOS                              238
   5.6   OSI Protocols                        245
   5.7   UUCP--Unix-to-Unix Copy              252
   5.8   Protocol Comparisons                 254
   5.9   Summary                              257

Chapter  6.   Berkeley Sockets                   258

   6.1   Introduction                         258
   6.2   Overview                             261
   6.3   Unix Domain Protocols                262
   6.4   Socket Addresses                     264
   6.5   Elementary Socket System Calls       267
   6.6   A Simple Example                     278
   6.7   Advanced Socket System Calls         298
   6.8   Reserved Ports                       303
   6.9   Stream Pipes                         304
   6.10  Passing File Descriptors             306
   6.11  Socket Options                       312
   6.12  Asynchronous I/O                     326
   6.13  Input/Output Multiplexing            328
   6.14  Out-of-Band Data                     332
   6.15  Sockets and Signals                  333
   6.16  Internet Superserver                 334
   6.17  Socket Implementation                339
   6.18  Summary                              340

Chapter  7.   System V Transport Layer Interface 342

   7.1   Introduction                         342
   7.2   Overview                             343
   7.3   Transport Endpoint Addresses         345
   7.4   Elementary TLI Functions             345
   7.5   A Simple Example                     360
   7.6   Advanced TLI Functions               370
   7.7   Streams                              374
   7.8   TLI Implementation                   379
   7.9   Stream Pipes                         381
   7.10  Passing File Descriptors             386
   7.11  Input/Output Multiplexing            388
   7.12  Asynchronous I/O                     389
   7.13  Out-of-Band Data                     390
   7.14  Summary                              391

Chapter  8.   Library Routines                   392

   8.1   Introduction                         392
   8.2   Berkeley Network Library Routines    392
   8.3   Network Utility Routines             397
   8.4   Providing a Reliable Message Service 405
   8.5   Summary                              419

Chapter  9.   Security                           420

   9.1   Introduction                         420
   9.2   4.3BSD Routines                      421
   9.3   Kerberos                             430
   9.4   Summary                              436

Chapter  10.   Time and Date Routines            437

   10.1   Introduction                        437
   10.2   Internet Time and Date Client       437
   10.3   Network Time Synchronization        443
   10.4   Summary                             443

Chapter  11.   Ping Routines                     445

   11.1   Introduction                        445
   11.2   Internet Ping Client                445
   11.3   XNS Echo Client                     460
   11.4   Summary                             464

Chapter  12.   Trivial File Transfer Protocol    465

   12.1   Introduction                        465
   12.2   Protocol                            465
   12.3   Security                            471
   12.4   Data Formats                        471
   12.5   Connections                         472
   12.6   Client User Interface               473
   12.7   UDP Implementation                  474
   12.8   TCP Implementation                  520
   12.9   Summary                             525

Chapter  13.   Line Printer Spoolers             527

   13.1   Introduction                        527
   13.2   4.3BSD Print Spooler                527
   13.3   4.3BSD lpr Client                   543
   13.4   System V Print Spooler              554
   13.5   Summary                             561

Chapter  14.   Remote Command Execution          563

   14.1   Introduction                        563
   14.2   Security Issues                     564
   14.3   rcmd Function and rshd Server       565
   14.4   rexec Function and rexecd Server    587
   14.5   Summary                             587

Chapter  15.   Remote Login                      589

   15.1   Introduction                        589
   15.2   Terminal Line Disciplines           590
   15.3   A Simple Example                    591
   15.4   Pseudo-Terminals                    600
   15.5   Terminal Modes                      606
   15.6   Control Terminals (Again)           613
   15.7   rlogin Overview                     616
   15.8   Windowing Environments              617
   15.9   Flow Control                        621
   15.10  Pseudo-Terminal Packet Mode         622
   15.11  rlogin Client                       625
   15.12  rlogin Server                       646
   15.13  Summary                             665

Chapter  16.   Remote Tape Drive Access          668

   16.1   Introduction                        668
   16.2   Unix Tape Drive Handling            668
   16.3   rmt Protocol                        669
   16.4   rmt Server                          671
   16.5   Summary                             679

Chapter  17.   Performance                       680

   17.1   Introduction                        680
   17.2   IPC Performance                     680
   17.3   Tape Performance                    684
   17.4   Disk Performance                    686
   17.5   Network Performance                 687
   17.6   Summary                             690

Chapter  18.   Remote Procedure Calls            692

   18.1   Introduction                        692
   18.2   Transparency Issues                 694
   18.3   Sun RPC                             700
   18.4   Xerox Courier                       709
   18.5   Apollo RPC                          716
   18.6   Summary                             719

Appendix A.   Miscellaneous Source Code          720

   A.1   System Type Header File              720
   A.2   System Type Shell Script             722
   A.3   Standard Error Routines              722
   A.4   Timer Routines                       731

Bibliography                                     735

Index                                            748