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