我对“NetFlow”意义的定义有点困惑。NetFlow 是否声明,无论网络端口如何,两个 IPv4 地址之间的总数据包交换或描述数据包的标头(源 IP、目标 IP、源端口、目标端口、协议、时间信息、TCP 标志、字节信息、数据包信息,ICMP 信息)?
我对“NetFlow”意义的定义有点困惑。NetFlow 是否声明,无论网络端口如何,两个 IPv4 地址之间的总数据包交换或描述数据包的标头(源 IP、目标 IP、源端口、目标端口、协议、时间信息、TCP 标志、字节信息、数据包信息,ICMP 信息)?
NetFlow 作为一个术语现在包含了几种不同的方法,这要归功于可扩展的字段,但基本上是这样的:NetFlow 记录是在 IP 协议编号 C 上从主机 A 发送到主机 B 的字节数和数据包数的定期摘要,并且 (在适当的情况下)从主机 A 上的端口 D 到主机 B 上的端口 E。通常有比这更多的信息(例如有关流量经过的路由器接口的信息),但或多或少就是这样。
一个具体的例子可能会有所帮助。假设我从 192.168.0.10 开始一个 SSH 会话到 192.168.0.11。我的本地操作系统为我分配了临时 TCP 端口 50000,当然我正在连接到端口 22。
我的路由器会定期(比如每分钟一次)发送一个包含两个更新的 NetFlow 数据报。一个将包含从 192.168.0.10:50000 发送到 192.168.0.11:22 的八位字节和数据包数量的时间戳计数,另一个将包含从 192.168.0.11:22 发送到 192.168.0.1 的八位字节和数据包的计数:50000。可能还有其他信息,例如使用的 TCP 标志、QoS、VLAN 编号和其他项目。一些路由器还会检查有效负载以确定正在使用的应用程序,或者提取 URL 或用户名。这些被放入附加字段,通常不会产生全新的 NetFlow 记录。
如果我在同一主机之间打开第二个连接,比如端口 80,或者另一个连接到端口 22,那么我将获得该连接的单独更新,因为我将被分配新的源端口。因此,如果我有两个 SSH 连接,一个来自端口 50000,另一个来自端口 50001,那么 NetFlow 将区分它们,我将获得两组更新。如果我打开了 20 个连接,那么我将根据所涉及的端口和主机获得 20 对(每个方向一对)NetFlow 更新。
因此,为了更直接地回答您的问题:报告时确实会考虑标题信息,因此报告不会与使用的端口无关。但是,正如其他评论者所说,它不一定仅限于标题信息。