iptables:如何计算数据包中有多少字节?

iptables:如何计算数据包中有多少字节?

我正在开发防火墙,我想知道如何计算数据包中有多少字节,或者至少知道平均值是多少。
当我在谷歌上搜索时,经常提到 1500 字节,但它似乎取决于文件大小和协议。1500
字节,是 tcp 的吗?icmp 呢?
出于好奇:最大大小是多少?

答案1

使用 iptables 了解数据包大小的一种方法是使用-j LOGtarget。您可以使用它来记录特定数据包。在系统日志文件中,您可以看到如下日志记录:

IN=<iface1> OUT=<iface2> SRC=1.2.3.4 DST=4.3.2.1 LEN=1400

此数据包长度为 1400 字节。最大数据包大小由底层协议决定。数字 1500 可以与以太网帧

答案2

尺寸发生变化是因为某些机器具有改变 MTU 的自定义设置:

http://en.wikipedia.org/wiki/Maximum_transmission_unit

数据帧的最大大小通常为 1500 字节,但巨型帧扩展了该分配:

http://en.wikipedia.org/wiki/Jumbo_frame

以下是完整规格:

http://en.wikipedia.org/wiki/Ethernet_frame

答案3

运行 wireshark 或 ntop 并评估统计数据。它们都会显示一段时间内数据包长度的分布。

1500 字节是许多以太网设备的默认 MTU。@Khaled 在此说了什么。

答案4

如果单纯从网络角度来看,则无需计算数据包大小,因为它包含在IPv4 报头位偏移量为 19–31。

http://en.wikipedia.org/wiki/IPv4#Packet_structure

长度
此 16 位字段定义整个数据报的大小,包括报头和数据,以字节为单位。最小长度的数据报为 20 字节(20 字节报头 + 0 字节数据),最大长度为 65,535 字节 — 16 位字的最大值。任何主机需要能够处理的最大数据报为 576 字节。

因此,如果您想收集数据包的大小,您只需要收集 IPv4 数据包头并存储它们的工具。

一个非常常用的工具是 tcpdump/wireshark。设置它在一段时间内进行捕获。然后在 wireshark 中加载捕获。有一个内置的分析工具,可以为您提供数据包大小的统计数据和信息。

还有一些监控工具,例如nTop您可以将其安装在防火墙上。此工具将实时收集统计数据。

相关内容