These days networking is not as hot a buzzword in information technology (IT) as many others, such as artificial intelligence (AI) or machine learning; nevertheless, without networking, there would be neither AI nor machine learning. Thus, this book is even more welcome because it takes a comprehensive, in-depth approach to the subject of networking. Rather than bottom-up, it is built inside out: from the basic direct link between two devices to the Internet as a whole, connecting billions of devices, to the problems that such a large collection of devices entails, congestion control and data security among others. Chapter after chapter, the authors introduce new concepts, constantly expanding on the concepts presented before. This way, although the concepts introduced are ever-increasing in complexity, the reader never gets lost.
Chapter 1 is foundational: it explains fundamental network requirements, architecture, and applications, as well as the type of software built to meet them and some performance considerations. Chapter 2 treats the simple case of two devices directly linked between them and introduces basic concepts that nevertheless will be used throughout the book: encoding, framing, error detection, and transmission reliability. Chapter 3 introduces internetworking, or connecting whole networks through switches and routers.
Chapter 4 expands internetworking to more advanced topics: multicasting, or sending the same message to several devices at the same time; routing among mobile devices, with the added problem of handling links from cell to cell without losing data; and multiprotocol label switching, or handling data of different types all at the same time. To address these problems, the chapter says, Internet Protocol version 6 (IPv6) was invented.
Chapter 5 tackles end-to-end protocols, or getting all bytes from source to destination, ensuring their correctness and otherwise transmitting them repeatedly until they are correct. Chapter 6 deals with congestion control, because computer networks too can become congested with the same maddening effects of good old plain road traffic jams; solutions, however, are somewhat different (and more satisfactory, at least up to now!). Chapter 7 deals with end-to-end data, or making sure data at the receiving end is still meaningful for us humans after hopping through routers and switches. Chapter 8 deals with network security, a topic becoming more and more important as time goes by since, nowadays, more and more confidential data is transmitted over networks. Chapter 9 deals with applications for human beings, from traditional ones such as email, web browsing, and web services, to more recent ones such as social media, music or video streaming, videoconferencing, and file sharing. The chapter also presents infrastructure applications used to manage the network itself such as the domain name system (DNS), simple network management protocol (SNMP), and content delivery networks.
Each chapter consists of a brief introduction, a large section explaining the subject at hand with plenty of drawings and diagrams, a perspective section explaining the likely evolution of the subject in the future, and a few exercises (no answers are given on the assumption that any networking problem can be solved in different ways).
Although written as a textbook suitable for different levels of graduate or undergraduate courses, the book explicitly states in its introduction that networking has many stakeholders, including network designers, operators, and managers, as well as people who develop network applications. All of them, too, can benefit from this book by browsing single chapters or sections in search of solutions to problems that may arise in their profession.