netstat从proc文件系统(可参考linux中不可错过的信息宝库)获取所需要的信息,而ss利用netlink机制,与内核通信,通过TCP 协议栈中 tcp_diag 模块获取第一手的内核信息。
- 查看TCP/UDP连接
$ss –t
使用-t(TCP)参数查看TCP连接,而使用-u(UDP)参数查看UDP socket:
其中state显示了当前连接的状态,例如结果的第一行是ESTABLISHED状态,Local Address:port代表本地连接的ip和端口号。另外使用-n参数显示数字形式的ip和端口。
- 查看socket进程信息processes
$ss –tp
- 查看处于特定状态的socket
$ss –t state LISTENING
我们知道,对于TCP连接来讲,在不同的阶段它的状态不同,常见状态有
ESTABLISHED 已建立
CLOSED 已关闭
LISTENING 正在监听
FIN-WAIT-2 等待连接关闭
TIME-WAIT 等待足够时间,确保服务器正常关闭该连接
……
这里还有很多其他状态,我们会留到介绍TCP的时候展开。
- 查看tcp相关的定时器信息
$ss –to
- 查看socket详细信息information
$ss –ti
- 查看socket内存使用情况memory
$ss –tm
由于信息较多,这里只显示内存部分,括号内从左到右分别代表:
接收报文分配的内存
接收报文可分配的内存
发送报文分配的内存
发送报文可分配的内存
socket使用的缓存
为将要发送的报文分配的内存
保存socket选项使用的内存
连接队列使用的内存
- 根据IP和端口过滤socket信息 src本地,drc远端,sport,dport
$ss –t src IP
$ss –t src IP:port
- 显示socket的统计信息summary
$ss –s