Linux之网络管理(8)网络监控工具
linux中有很多查看网络、进程通信状态的查看工具,而网络之间建立通信是通过soket套接字进行的,所谓套接字,就是相当于插座,而一台主机上会产生多种套接字,就是相当于插头向插座插入的过程,也就是主机中进程通信。而在网络中建立通信,就是双方各种插入对方。当然这些只是粗率的比喻,实际上,soket是用来将tcp/udp等协议发送的数据包进行封装:也就是相当于食品包装,把数据包加上port端口号、进程号等然后发送给对方,然后对方根据数据的包装袋来放回特定需要的数据。这样网络之间各种进程直接通信之间互不干扰。就像送快递和收快递的一样,谁的快递,谁来收,路线就是到你家。
linux中提供的工具:
netstat 命令
man 文档帮助的说明:
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
打印网络连接、路由表、接口统计、伪装连接、多播连接等信息。
选项介绍:
netstat [option]...
-r : 显示路由表
-t : 已经建立的tcp协议相关
-u : 已经建立的udp协议相关
-w : raw sokect (未包装处理的)
-l : 处于监听状态
-a : 所有状态
-n : 及数字显示IP和端口
-e : 扩展方式详细更多状态信息
-p : 显示相关进程及PID
常用组合使用:
查明网络连接:
netstat -tan 显示所有tcp相关的连接状态
netstat -uan 显示所有udp相关的连接状态
netstat -tnl 显示所有监听状态的tcp连接
netstat -unl 显示所有监听状态的udp连接
显示路由表:
netstat -rn 不做反向解析显示内核路由表
显示接口统计数据:
netstat -i #显示所有网络接口信息状态
netstat -I=FACE_NAME #显示指定设备信息状态
例子:netstat -I=eth0 #显示eth0设备数据连接状态信息
ss命令
ss - another utility to investigate sockets
这是另一种显示套接字信息的工具,netstat命令通过遍历proc 来获取socket信息,以及是老旧的命令了,ss使用netlink与内核tcp_diga模块通信获取socket信息,更加准确。
格式及选项介绍:
ss[option] [FILTER]
option:
-t : tcp 协议相关
-u : udp协议相关
-w : 裸套接字符相关
-x : unix sock系统内核相关
-l : listen监听状态的连接
-a : 所有连接
-n : 数字格式
-p : 相关的程序及PID
-e : 扩展的信息
-m : 内存用量
-o : 计时器信息
FILTER : = [ state TCP-STATE ] [ EXPRESSION ]
TCP的标准状态:
LISTEN :监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED关闭
EXPRESSION:
dport =#目标端口
sport = #源端口
例子:’( dport = :ssh or sport = :ssh )’
常用组合:
ss -tan#所有tcp连接状态
ss -tanl #所有监听的tcp状态
ss -tanlp #所有监听tcp的并显示进程PID
ss -uan #所有udp状态
额外用法:
ssh -A QUERY#查看对应类型或协议的状态,QUERY参数为要指定的类型
QUERY:
all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream,
unix_seqpacket, packet_raw, packet_dgram.
TCP-STATE中可用的标示符参数:
所有TCP标准状态参数:
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed,
close-wait, last-ack, listen, closing.
复杂状态参数:
all 所有的状态
connection 所有连接的(除了监听和关闭的)状态
synchronized 所有同步的,除了syn-sent所有连接的状态
bucket 所有维护scokect和 syn-recv的状态
big 所有和bucket相反的状态
案例展示:
显示本地打开的所有端口 ss -l
[root@localhost www]# ss -l | tail -n 10
解析:udp是没有状态的,所以打开的连接会显示两个协议所有处于监听状态连接
显示每个进程具体打开的 socket。
[root@localhost www]# ss -pl | tail -n 10
显示所有tcp socket
[root@localhost www]# ss -t -a
显示所有UDP Socekt
[root@localhost www]# ss -u -a
显示所有已经建立的SMTP连接
[root@localhost www]# ss -o state established '( dport = :smtp or sport = :smtp )'
显示所有已经建立的HTTP连接
[root@localhost www]# ss -o state established '( dport = :http or sport = :http )'
找出所有连接X服务器的进程
[root@localhost www]# ss -x src /tmp/.X11-unix/*
列出当前各协议的各套接字个数
[root@localhost www]# ss -s
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。