Linux is often used to operate network servers, and consequently, its networking implementation is powerful, comprehensive, and complex. This chapter discussed the general layered structure of the networking subsystem that allows for accommodating a large number of different protocols, and provides a rich set of services.
After introducing the idea of sockets that establish the link between networking layer and userland, we have discussed socket buffers, the fundamental in-kernel data structure for representation, and processing of packets obtained and sent via networks. We then discussed how network devices are operated and also explained how NAPI helps to ensure that they reach their full possible speed.
You have then seen how an IP packet travels through the network layer and how the transport layer processes TCP and UDP packets. Ultimately, the packets end up or originate from the application layer, and we have also explored the mechanisms behind this.
The chapter closed with a discussion of how networking can be initiated from within the kernel and how the netlink mechanism allows for installing a high-speed communication link between kernel and userland.
Continue reading here: System Calls
Was this article helpful?