I want to learn sockets on FreeBSD so naturally I bought the following book about it.
TCP/IP Sockets in C, Second Edition: Practical Guide for Programmers (The Morgan Kaufmann Practical Guides Series)
Ok, so chapter one says it is an introduction but would be bettered titles as “Basic Computer Networking Concepts” as it really covers in a very, very broad sense the important points of the OSI model (without mentioning the OSI model). If you are excellent at networking, TCP/IP, etc, this chapter will be a quick read. It is so short that even if you are already an expert, just read it. Who knows, you may find that one line that will teach you something. By the way, I spent four years doing tech support for Nortel Networks Routers, Layer 3 switches, Load Balancers, Wireless APs, etc. I lived in the network world and spent a lot of time in Sniffer Pro or Wireshark (then Ethereal). After which I came to LANDesk (my current employer) where I spent a lot of time working with PXE booting over the network, which uses bootp, dhcp, TFTP and furthered my understanding of client/server communication. So you might think that I should have skipped this chapter entirely. No, I read it.
I found section 1.2.2 – Dealing with Two Versions interesting. This section mentions straight up that socket programmers will have to deal with IPv6. The whole chapter doesn’t just talk of IPv4 only, it includes little snippets of both. I believe the big move to IPv6 will not come quite yet. In 1999, a trainer in my MSCE class said that everyone will be using IPv6 within five years (2004) and if you don’t know, it has really been adopted yet in 2010. It is moving slowing and I think it will continue. Windows 7 and Windows 2008 will cause a lot of adoption, but people are still using Windows 98 in many places even today in 2010. Windows 2000 and Windows XP will take quite a long time to fade away. I predict that some companies (though not many) will still be running Windows XP in 2020. I think that a bigger adoption of IPv6 will occur once the next windows OS (the version after Windows 7) is on the majority of computers. So windows 7 will do what Windows Vista couldn’t and replace XP in the corporate world. The corporate world still must move all their domain environments to Server 2008 (or they may stay on Windows Server 2003 until the next server release after Windows Server 2008 ). The home world will take about five years (2015) to have everyone a majority moved to Windows 7. Anybody on Vista will upgrade to get off that poor unstable operating system and anybody running XP will probably have old hardware that will start dying off and will have to purchase new computers that already come with Windows 7. Moving the operating system is not enough. That aone won’t make everyone move to IPv6. Wireless routers are just starting to support IPv6 such as the DIR-655 Xtreme N Gigabit Router. However, there is a big difference between supporting IPv6 and making IPv6 the default. Most Internet Service Providers (ISPs) still give IPv4 addresses. The infrastructure using IPv4 is so huge it could take a few more decades to completely remove it. You can probably guess that the adoption is going to reach a craze when your ISP starts sending you notices that they are moving to IPv6 and you have to comply and you don’t have a choice, kind of like what just happened with the analog TV service this year. Funny, thing, for a lot of people, me included, their Cable TV service is also their ISP.
Ok, enough rambling about IPv6. It is enough to know that you are going to start to have to deal with it now and at some future time IPv4 will be replaced and you will only have to deal with IPv6.
As for the other topics in the chapter, it is actually amazing that they were able to mention as many topics as they did in such short pages. They mention NAT and DNS and URLs and other important topic (each of which have dozens of large books covering just the one topic). The networking world is a whole other field that have engineers who spend their entire lives becoming experts at just using the equipment, let alone developing software for it. Usually a software developer won’t need to reach such an expert level understanding of networking (unless they are developing the OS for a router/switch or a software such as a firewall).
This chapter was necessary and they added it and I would say they did a good job keeping it short and simple. They did a good job of providing the detail needed at just enough level that a freshman/sophmore in college who knows little about networking and programming would be able to understand the concept of networking enough to have a general idea why they need to code with sockets they way the book will describe.
Stay tuned for a review on Chapter 2.
Update: My review on Chapter 2 is here:
Book Review: TCP/IP Sockets in C – Practical Guide for Progammers Second Edition (Chapter 2)