Linux netstat命令结果分析
时间:2022-07-22
本文章向大家介绍Linux netstat命令结果分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一:获取数据
- 使用命令
netstat -anp //命令介绍: netstat : linux中查看网络状态的命令 -a : 显示所有的连接 -n : 以ip格式显示 -p : 显示连接对应的进程 netstat命令详解请移步:http://man.linuxde.net/netstat
- 参数含义(来自菜鸟教程):
- -a或--all 显示所有连线中的Socket。
- -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
- -c或--continuous 持续列出网络状态。
- -C或--cache 显示路由器配置的快取信息。
- -e或--extend 显示网络其他相关信息。
- -F或--fib 显示FIB。
- -g或--groups 显示多重广播功能群组组员名单。
- -h或--help 在线帮助。
- -i或--interfaces 显示网络界面信息表单。
- -l或--listening 显示监控中的服务器的Socket。
- -M或--masquerade 显示伪装的网络连线。
- -n或--numeric 直接使用IP地址,而不通过域名服务器。
- -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
- -o或--timers 显示计时器。
- -p或--programs 显示正在使用Socket的程序识别码和程序名称。
- -r或--route 显示Routing Table。
- -s或--statistice 显示网络工作信息统计表。
- -t或--tcp 显示TCP传输协议的连线状况。
- -u或--udp 显示UDP传输协议的连线状况。
- -v或--verbose 显示指令执行过程。
- -V或--version 显示版本信息。
- -w或--raw 显示RAW传输协议的连线状况。
- -x或--unix 此参数的效果和指定"-A unix"参数相同。
- --ip或--inet 此参数的效果和指定"-A inet"参数相同。
- 得到结果
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 458/sshd
tcp 0 52 10.105.254.117:22 124.251.53.238:58615 ESTABLISHED 29936/sshd: root@pt
tcp6 0 0 :::3306 :::* LISTEN 32519/mysqld
tcp6 0 0 :::111 :::* LISTEN 5737/rpcbind
tcp6 0 0 :::22 :::* LISTEN 458/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 5737/rpcbind
udp 0 0 0.0.0.0:824 0.0.0.0:* 5737/rpcbind
udp6 0 0 :::111 :::* 5737/rpcbind
udp6 0 0 :::824 :::* 5737/rpcbind
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 130995418 32519/mysqld /var/lib/mysql/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 12137 454/lsmd /var/run/lsm/ipc/simc
unix 2 [ ] DGRAM 6767 1/systemd /run/systemd/notify
unix 2 [ ] DGRAM 6769 1/systemd /run/systemd/cgroups-agent
unix 2 [ ACC ] STREAM LISTENING 6778 1/systemd /run/systemd/journal/stdout
unix 5 [ ] DGRAM 6781 1/systemd /run/systemd/journal/socket
unix 8 [ ] DGRAM 6783 1/systemd /dev/log
unix 2 [ ACC ] STREAM LISTENING 9601 1/systemd /run/lvm/lvmetad.socket
unix 2 [ ] DGRAM 9613 1/systemd /run/systemd/shutdownd
unix 2 [ ACC ] STREAM LISTENING 9615 1/systemd /run/lvm/lvmpolld.socket
unix 2 [ ACC ] STREAM LISTENING 11170 1/systemd /var/run/rpcbind.sock
unix 2 [ ACC ] STREAM LISTENING 12196 454/lsmd /var/run/lsm/ipc/sim
unix 2 [ ACC ] STREAM LISTENING 11173 1/systemd /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 11944 462/acpid /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 9448 1/systemd /run/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 9464 1/systemd /run/udev/control
二:结果分析
- 分为两部分:
- Active Internet connections(有源Internet连接):用于网络连接传输
- Active UNIX domain sockets(有源UNIX套接字):只能用于本地通信,性能比第一种好
- Active Internet connections 部分:
- 字段介绍:
- Proto : 该连接所使用的协议
- Recv-Q : 接受队列
- Send-Q : 发送队列
- Local Address: 本地ip:port
- Foreign Address : 远程主机ip:port
- State :连接所处的状态
- PID/Program name :使用该连接的进程id和name
- 相关字段作用:
- Proto :通过此字段可以看到连接使用的是什么协议,主要是TCP协议还是UDP协议,还有TCP6、UDP6这就是使用了ipv6的协议
- Recv-Q :表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()。如果接收队列Recv-Q一直处于阻塞状态,也就是Recv-Q值不为零并且值挺大,可能是遭受了Dos 攻击。
- Send-Q :对方没有接受的数据,仍然在本地缓冲区中。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。这时候就要调整发送速度或者接受速度了。例如:如果看到是大量的 send-Q ,可以判定是发送数据给目的地址的时候出现了阻塞的问题,导致了包堆积在本地缓存中,不能成功发出去。那么问题就可能产生在了客户端,根据业务逻辑可以看看是不是客户端发送的TCP长连接数量过多。验证办法,尝试减少客户端和服务的长连接.查看效果。
- Recv-Q 和 Send-Q :这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。
- 在正常情况下, LISTEN 状态中: Recv-Q 表示的当前等待服务端调用 accept 完成三次握手的 listen backlog 数值,也就是说,当客户端通过 connect() 去连接正在 listen() 的服务端时,这些连接会一直处于Recv-Q这个queue 里面直到被服务端 accept();Send-Q 表示的则是最大的 listen backlog 数值。
- 其余状态: 非 LISTEN 状态之前理解的没有问题。Recv-Q 表示 receive queue 中的 bytes 数量;Send-Q 表示 send queue 中的 bytes 数值。
- State:标识tcp连接状态,比如TCP的状态有:(图片来自:https://www.cnblogs.com/qingergege/p/6603488.html)
- Active UNIX domain sockets 部分:
- 字段介绍:
- Proto : 该连接所使用的协议
- RefCnt:引用计数(即通过此套接字附加的进程),也就是连接到本套接口上的进程数量
- Flags:"The flags displayed are SO_ACCEPTON (displayed as ACC), SO_WAITDATA (W) or SO_NOSPACE (N). SO_ACCECPTON is used on unconnected sockets if their corresponding processes are waiting for a connect request. The other flags are not of normal interest." 即:显示的标志有SO_ACCEPTON(显示为ACC),SO_WAITDATA(W)或SO_NOSPACE(N)。 SO_ACCECPTON进程正在等待连接请求还未连接的套接字。
- Type:套接字的类型
- 有几种类型的套接字访问:
- SOCK_DGRAM:数据报(无连接)模式。
- SOCK_STREAM:流(连接)套接字。
- SOCK_RAW:原始套接字。
- SOCK_RDM:这个服务器提供可靠传递的消息。
- SOCK_SEQPACKET:这是一个顺序数据包套接字。
- SOCK_PACKET:原始接口访问套接字。
- State:套接字当前的状态
- 该字段将包含以下状态:
- FREE:未分配套接字。
- LISTENING:套接字正在侦听连接请求。如果指定--listening(-l)或--all(-a)选项,则此类套接字仅包含在输出中。
- CONNECTING:套接字即将建立连接。
- CONNECTED:已连接套接字。
- DISCONNECTING :套接字正在断开连接。
- (empty) :套接字未连接到另一个套接字。
- PID/Program name :使用该连接的进程id和name
- I-Node:unix系统文件系统中每个文件都存在的inode
- Path:”This is the path name as which the corresponding processes attached to the socket.“ 即:代表附加到套接字的相应进程的路径名
- 协议森林10 魔鬼细节 (TCP滑窗管理)
- CMD魔法堂:获取进程路径和PID值的方法集
- .Net魔法堂:提取注释生成API文档
- CMD魔法堂:CMD进入指定目录
- Apache IIS Tomcat共存,配置全能服务器
- 协议森林11 涅槃 (TCP重新发送)
- CentOS6.5菜鸟之旅:关于搜索的shell命令
- 协议森林12 天下为公 (TCP堵塞控制)
- .Net魔法堂:AssemblyInfo.cs文件详解
- 本地php环境不支持curl_exec的解决办法
- JAVA魔法堂:读取.properties配置文件
- Python深入04 闭包
- PHP获取时间戳的毫秒
- Python深入03 对象的属性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java面试题汇总-基础篇
- SpringMVC全局异常处理机制
- centos su sudo wheel
- List集合的坑
- NIO从入门到踹门
- GitHub CLI 1.0.0 正式发布!
- 【Flink】从零搭建实时数据分析系统
- Android模拟面试,解锁大厂——从Activity创建到View呈现中间发生了什么?
- 问你一个简单的问题:IP是怎么来的,又是怎么没的?
- 进击的NIO!Reactor模式!
- 交换机与VLAN:以办公室为例趣讲一波!
- 超详细Netty入门,看这篇就够了!
- Netty进阶之粘包和拆包问题
- 用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
- Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储