Back TU TTU Subject Area: Computer System Architecture, Computer Networks in CIDEC Library.

cover image TCP/IP ILLUSTRATED: VOL. 2. THE IMPLEMENTATION

Gary R. WRIGHT
has worked with TCP/IP for more than eight years. He is President of Connix, a Connecticut-based company providing Internet access and consulting services.

W. Richard STEVENS
is the highly-respected author of three other best-selling books, TCP/IP Illustrated, Volume 1 (Addison-Wesley, 1994), Advanced Programming in the UNIX Environment (Addison-Wesley, 1992), and UNIX Network Programming (Prentice-Hall). He is also a popular tutorials instructor and consultant.

Addison-Wesley Professional Computing Series

Publisher : Addison-Wesley Publishing Co. - Reading, Mass.

Bibliographic :

DESCRIPTION :

TCP/IP Illustrated, an ongoing series covering the many facets of TCP/IP, brings a highly-effective visual approach to learning about this networking protocol suite.

TCP/IP Illustrated, Volume 2 contains a thorough explanation of how TCP/IP protocols are implemented. There isn't a more practical or up-to-date book - this volume is the only one to cover the de facto standard implementation from the 4.4BSD-Lite release, the foundation for TCP/IP implementations run daily on hundreds of thousands of systems worldwide.

Combining 500 illustrations with 15,000 lines of real, working code, TCP/IP Illustrated, Volume 2 uses a teach-by-example approach to help you master TCP/IP implementation. You will learn about such topics as the relationship between the sockets API and the protocol suite, and the differences between a host implementation and a router. In addition, the book covers the newest features of the 4.4BSD-Lite release, including multicasting, long fat pipe support, window scale, timestamp options, and protection against wrapped sequence numbers, and many other topics.

Comprehensive in scope, based on a working standard, and thoroughly illustrated, this book is an indispensable resource for anyone working with TCP/IP.

Additional information (including errata) is available at the R. Stevens's web page.

CONTENTS:

PREFACE

