Linux网络编程


#1 Linux先导知识

#2 Linux套接字

#3 I/O多路复用

#4 惊群避免


《Linux网络编程》原为作者于2019年以课程助教身份为南京大学软件学院在《计算机网络》(本科)课程准备的网络编程相关教程内容。该教程旨在站在大学课程的角度作为网络编程的原理解析和探索引导,而非(也不适合作为)网络编程相关API使用方法的教学。

在传统计算机网络教学中,利用TCP/IP协议簇和OSI标准模型的网络相关教学已颇为详尽,但是和网络编程相关的教学内容却依然甚少。更重要的是,在现今互联网环境下,开发出具有高并发、高吞吐量和低延迟的网络应用,需要了解网络编程的相关原理,或根据网络编程相关原理选择合适的框架。

该教程选择Linux作为切入点,进行网络编程相关原理的探讨。一是考虑到Linux作为常见的服务端操作系统,在网络编程领域具有普遍适用性;二是考虑到Linux具有开放源代码的特性,基于Linux进行网络编程相关阐述,读者较容易验证本文所述内容的正确性。

本教程主要围绕套接字(Socket)展开网络编程的相关论述,预设编程人员使用套接字相关系统调用访问Linux网络编程服务,而非使用诸如DPDK等不基于套接字API进行网络编程(同时也不会加入对基于DPDK等非套接字API进行网络编程的内容)。

为了让本文内容更为丰富和正确,量物力之欠缺,故将该教程开源,任何人均可在遵照相关许可的前提下,进行使用及二次创作:https://github.com/aegistudio/linux-network-programming/blob/master/README.txt

August 10, 2019