Despite its early publication, and its lack of information on IPV6, it is very relevant today. I was once trying to find out why my protocol analyzer was always showing PSH and I was curious as to why it was used. In my other TCP/IP books, there was only about a line or two on the subject, whereas in "TCP/IP Illustrated, Volume 2- The Implementation", there were a couple of pages of information to peruse. Similarly with the RST flag, the information was detailed regarding its use and easy to follow.
All the protocols are given a very thorough treatise TCP, IP, UDP, ARP, ICMP, FTP, SMTP, Telnet and Rlogon are among the protocols that are illustrated in great detail. All the required information that is relevant to know about these protocols is provided. The examples are first rate and easy to follow and they are in abundance. Do you want to know how keepalives work? How about an example, complete with instructions, on how to simulate a crash and the tcpdump output you can expect to see. There are 2 other examples, just in case you missed the point!
He is obviously a unix afficionado, having written a very popular - "Advanced Programming in the Unix Environment". Even if you are not a Unix user, and I am not one myself, his use of unix tools for the examples are very easy to follow and easily translate to common windows networking tools. He takes great pains to make sure you understand his examples, which I find refreshing.
Believe me it's everything you have ever wanted to know about TCP/IP and then some. If I had to have only one book on the subject, this would be it. Regardless of the level of networking you find yourself at, you should get more than your times worth of information out of this book.
*) Very clear and precise
*) source code in book very nicely explained.
Drawbacks:
*) Sometimes very heavy treatment (at least on my poor brain!)
*) Not a very portable reference (considering there are 2 more volumes). Is there a CD version ;-) ??
I initially bought this book to understand how the tcp/ip stack was implemented in linux.
Being a programmer mainly doing business related software, I initially found understanding this a little daunting to go through . After a little effort and looking at the source, i found this book enlightening!
I found it extremely useful comparing code and concepts in the book with the actual tcp/ip source (FreeBSD and Linux). I am still going through 3 volumes of the book.
A very good text book if you want to dig into the core of tcp/ip.
Richard Stevens TCP/IP illustrated is one of the best books you can ever buy to understand not only TCP/IP but also other fundamental protocols like ARP, DHCP, SMTP etc. The word 'Illustrated' is significant, you actually see the protocols in action throughout this book. There are more pages devoted to examples rather than concepts, which is actually an excellent way to relate to the concepts.
Richard Stevens doesnt just write something, and assume you understood him and believed him in blind faith. He actually shows you what you write and helps you become more analytical in the workings of the internet.
This book is a bit old though, and with Richard Stevens dead, we might not see a revival of this book. It only covers TCP modification till Tahoe and Reno but chapter 24 gives you a more or less good idea about what the future will be like (in which we actually are, by the timeline of this book.)
Overall, if you want to not only learn networks, but feel them, then buy this book.
All stuff in TCP/IP were covered in this book. I would like to call this book 'BOOK OF NETWORKING PROTOCOL', most of the stuff were clearly explained, by the plain text, examples, captured results, I think this book is really illustrated.
No matter for newbies or expert in networking, this book is suitable for you. The only I could say is 'Read it'.
The monotony of trudging through RFC-laden arcania. Unless you're implementing/maintaining a TCP/IP stack, the coverage is outstanding.
In chapter 1, the author gives a brief overview of protocol layering, Internet addressing, and the domain name system. The encapsulation mechanisms for TCP and UDP are outlined as well as a discussion of the different implementations of TCP/IP. The Vegas implementation is not discussed since it was invented long after the date of publication of this book. Ethernet and the encapsulation provided by IEEE, SLIP, and PPP is discussed in the next chapter on the link layer, along with the loopback interface and MTU. Estimates are given of serial line throughput, setting the stage for later timing calculations.
The IP protocol is the subject of chapter 3, the author stressing first the connectionless and unreliable nature of IP packet transfer. The IP datagram format is given in discussed, along with a detailed discussion of subnet addressing and subnet masks. The discussion of IP given here is of course very out of date with the advent of IPv6.
Chapter 4 is an overview of ARP, and the author illustrates it effectively using an example of an FTP transfer and Telnet. This is followed by a treatment of RARP in the next chapter, with the limitations of this protocol briefly discussed. Although ARP is incorporated in all current implementations of TCP/IP (with the exception of IPv6), not all of these include RARP.
The ICMP error handling protocol is discussed in the next chapter, with all the message types listed, and brief discussions given of timestamp and address mask requests. This is followed naturally by a discussion of the Ping program in chapter 7, which uses ICMP echo request and reply messages.
The traceroute program, which finds which path IP packets follow from one to the other, is discussed in Chapter 8. An explicit example is given of how to use traceroute. Then in the next chapter, IP routing is discussed, along with an explicit example of a routing table. Again, the discussion is out-of-date, since in IPv6, the router discovery is replaced by a mandatory router solicitation and advertisement mechanism.
Dynamic routing protocols are the subject of the next chapter, wherein the author discusses RIP, OSPF, BGP, and CIDR. The newer ones, such as IGRP, EIGRP, and MPLS, are of course not treated.
UDP is then discussed in the next chapter, with examples given and IP fragmentation discussed, along with a brief overview of how UDP and ARP interact. This is followed in Chapter 12 by a discussion of broadcasting and multicasting, and the author outlines briefly the problems that rise when attempting to broadcast through routers. Then in the next chapter, the ICMP mechanism for multicasting is discussed. Here again the treatment is dated, since in IPv6 IGMP is replaced by multicast listener discovery messages and there are no broadcast addressing in IPv6.
The DNS database is discussed in the next chapter, with emphasis on how resolvers communicate with name servers using TCP/IP. The discussion is limited to A resource records, which is replaced in IPv6 with AAAA or A6 resource records. I did not read the next two chapters on TFTP and BOOTP so I will omit any commentary.
It is in the next chapter that the basics of TCP begin to be discussed, with the details of the TCP header given. The dynamics of the TCP connection is then treated in chapter 18, with a complete TCP state transition diagram given. The discussion is very helpful to those who need a thorough understanding of the connection steps in TCP. This is followed by a treatment of the Nagle algorithm and delayed ACKs in chapter 19. The exercises in this chapter need to be worked to appreciate the discussion.
The following chapter overviews how TCP sliding windows work, and how window sizing is done. Slow start, the bandwidth-delay product, and the urgent mode are all treated in great detail. The mathematical considerations behind TCP timeout and retransmission are given in chapter 21, along with a discussion of the congestion avoidance algorithm and the fast retransmit and fast recovery algorithms. Then in chapter 22, the TCP persist timer, used to prevent transmission deadlock and the silly window syndrome, is discussed in detail. The ability of TCP to implement a keepalive timer is discussed in the next chapter. Since it is out of date, I did not read the next chapter on the future of TCP.
The SNMP network management protocol is outlined in Chapter 25, with definitions of MIB and an overview of SNMP traps. These are very important concepts given the enormous importance of network management currently. There are currently several vendors that supply packages for polling, reporting, and forecasting network behavior that are based partially on SNMP and MIBs.
Telnet and Rlogin, which are still used extensively in modern networks, are discussed in the next chapter. After reading this chapter, the reader will have a thorough understanding of how these protocols work, which is also true of the next chapter that covers the FTP protocol, and the SMTP protocol, which is covered in chapter 28. I did not read the last two chapters of the book so I will omit any commentary.
The author has done a good job here of relating to the reader the structure and dynamics of TCP/IP based on what was known at the time. In view of the fact that IPv4 is still alive and well, and given that TCP implementations have only been slightly modified since 1994, one can still read this book profitably.
This book covers TCP/IP in depth and is great for anyone needing to learn it. This book covers IP, ARP, RARP, ICMP, RIP (and other routing protocols), UDP, IGMP, DNS, TFTP, BOOTP, SNMP, SMTP, NFS, and alot more including some programs and an overview of configurations in the appendix.
This book is a must have for any person doing networking, or doing any work involving networking.
I gave it four stars because I have not seen any other text go into this kind of detail. For a companion text, I would recommend "Internetworking with TCP/IP Vol. I" (Comer), or "Internet Core Protocols: the Definitive Guide" (Hall).