前言
经过对Linux CPU、内存、I/O的性能指标了解后,我们今天再来看Linux另外一个重要的模块-网络的性能指标。
网络是一种把不同计算机或网络设备连接到一起的技术,它本质上是一种进程间的通信方式,特别是跨系统的进程间通信,必须要通过网络才能进行。
同样,先简单了解下Linux网络的工作过程,这样才能帮助我们更好地理解网络的性能指标。
Linux网络是如何工作的
说到网络,离不开网络模型。我们熟知的有OSI七层网络模型,以及实际更实用的四层模型,即TCP/IP网络模型。TCP/IP把网络互联的框架分为应用层、传输层、网络层、网络接口层,各层分工如下:
- 应用层:负责和面向用户的应用程序协同工作,相关协议包括HTTP、FTP、DNS等
- 传输层:负责端到端的通信,相关协议包括TCP、UDP等
- 网络层:负责网络包的封装、寻址和路由,相关协议包括IP、ICMP等
- 网络接口层:负责网络包在物理网络中的传输,比如MAC寻址、错误侦测以及通过网卡传输网络帧等,相关协议包括ARP等
Linux内核中的网络栈,也类似于TCP/IP的四层结构,如下为Linux通用IP网络栈的示意图
从上到下看这个网络栈,可以发现:
- 最上层的应用程序,需要通过系统调用,来