Linux网络协议栈以TCP/IP模型为基础进行实现,该模型由应用层、传输层、网络层以及网络接口层四层构成,每层均具有各自特定的功能与职责。
当应用程序需要发送数据包时,它会通过socket接口发起系统调用,将应用层的数据拷贝至内核中的socket层。随后,数据由网络协议栈自上而下逐层处理,最终送达网卡发送至外部网络。接收网络包时,处理方向相反,自下而上逐层解析后送至应用程序。
衡量Linux网络性能的指标通常包括带宽、延时、吞吐率以及PPS(Packet Per Second)。这些指标分别表示链路的最大传输速率、请求数据包发送与收到响应的时间延迟、单位时间内成功传输的数据量以及每秒传输的数据包数量。
为了查看网络的配置和状态,我们可以使用ifconfig或ip命令。这两个命令功能相似,但属于不同的软件包。尽管ifconfig属于较早的net-tools软件包,但现在更推荐使用ip工具,因为ip属于更新的iproute2软件包且仍在维护中。
使用ifconfig或ip命令可以查看网口如eth0的配置信息,包括IP地址、子网掩码、MAC地址、网关地址以及MTU大小等。还能查看网络包收发的统计信息,如errors、dropped、overruns等错误指标,这些信息有助于判断网络是否正常工作。
对于协议栈内的信息,我们可以使用netstat或ss命令进行查看。这两个命令可以显示socket、网络协议栈、网口及路由表的信息。而若想获取网络的吞吐率和PPS,则可以使用sar命令,并为其添加相应的参数来查看网络的统计信息。
为了测试本机与远程主机的连通性和延时,常使用ping命令。该命令基于ICMP协议工作在网络层,可以显示ICMP序列号、TTL以及往返延时等信息。但需注意,ping不通的服务器并不代表HTTP请求也无法通达,因为有的服务器的防火墙可能会禁用ICMP协议。