Chapter 1. Network Programming and Python
This book will focus on writing programs for networks that use the Internet protocol suite. Why have we chosen to do this? Well, of the sets of protocols supported by the Python standard library, the TCP/IP protocol is by far the most widely employable. It contains the principle protocols used by the Internet. By learning to program for TCP/IP, you'll be learning how to potentially communicate with just about every device that is connected to this great tangle of network cables and electromagnetic waves.
In this chapter, we will be looking at some concepts and methods around networks and network programming in Python, which we'll be using throughout this book.
This chapter has two sections. The first section, An introduction to TCP/IP networks, offers an introduction to essential networking concepts, with a strong focus on the TCP/IP stack. We'll be looking at what comprises a network, how the Internet Protocol (IP) allows data transfer across and between networks, and how TCP/IP provides us with services that help us to develop network applications. This section is intended to provide a grounding in these essential areas and to act as a point of reference for them. If you're already comfortable with concepts such as IP addresses, routing, TCP and UDP, and protocol stack layers, then you may wish to skip to second part, Network programming with Python.
In the second part, we'll look at the way in which network programming is approached with Python. We'll be introducing the main standard library modules, looking at some examples to see how they relate to the TCP/IP stack, and then we will be discussing a general approach for finding and employing modules that meet our networking needs. We'll also be taking a look at a couple of general issues that we may encounter, when writing applications that communicate over TCP/IP networks.