ss VS netstat 解析
netstat
- 显示网络连接信息
- 显示路由信息
- 显示接口统计信息
- 显示组播成员信息
仔细阅读 man netstat 会发现 这样一句话:
This program is obsolete.
原来netstat,官方已经不再更新了,已经被ss和ip命令所取代。
ss 命令是一个用来查看socker信息的命令。用来获取socker统计信息,ss优势在于它能够显示更多更详细的有关网络连接状态的信息,比netstat更快速、更高效。
当服务器socker连接数量变大时,无论是使用netstat还是直接读取/proc/net/tcp文件,执行速度都会非常慢,当服务器维持的连接达到上万个的时候,使用ss 是最明智的选择。
ss 高效率的秘诀:它利用了TCP协议栈中的tcp_diag模块,tcp_diag是一个用于分析统计的模块。可以获得Linux内核中的第一手信息,这就确保了ss的快捷高效。如果系统中没有tcp_diag模块,ss也可以正常的运行,只是运行速度稍慢,但仍然比netstat快不少。
例如服务器维持着3万个socker连接,此时需要管理员计算当前服务器的总连接数。
可以看出利用了tcp_diag模块,ss命令效率更快。
几乎所有的Linux系统都会默认包含netstat命令,但并非所有的系统都会默认包含ss命令。
netstat 命令是net-tools软件包中的一员:
[[email protected] ~]# rpm -q net-tools
net-tools-2.0-0.22.20131004git.el7.x86_64
ss命令是iproute2软件包中的一员:
[[email protected] ~]# rpm -qf /usr/sbin/ss
iproute-3.10.0-87.el7.x86_64
如果系统中无法找到ss命令,那么可能是没有安装iproute2造成的,安装的方法:
yum -y install iproute iproute-doc
iproute2 这是一套可以支持ipv4/ipv6 网络的用于管理TCP/UDP/IP网络的软件包,这套工具由Stephen Hemminger负责维护和升级。
ss 选项统计
- ss 选项并不算太多,除去非功能选项(-h/-v)外,ss共有22个选项。
- 每个选项都是既支持短选项(-s)也支持长选项(--summary)。
1、查看当前服务器的网络连接统计
2、查看所有打开的网络端口
[[email protected] ~]# ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 rtnl:641729279 *
nl UNCONN 0 0 rtnl:641729279 *..........................................................................................
使用 -pl 参数,还会列出具体的程序名称,例如:
[[email protected] ~]# ss -pl | grep sshd
u_dgr UNCONN 0 0 * 22236 * 8464 users:(("sshd",pid=1428,fd=4))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=1091,fd=3))
tcp LISTEN 0 128 :::ssh :::* users:(("sshd",pid=1091,fd=4))
3、查看一台服务器上的socker连接,使用 -a 选项可以列出所有的网络连接。
- 查看TCP socker ,就用 -ta 选项,-t表示TCP
- 查看UDP socker ,就用-ua选项,-u表示UDP
- 查看RAW socker, 就用-wa选项,-w表示RAW
- 查看UNIX socker , 就用-xa 选项,-x表示UNIX
iproute2软件包,专注在网络配置(network configuration)和流量控制(traffic control)方面。
包括以下主要工具:
- ip : 管理路由、设备、策略和隧道等
- ss : 展示系统套接字相关信息
- tc : 管理流量控制策略
- nstat : 用于网络统计
- bridge : 管理桥接地址和设备
- ifcfg : 进行 ip 管理,以替代ifconfig命令
- lnstat : 展示网络状态
为什么iproute2可以取代net-tools ,成为主流Linux发行版的标配?
很久之前,包含arp、ifconfig和route在内的net-tools工具集,是普遍存在于各类Linux发行版和UNIX操作系统之中的,而且大家用起来也很好,但是,Linux内核的2.2版本,对网络子系统进行了全面的重构,性能显著提升,全新的路由,过滤和分级策略是其他系统无法比拟的自从Linux内核发布V2.2版本之后,net-tools工具集就变得有些力不从心了,比如,它们无法支持GRE隧道技术,用户需要去寻找net-tools之外的工具才能实现一些新的网络配置策略,而iproute2则对GRE隧道等技术支持的非常好。
什么是GER隧道技术?
首先解释什么是隧道技术,隧道技术是一种"网络协议的数据包被封装在另一个网络协议的数据包中 以进行数据网络传输"的技术,这种技术其实也是v*n的技术基础和前提。
而GER技术,则是隧道技术中应用最为普遍和广泛的一个,它的全称为通用路由封装(Generic Routing Encapsulation),是由Net-Smiths和Cisco来主导设计的,它工作在网络层,目前已被绝大多数电信设备厂商所支持。
常用命令的新老对应关系展示出来
------------------------ 历经天华成此景,世间万事出艰辛!-------------------------