Linux查看 UDP 和TCP 流量received和sent数据字节大小

在 Linux 系统中,可以通过以下方法查看 UDPTCP 的流量(receivedsent 数据字节大小):


1. 使用 /proc/net/snmp 文件

/proc/net/snmp 文件包含了详细的网络统计信息,包括 TCP 和 UDP 的接收和发送字节数。

查看 TCP 和 UDP 的字节数
bash 复制代码
cat /proc/net/snmp

输出示例:

复制代码
Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates
Ip: 1 64 123456 0 0 0 0 0 123456 987654 0 0 0 0 0 0 0 0 0
Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors
Tcp: 1 200 120000 -1 500 300 0 0 100 123456 987654 0 0 0 0
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors
Udp: 23456 0 0 12345 0 0 0
提取 TCP 和 UDP 的字节数
  • TCP 接收字节数(InSegs):

    bash 复制代码
    awk '/Tcp:/ {getline; print $10}' /proc/net/snmp
  • TCP 发送字节数(OutSegs):

    bash 复制代码
    awk '/Tcp:/ {getline; print $11}' /proc/net/snmp
  • UDP 接收字节数(InDatagrams):

    bash 复制代码
    awk '/Udp:/ {getline; print $4}' /proc/net/snmp
  • UDP 发送字节数(OutDatagrams):

    bash 复制代码
    awk '/Udp:/ {getline; print $5}' /proc/net/snmp

2. 使用 nstat 命令

nstat 是一个轻量级的工具,用于显示网络统计信息。

查看 TCP 和 UDP 的字节数
bash 复制代码
nstat -z

输出示例:

复制代码
TcpInSegs        123456
TcpOutSegs       987654
UdpInDatagrams   23456
UdpOutDatagrams  12345
提取 TCP 和 UDP 的字节数
  • TCP 接收字节数:

    bash 复制代码
    nstat -z | grep TcpInSegs | awk '{print $2}'
  • TCP 发送字节数:

    bash 复制代码
    nstat -z | grep TcpOutSegs | awk '{print $2}'
  • UDP 接收字节数:

    bash 复制代码
    nstat -z | grep UdpInDatagrams | awk '{print $2}'
  • UDP 发送字节数:

    bash 复制代码
    nstat -z | grep UdpOutDatagrams | awk '{print $2}'

3. 使用 ss 命令

ss 可以显示 TCP 和 UDP 的统计信息,但默认不显示字节数。可以结合 /proc/net/snmpnstat 使用。


4. 使用 iptables 统计流量

如果需要更精确的统计,可以使用 iptables 来记录 TCP 和 UDP 的流量。

添加规则统计流量
bash 复制代码
sudo iptables -A INPUT -p tcp
sudo iptables -A OUTPUT -p tcp
sudo iptables -A INPUT -p udp
sudo iptables -A OUTPUT -p udp
查看统计结果
bash 复制代码
sudo iptables -L -v -n

输出示例:

复制代码
Chain INPUT (policy ACCEPT 123456 packets, 98765432 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1000 50000            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
 500  25000            udp  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 987654 packets, 123456789 bytes)
 pkts bytes target     prot opt in     out     source               destination
 2000 100000           tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
 1000 50000            udp  --  *      *       0.0.0.0/0            0.0.0.0/0
  • TCP 接收字节数 :查看 INPUT 链中 tcpbytes
  • TCP 发送字节数 :查看 OUTPUT 链中 tcpbytes
  • UDP 接收字节数 :查看 INPUT 链中 udpbytes
  • UDP 发送字节数 :查看 OUTPUT 链中 udpbytes

5. 使用 tcpdump 统计流量

如果需要精确统计 TCP 和 UDP 的字节数,可以使用 tcpdump 捕获流量并分析。

捕获 TCP 流量
bash 复制代码
sudo tcpdump -i eth0 tcp -w tcp_traffic.pcap
捕获 UDP 流量
bash 复制代码
sudo tcpdump -i eth0 udp -w udp_traffic.pcap
使用 tshark 分析流量
bash 复制代码
tshark -r tcp_traffic.pcap -qz io,stat,0
tshark -r udp_traffic.pcap -qz io,stat,0

总结

  • 使用 /proc/net/snmpnstat 可以快速查看 TCP 和 UDP 的字节数。
  • 使用 iptables 可以实时统计 TCP 和 UDP 的流量。
  • 使用 tcpdumptshark 可以精确分析 TCP 和 UDP 的字节数。
  • 根据需求选择合适的工具即可!
相关推荐
故渊at6 分钟前
第十二板块:Android 系统启动与初始化 | 第二十九篇:Init 进程、RC 脚本与属性服务(Property Service)
android·linux·内存映射·权限控制·init进程·rc脚本·属性服务
某林21231 分钟前
ROS2 并行编译死锁与 Linux 后台声卡/提权踩坑实录:大型轮足机器人架构复盘
linux·架构·机器人·iassc
无足鸟ICT32 分钟前
【RHCA+】末行模式
linux
拼搏的小浣熊37 分钟前
【通用教程】Windows\+Linux\+银河麒麟系统 固定静态IP地址|解决打印机扫描IP变动、网络掉线问题
linux·网络·windows·麒麟·固定ip·麒麟系统·统信系统
小生不才yz41 分钟前
Shell脚本精读 · S02-02 | 转义、续行与注释
linux
zzqssliu1 小时前
Next.js图片自适应压缩:跨境站点图片加载提速代码方案
linux·javascript·ubuntu
苏宸啊1 小时前
IPC(二)Syestem V
linux
干掉乔治的猪1 小时前
【如何恢复 Ubuntu 引导分区:Windows11 + Ubuntu22.04 双系统 GRUB 修复踩坑记录】
linux·ubuntu·grub·修复·双系统
流浪0011 小时前
Linux系统篇(五):Linux 进程控制全解:fork、exec、wait 核心原理与实战
linux·运维·服务器
不会就选b1 小时前
Linux之make,makefile
linux·运维·服务器