网络 I/O(Input/Output)是指操作系统与网络接口之间的数据传输操作,包括从网络中接收数据和向网络中发送数据。本质上是通过协议栈的“socket接口”实现对远端主机的访问。
基本概念
性能指标
1、带宽
在单位时间内传输的数据量,理论上的最大传输速率,单位为bps(比特每秒)。
2、延时
数据传输所经历的时间,单位为ms(毫秒)。
3、吞吐量
网络在特定时间内传输的数据量,是实际达到的数据传输率,受带宽、延时、丢包率等因素的影响。
4、IOPS
I/O per second,即每秒钟可以处理的I/O个数。
TCP建立、关闭连接的相关状态
1、三次握手(建立连接)
(1)LISTENING
服务端监听tcp端口的连接请求。
(2)SYN-SENT
客户端发送请求连接,等待状态。
(3)SYN-RECV
服务端接收连接请求,发送确认状态。
(4)ESTABLISHED
该状态表示连接建立,正在传输数据。
2、四次挥手(关闭连接)
(1)FIN-WAIT1
主动发起关闭端(客户端)发出FIN请求时,进入的状态。
(2)FIN-WAIT2
主动发起关闭端(客户端)接收到ACK回复后,进入该状态(半关闭状态)。此时应用程序可以接收数据,无法发送数据。
(3)CLOSE-WAIT
被动关闭端(服务端)接收到FIN,回复ACK后进入的状态。
(4)LAST-ACK
被动关闭端(服务端)传输完所有数据后,发送FIN并进入的状态。
(5)TIME-WAIT(2MSL状态)
主动发起关闭端(客户端)接收到FIN,发送ACK后进入的状态。
(6)CLOSED
被动关闭端(服务端)接收ACK后,进入closed的状态。
注:
1、客户端SYN-SENT状态非常短暂,如果服务器出现大量该状态,排查一下是不是线路不好或存在扫描网段的病毒工具。
2、服务端SYN-RECV状态也非常短暂,存在大量该状态检查一下服务器是否被攻击。
常用分析工具
netstat
netstat命令用于显示网络连接、路由表、接口统计等信息。
# 显示tcp、udp的网络连接状态、进程
netsta -antup
ss
ss命令用于显示系统中socket的统计信息。与netstat类似,但更加详细且处理大量连接时更高效。
ss -tunpa
sar
sar命令用于收集、报告系统活动信息,包括CPU、内存、I/O、进程活动等。
# 统计网卡接口的网络流量
sar -n DEV 1 10
IFACE:网络接口的名称。
rxpck/s:每秒钟接收的数据包数量。
txpck/s:每秒钟发送的数据包数量。
rxkB/s:每秒钟接收的字节数(以KB为单位)。
txkB/s:每秒钟发送的字节数(以KB为单位)。
rxcmp/s:每秒钟接收的压缩数据包数量。
txcmp/s:每秒钟发送的压缩数据包数量。
rxmcst/s:每秒钟接收的多播(组播)数据包数量。
%ifutil:网络接口利用率百分比(忙碌程度)。
总结
关于网络I/O,开发人员更需要理解I/O模型、协议栈等,本文从运维的角度简述网络的几个重要指标、tcp连接状态以及服务器出现网络问题时如何定位分析。
网络I/O问题的排查思路
1、使用ifconfig/ip命令查看网卡接口是否产生了大量错误,排查是否存在硬件问题?
2、确认网络设备中的流量类型,是否有进程处理该类型的流量?进一步找到该进程的套接字socket。(软件问题)
网络 I/O工具
ping:测试连通性
ifconfig/ip:配置和查看网络接口
netstat/ss:统计网络连接和端口
ifstat:监控网络流量
tcpdump:抓包分析
traceroute:追踪网络路径,
nmap:扫描网络
sar:收集系统活动信息
iperf/netperf:测试网络带宽
dtrace/strace:跟踪系统调用
DY2 天前
发表在:Infini & 五一小惊喜We're a group oof vo...
刀客6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:E5可以不止200开. ...
刀客6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@JK:现在Windows客户端有检测了...
cnbobo6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:我E5 机器 200开,...
JK6 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!刀哥,现在用什么多开呀?
刀客6 天前
发表在:asu.edu 教育邮箱注册 [教育邮箱可以撸很多福利了]@野生奥特曼:感谢支持
野生奥特曼6 天前
发表在:asu.edu 教育邮箱注册 [教育邮箱可以撸很多福利了]按照教程申请成功
刀客8 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@cnbobo:你可以自己尝试一下~😄
cnbobo8 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!1K开? 你说错了吧100开吧,
刀客9 天前
发表在:Wipter - 全网首发 - 批量多开放大 - 保姆级教程!@ayun:Google一下,有很多卖I...