給定 ifconfig RX/TX 傳輸的資料包,我如何獲得 RX/TX 傳輸的位元組?

給定 ifconfig RX/TX 傳輸的資料包,我如何獲得 RX/TX 傳輸的位元組?

我正在運行 UbuntuLinuxv18,這是產生的有關我的網卡的資訊ifconfig

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::4a75:bbe4:742d:d77b  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:55:c7:9f  txqueuelen 1000  (Ethernet)
        RX packets 2443063  bytes 868405621 (828.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2343559  bytes 1022562153 (975.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

某些系統(即:路由器上的嵌入式 Linux)僅報告 RX/TX 資料包,但不顯示 RX/TX 位元組。

在Linux作業系統上有什麼辦法取得給定 RX/TX 封包的 RX/TX 位元組

我認為一些相關的問題是:

  • 這個等價總是相同的(即:1024 因子)嗎?
  • 這種等價性在運行時(動態)會改變嗎?
  • 這個等效項是否依賴作業系統?或者也許依賴網路卡?
  • 有沒有等價的地方?

答案1

不存在等價物,資料包的大小取決於其內容。您只能獲得最小和最大尺寸;例如,乙太網路幀可以佔用 72 到 1530 個八位元位元組(忽略巨型幀),因此n乙太網路介面上的資料包代表 72 ×n和 1530 ×n傳輸的位元組。

ifconfig路由器上的命令可能不會顯示位元組計數,但如果您的路由器運行 Linux,則會追蹤這些計數;作為莫斯維評論過,你應該可以看到他們使用

ip -s link show eth0

或者

head /sys/class/net/eth0/statistics/*_bytes

相關內容