1. Introduction
Introduction * Source Code Presentation * History * Application Programming Interfaces * Example Program * System Calls and Library Functions * Network Implementation Overview * Descriptors * Mbufs (Memory Buffers) and Output Processing * Input Processing * Network Implementation Overview Revisited * Interrupt Levels and Concurrency * Source Code Organization * Test Network * Summary
2. Mbufs
Memory Buffers: Introduction * Code Introduction * Mbuf Definitions * mbuf Structure * Simple Mbuf Macros and Functions * m_devget and m_pullup Functions * Summary of Mbuf Macros and Functions * Summary of Net/3 Networking Data Structures * m_copy and Cluster Reference Counts * Alternatives * Summary
3. Interface Layer
Introduction * Code Introduction * ifnet Structure * ifaddr Structure * sockaddr Structure * ifnet and ifaddr Specialization * Network Initialization Overview * Ethernet Initialization * SLIP Initialization * Loopback Initialization * if_attach Function * ifinit Function * Summary
4. Interfaces
Ethernet: Introduction * Code Introduction * Ethernet Interface * ioctl System Call * Summary
5. Interfaces
SLIP and Loopback: Introduction * Code Introduction * SLIP Interface * Loopback Interface * Summary
6. IP Addressing
Introduction * Code Introduction * Interface and Address Summary * sockaddr_in Structure * in_ifaddr Structure * Address Assignment * Interface ioctl Processing * Internet Utility Functions * ifnet Utility Functions * Summary
7. Domains and Protocols
Introduction * Code Introduction * domain Structure * protosw Structure * IP domain and protosw Structures * pffindproto and pffindtype Functions * pfctlinput Function * IP Initialization * sysctl System Call * Summary
8. IP: Internet Protocol
Introduction * Code Introduction * IP Packets * Input Processing: ipintr Function * Forwarding: ip_forward Function * Output Processing: ip_output Function * Internet Checksum: in_cksum Function * setsockopt and getsockopt System Calls * ip_sysctl Function * Summary
9. IP Option Processing
Introduction * Option Format * ip_dooptions Function * Record Route Option * Source and Record Route Options * Timestamp Option * ip_insertoptions Function * ip_pcbopts Function * Limitations * Summary
10. IP Fragmentation and Reassembly
Introduction * Code Introduction * Fragmentation * ip_optcopy Function * Reassembly * ip_reass Function * ip_slowtimo Function * Summary
11. ICMP: Internet Control Message Protocol
Introduction * Code Introduction * icmp Structure * ICMP protosw Structure * Input Processing: icmp_input Function * Error Processing * Request Processing * Redirect Processing * Reply Processing * Output Processing * icmp_error Function * icmp_reflect Function * icmp_send Function * icmp_sysctl Function * Summary
12. IP Multicasting
Introduction * Code Introduction * Ethernet Multicast Addresses * ether_multi Structure * Ethernet Multicast Reception * in_multi Structure * ip_moptions Structure * Multicast Socket Options * Multicast TTL Values * ip_setmoptions Function * Joining an IP Multicast Group * Leaving an IP Multicast Group * ip_getmoptions Function * Multicast Input Processing: ipintr Function * Multicast Output Processing: ip_output Function * Performance Considerations * Summary
13. IGMP: Internet Group Management Protocol
Introduction * Code Introduction * igmp Structure * IGMP protosw Structure * Joining a Group: igmp_joingroup Function * igmp_fasttimo Function * Input Processing: igmp_input Function * Leaving a Group: igmp_leavegroup Function * Summary
14. IP Multicast Routing
Introduction * Code Introduction * Multicast Output Processing Revisited * mrouted Daemon * Virtual Interfaces * IGMP Revisited * Multicast Routing * Multicast Forwarding: ip_mforward Function * Cleanup: ip_mrouter_done Function * Summary
15. Socket Layer
Introduction * Code Introduction * socket Structure * System Calls * Processes, Descriptors, and Sockets * socket System Call * getsock and sockargs Functions * bind System Call * listen System Call * tsleep and wakeup Functions * accept System Call * sonewconn and soisconnected Functions * connect System call * shutdown System Call * close System Call * Summary
16. Socket I/O
Introduction * Code Introduction * Socket Buffers * write, writev, sendto, and sendmsg System Calls * sendmsg System Call * sendit Function * sosend Function * read, readv, recvfrom, and recvmsg System Calls * recvmsg System Call * recvit Function * soreceive Function * soreceive Code * select System Call * Summary
17. Socket Options
Introduction * Code Introduction * setsockopt System Call * getsockopt System Call * fcntl and ioctl System Calls * getsockname System Call * getpeername System Call * Summary
18. Radix Tree Routing Tables
Introduction * Routing Table Structure * Routing Sockets * Code Introduction * Radix Node Data Structures * Routing Structures * Initialization: route_init and rtable_init Functions * Initialization: rn_init and rn_inithead Functions * Duplicate Keys and Mask Lists * rn_match Function * rn_search Function * Summary
19. Routing Requests and Routing Messages
Introduction * rtalloc and rtalloc1 Functions * RTFREE Macro and rtfree Function * rtrequest Function * rt_setgate Function * rtinit Function * rtredirect Function * Routing Message Structures * rt_missmsg Function * rt_ifmsg Function * rt_newaddrmsg Function * rt_msg1 Function * rt_msg2 Function * sysctl_rtable Function * sysctl_dumpentry Function * sysctl_iflist Function * Summary
20. Routing Sockets
Introduction * routedomain and protosw Structures * Routing Control Blocks * raw_init Function * route_output Function * rt_xaddrs Function * rt_setmetrics Function * raw_input Function * route_usrreq Function * raw_usrreq Function * raw_attach, raw_detach, and raw_disconnect Functions * Summary
21. ARP: Address Resolution Protocol
Introduction * ARP and the Routing Table * Code Introduction * ARP Structures * arpwhohas Function * arprequest Function * arpintr Function * in_arpinput Function * ARP Timer Functions * arpresolve Function * arplookup Function * Proxy ARP * arp_rtrequest Function * ARP and Multicasting * Summary
22. Protocol Control Blocks
Introduction * Code Introduction * inpcb Structure * in_pcballoc and in_pcbdetach Functions * Binding, Connecting, and Demultiplexing * in_pcblookup Function * in_pcbbind Function * in_pcbconnect Function * in_pcbdisconnect Function * in_setsockaddr and in_setpeeraddr Functions * in_pcbnotify, in_rtchange, and in_losing Functions * Implementation Refinements * Summary
23. UDP: User Datagram Protocol
Introduction * Code Introduction * UDP protosw Structure * UDP Header * udp_init Function * udp_output Function * udp_input Function * udp_saveopt Function * udp_ctlinput Function * udp_usrreq Function * udp_sysctl Function * Implementation Refinements * Summary
24. TCP: Transmission Control Protocol
Introduction * Code Introduction * TCP protosw Structure * TCP Header * TCP Control Block * TCP State Transition Diagram * TCP Sequence Numbers * tcp_init Function * Summary
25. TCP Timers
Introduction * Code Introduction * tcp_canceltimers Function * tcp_fasttimo Function * tcp_slowtimo Function * tcp_timers Function * Retransmission Timer Calculations * tcp_newtcpcb Function * tcp_setpersist Function * tcp_xmit_timer Function * Retransmission Timeout: tcp_timers Function * An RTT Example * Summary
26. TCP Output
Introduction * tcp_output Overview * Determine if a Segment Should be Sent * TCP Options * Window Scale Option * Timestamp Option * Send a Segment * tcp_template Function * tcp_respond Function * Summary
27. TCP Functions
Introduction * tcp_drain Function * tcp_drop Function * tcp_close Function * tcp_mss Function * tcp_ctlinput Function * tcp_notify Function * tcp_quench Function * TCP_REASS Macro and tcp_reass Function * tcp_trace Function * Summary
28. TCP Input
Introduction * Preliminary Processing * tcp_dooptions Function * Header Prediction * TCP Input: Slow Path Processing * Completion of Passive Open or Active Open * PAWS: Protection Against Wrapped Sequence Numbers * Trim Segment so Data is Within Window * Self-Connects and Simultaneous Opens * Record Timestamp * RST Processing * Summary
29. TCP Input (Continued)
Introduction * ACK Processing Overview * Completion of Passive Opens and Simultaneous Opens * Fast Retransmit and Fast Recovery Algorithms * ACK Processing * Update Window Information * Urgent Mode Processing * tcp_pulloutofband Function * Processing of Received Data * FIN Processing * Final Processing * Implementation Refinements * Header Compression * Summary
30. TCP User Requests
Introduction * tcp_usrreq Function * tcp_attach Function * tcp_disconnect Function * tcp_usrclosed Function * tcp_ctloutput Function * Summary
31. BPF: BSD Packet Filter
Introduction * Code Introduction * bpf_if Structure * bpf_d Structure * BPF Input * BPF Output * Summary
32. Raw IP
Introduction * Code Introduction * Raw IP protosw Structure * rip_init Function * rip_input Function * rip_output Function * rip_usrreq Function * rip_ctloutput Function * Summary

Epilogue

Appendix A. Solutions to Selected Exercises
Appendix B. Source Code Availability
Appendix C. RFC 1122 Compliance
Link-Layer Requirements * IP Requirements * IP Options Requirements * IP Fragmentation and Reassembly Requirements * ICMP Requirements * Multicasting Requirements * IGMP Requirements * Routing Requirements * ARP Requirements * UDP Requirements * TCP Requirements

Bibliography * Index

SEE ALSO:

TCP/IP Illustrated
Vol. 1. The protocols
Vol. 3. TCP for transactions, HTTP, NNTP, and the UNIX domain protocols.


Back Top Changed 30/01/1997. Comments: monika@cs.ioc.ee