Unless you’ve been living in a cave for the last decade, you are probably already familiar with what the Internet is about, at least from a user’s perspective. Functionally, we use it as a communication and information medium, by exchanging email, browsing web pages, transferring files, and so on. Technically, the Internet consists of many layers of abstraction and device -- from the actual wires used to send bits across the world to the web browser that grabs and renders those bits into text, graphics, and audio on your computer.
In this book, we are primarily concerned with the programmer’s interface to the Internet. This too consists of multiple layers: sockets, which are programmable interfaces to the low-level connections between machines, and standard protocols, which add structure to discussions carried out over sockets. Let’s briefly look at each of these layers in the abstract before jumping into programming details.
In simple terms, sockets are a programmable interface to network connections between computers. They also form the basis, and low-level “plumbing,” of the Internet itself: all of the familiar higher-level Net protocols like FTP, web pages, and email, ultimately occur over sockets. Sockets are also sometimes called communications endpoints because they are the portals through which programs send and receive bytes during a conversation.
To programmers, sockets take the form of a handful of calls available in a library. ...