Summary
In the first part of this chapter, we looked at the essentials of networking with TCP/IP. We discussed the concept of network stacks, and looked at the principle protocols of the Internet protocol suite. We saw how IP solves the problem of sending messages between devices on different networks, and how TCP and UDP provide end-to-end transport between applications.
In the second section, we looked at how network programming is generally approached when using Python. We discussed the general principle of using modules that interface with services as far up the network stack as we can manage. We also discussed where we might find those modules. We looked at examples of employing modules that interface with the network stack at different layers to accomplish a simple network task.
Finally, we discussed some common pitfalls of programming for TCP/IP networks and some steps that may be taken to avoid them.
This chapter has been heavy on the networking theory side of things. But, now it's time to get stuck into Python and put some application layer protocols to work for us.