The book for CIS 656 in the fall of 2005 is 1. Forouzan, B.A. TCP/IP Protocol Suite third ed (2005) Mc Graw-Hill You must have a copy of this book, of the third edition. There is a fairly large difference between the second edition and the third edition. For example, the third edition has chapter on SCTP. Often, problems are not the same. If you do it in time: get an International Student Edition (from India or China or so). This is a good book. A bit dry. I recommend students buy it and keep it as ``lookup of first resort''. This is the only required book. In some sense the opposite book is 2. Keshav, S. An Engineering Approach to Computer Networking. ATM Network, the Internet, and the Telephone Network. Addison Wesley 1997. Also a good book. It tries to give the main ideas, and often succeeds. It is not good for looking up details. It is getting a bit old. other good books are: 3. W. Richard Stevens TCP/IP Illustrated, Vol I: The Protocols (Addison Wesley, ISBN 0-201-63346-0\9) 4. Gary R. Wright and W. Richard Stevens TCP/IP Illustrated, Vol II: The Implementation (Addison Wesley, ISBN 0-201-63354-X) The first of these is a solid overview of the TCP/IP protocols. With lots of illustrations (using tcpdump) of ``what really happens''. The second of these gives a solid overview of the BSD Unix implementation of TCP/IP. Including ``routed'' etc. Insofar a fair amount of the linux code is based on the unix BSD code (with significant differences), having these books will be of value if you want to get into the TCP/IP implementation in Linux. Anyway, these are classics. If you want to become an Internet Expert you should buy these books as soon as you can afford it. --- Books by Forouzan; 1. TCP/IP Protocol Suite. (Used in CIS 656). A good book. Good for course as well as later for looking up things. 5. Data Communiucations and Networking. (Often used in CIS 652). Another good book. More on lower layers and ``systems'' (ATM, etc). --- 6. Larry L. Peterson and Bruce S. Davie Computer Networks, a Systems Approach Morgan Kaufman. Pretty good book. Professor Borcea uses this in CIS 652 in the fall of 2005. --- 7. James F. Kurose and Keith W. Ross Computer Networking, A top-down approach featuring the Internet. Addison Wesley, 2001. Pretty good book. --- 8. Douglas E. Comer Internetworking with TCP/IP, Vol I: Principles, Protocols, and Architectures (Prentice Hall, ISBN 0-13-018380-6) Used in CIS 456. In some respects better than Forouzan's TCP/IP, but all in all I prefer Forouzan for the graduate class and Comer for the undergraduate class. --- Other books by Comer, and by Comer and Comer and Stevens. (Different Stevens: This is David L. Stevens). There are many. For example: 9. Douglas E. Comer and David L. Stevens Internetworking with TCP/IP, Vol II: Design, Implementation, and Internals. (Prentice Hall). 10. Douglas E. Comer and David L. Stevens Internetworking with TCP/IP, Vol III: Client-Server Programming and Applications. (Prentice Hall). --- Books by Stallings. (Many of them). For example: 11. William Stallings Computer Networking with Internet Protocols and Technology Prentice Hall 2004. ISBN 0-13-141098-9 A pretty good book. Has some material on congestion theory. --- The following book is suitable only for students interested in mathematical modeling of networks. For these students it is a ``must have'': 12. Dimitri Bertsekas and Robert Gallager Data Networks (Prentice Hall, ISBN 0-13-200916-1). --- 13. Hassan, M. and Jain, R. High Performance TCP/IP Networking Concepts, Issues, and Solutions. Pearson Prentice Hall 2004. For issues like TCP over satellite etc. --- 14. Balachander Krishnamurthy and Jennifer Rexford Web Protocols and Practice: HTTP/1.1, Networking Protocols, Caching, and Traffic Measurement Addison Wesley 2001. I have not looked at this book yet. I heard good things about it. --- 15. Wehrle, Pahlke, Ritter, Muller, Bechler (2005) The Linux Networking Architecture, Design and Implementation of Network Protocols in the Linux Kernel. Prentice Hall 2005. (Available since 2004, German version appeared in 2002). This is an excellent book on the Networking (TCP/IP, routing, etc) implementation in Linux. I strongly recommend this book to all students who want to make modifications to the Networking Code in Linux, for example in order to implement their own ideas. (There are ``umlauts'', that is, two dots, on the `a' in Pahlke and on the `u' in Muller.) In my ``Advanced Networking'' course (fall 2004, fall 2005) the compulsory books are Forouzan (TCP/IP), and Wehrle et al (Linux Networking). --- All in all: If you really want to go into mathematical modeling of data networks, buy Bertsekas and Gallager. If you really want to get into the TCP/IP implementations, buy Stevens I and II, and ``Wehrle et al''. (Stevens, and Stevens and Wright, and ``Wehrle et al''). I recommend Forouzan TCP/IP Protocol Suite and Data Communications and Networking as ``lookup books of first resort''. All the other books I mention are worth having (if you are into networking) but they can wait until you are sure about what you want. If you happen to have relatives coming over from India or China, ask them to bring all the books above, insofar available as International Student Edition. And, of course, every computer scientist must have: A book on Unix, (or two books: one on Unix, one on shell programming) A book on C, A book on C++, A book on Java, And many of my friends say you should know Perl. To really profit from ``Wehrle et al'' it is a good idea, though not absolutely necessary, that you have a book on Operating Systems. --- Students who plan to become experts on Computer Networking may want to read some old RFCs. Recommended (NOT compulsory!) RFC 791 (the IP protocol, as of Sept 1981. Most is still valid.) Read after we have covered Forouzan Chapters 1 - 9. RFC 768 (the UDP protocol, as of Aug 1980. Pretty much still the standard!) Read after we have covered Forouzan Chapter 11. RFC 793 (the TCP protocol, as of Sept 1981. A lot is still valid.) Read after we have covered Forouzan Chapter 12. RFC 1122 (Lots of interesting stuff, updates on RFC 791 and RFC 793, etc). For the real fanatics: RFC 792 (ICMP), RFC 1323 (Lots of updates on previous stuff. Some of it has been updated again in later RFCs! But more of it is still valid!). RFC 1812 (Requirements for IPv4 Routers) and many more. The IETF RFC pages has a nice mechanism to find out whether an RFC has been ``updated'' or ``obsoleted'' by another (later) RFC. You can use it to trace developments. (``updated'' and ``obsoleted'' do NOT mean the same thing!) Go find out how ``updating'' and ``obsoleting'' works!