netstat工具学习记录

文章目录

netstat工具学习记录

Netstat(网络统计)是一个非常强大的命令行工具,它用于显示网络连接、路由表、接口统计、伪装连接和多播成员资格等信息。与其他网络监控工具相比,Netstat的主要优势在于其广泛的可用性(大多数Unix-like系统和Windows上都可用)以及它提供的详细网络连接和统计信息。

主要特点

  • 广泛可用:几乎所有的操作系统都内置了Netstat工具。
  • 多功能性:能够显示各种网络相关信息,如当前打开的连接、正在监听的端口、网络统计等。
  • 实时监控:尽管Netstat本身不支持实时监控,但可以通过定时运行来模拟实时数据收集。

如何安装和使用Netstat

在大多数Unix-like系统中,Netstat通常作为net-tools包的一部分预装在系统中。对于Windows系统,Netstat已经包含在操作系统中,无需额外安装。

基本使用
  • 查看所有连接:netstat -a
  • 查看所有TCP连接:netstat -at
  • 查看所有UDP连接:netstat -au
  • 显示每个协议的统计信息:netstat -s

使用Netstat进行日志分析

Netstat本身并不直接支持日志分析。您提到的分析需求更适合使用日志分析工具(如GoAccess、AWStats等)或自定义脚本来处理Web服务器日志(如Apache或Nginx日志)。

指定域名下,分析各个状态码请求数量/请求比例:

​ 使用awk或grep等工具从Web服务器日志中筛选出特定域名的请求,然后统计各个HTTP状态码的出现次数。

bash 复制代码
cat access.log | grep "指定域名" | awk '{print $9}' | sort | uniq -c | sort -rn
指定域名下,分析C段IP的请求数Top 10:

​ 通过分析日志文件,提取出对应域名的IP地址,然后使用sort和uniq等命令来统计C段IP地址(即IP地址的前三个部分)的请求数,并使用head命令获取前10名。

bash 复制代码
cat access.log | grep "指定域名" | awk '{print $1}' | cut -d'.' -f1,2,3 | sort | uniq -c | sort -rn | head -10
指定域名下,分析C段IP的流量Top 10:

​ 类似于上述请求数的分析,但需要从日志中提取每个请求的数据量,并累加计算。

bash 复制代码
cat access.log | grep "指定域名" | awk '{ip[$1]+=$10} END {for (i in ip) print i, ip[i]}' | sort -k2 -rn | head -10
按域名统计流量Top 10:

​ 分析日志文件,根据域名提取流量信息,并进行汇总排序。

bash 复制代码
awk '{domain[$11]+=$10} END {for (d in domain) print d, domain[d]}' access.log | sort -k2 -rn | head -10
按域名统计平均下载速率 (KB/s):

​ 需要从日志中提取总传输数据量和时间戳,然后计算平均下载速率。

bash 复制代码
awk '{speed[$11]+=$10; count[$11]++} END {for (d in speed) print d, (speed[d]/count[d])/1024 " KB/s"}' access.log
按域名统计5分钟粒度带宽 (fKbps):

​ 同样需要时间戳和传输数据量信息,通过划分时间窗口来计算每个窗口内的带宽使用情况。

bash 复制代码
awk '{time=strftime("%Y-%m-%d %H:%M", $4); domain[$11][time]+=$10} END {for (d in domain) for (t in domain[d]) print d, t, (domain[d][t]*8)/(5*60) " Kbps"}' access.log

其他类似工具(命令)及使用场景

ss (Socket Statistics)

简介:ss 是一个用于检查套接字统计信息的工具。它可以显示和监控与 netstat 类似的信息,但它更快且能提供更多的统计数据。

使用场景:ss 常用于显示特定类型(如 TCP、UDP)的连接信息、监听端口等。它特别适用于快速诊断系统上的网络连接问题。

bash 复制代码
#列出所有打开的网络连接:
ss -tulwn
#列出所有TCP连接:
ss -t -a
#查找监听特定端口的进程(例如查找监听端口 22 的进程):
ss -ltnp | grep ':22'
lsof (List Open Files)

简介:lsof 是一个列出当前系统打开文件的工具。由于在 UNIX 和 Linux 中一切皆文件,网络连接也被视为文件,因此 lsof 可以用来显示网络连接信息。

使用场景:lsof 常用于查找哪个进程监听或打开了某个端口,以及确定哪个进程正在使用某个文件或套接字。

bash 复制代码
#列出所有打开的网络文件:
lsof -i
#查找特定端口的使用情况(例如查找端口 80):
lsof -i :80
#查找某个特定进程打开的文件(通过PID,假设PID为1234):
lsof -p 1234
nmap (Network Mapper)

简介:nmap 是一个网络探测和安全审核的工具。虽然它不直接与 netstat 功能重叠,但它可以用来探测网络上的设备、服务以及对应的端口。

使用场景:nmap 常用于网络安全扫描、发现网络上的设备和服务、检测开放端口以及运行在这些端口上的应用程序版本。

bash 复制代码
#扫描特定主机的开放端口(替换<host>为实际的主机名或IP地址):
nmap <host>
#扫描特定范围内的IP地址(例如扫描192.168.1.0/24网络):
nmap 192.168.1.0/24
#检测特定主机上开放端口的服务版本:
nmap -sV <host>
tcpdump

简介:tcpdump 是一个强大的命令行网络分析工具,它可以捕获网络层上的数据包。

使用场景:tcpdump 常用于抓取并分析通过网络接口传输的数据包。这对于网络流量分析、监控和理解网络问题非常有用。

bash 复制代码
#抓取并显示所有经过第一个网络接口的包:
tcpdump -i eth0
#抓取并显示特定端口(例如80)的数据包:
tcpdump port 80
#将捕获的数据包写入文件:
tcpdump -w filename.pcap
Wireshark

简介:虽然 Wireshark 是一个图形界面工具,但它是世界上最广泛使用的网络协议分析器。它能够深入分析网络数据包,提供详尽的网络通信细节。

使用场景:Wireshark 常用于网络故障排除、软件和协议开发、教育目的以及网络安全分析。

  • ​ 启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。

  • ​ 过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。

    和协议开发、教育目的以及网络安全分析。

  • ​ 启动Wireshark:直接打开Wireshark应用程序,选择网络接口开始捕获。

  • ​ 过滤数据包:在顶部的过滤栏中输入过滤条件,如 ip.addr == <IP地址> 或 tcp.port == <端口号>。

  • ​ 保存捕获的数据包:在文件菜单中选择"保存",保存您的会话数据。

相关推荐
编程版小新6 分钟前
C++初阶:STL详解(四)——vector迭代器失效问题
开发语言·c++·迭代器·vector·迭代器失效
c4fx26 分钟前
Delphi5利用DLL实现窗体的重用
开发语言·delphi·dll
李小星同志35 分钟前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c1 小时前
MFC 使用细节
笔记·学习·mfc
鸽芷咕1 小时前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
王哲晓1 小时前
Linux通过yum安装Docker
java·linux·docker
Jhxbdks1 小时前
C语言中的一些小知识(二)
c语言·开发语言·笔记
java6666688881 小时前
如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
java·开发语言
Violet永存1 小时前
源码分析:LinkedList
java·开发语言
小江湖19941 小时前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it