我对“NetFlow”的定义有点困惑。 NetFlow是否声明在两个IPv4地址之间交换总数据包,而不考虑networking端口或描述数据包的报头(源IP,目标IP,源端口,目标端口,协议,时间信息,TCP标志,字节信息,数据包信息,ICMP信息)?
NetFlow作为一个术语现在包含了几种不同的方法,这要归功于可扩展的字段,但基本上是这样的:NetFlowlogging是在IP协议编号C上从主机A发送到主机B的字节和数据包数量的周期性总结,在适当的情况下)从主机A上的端口D到主机B上的端口E.通常有比这更多的信息(例如路由器接口上的信息stream量遍历),但这或多或less。
一个具体的例子可能有帮助 假设我从192.168.0.10到192.168.0.11启动一个SSH会话。 我的本地操作系统分配给我短暂的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或用户名。 这些都放在附加字段中,通常不会产生全新的NetFlowlogging。
如果我打开同一个主机之间的第二个连接,比如说80端口,或者另一个连接到22端口,那么我将分别更新这个连接,因为我已经分配了新的源端口。 所以,如果我有两个SSH连接,一个来自端口50000,另一个来自50001端口,那么NetFlow将区分这些连接,我会得到两套更新。 如果我打开了二十个连接,则根据所涉及的端口和主机,我将获得二十对NetFlow更新(每个方向一个)。
因此,为了更直接地回答您的问题:在报告时确实将头部信息考虑在内,以便报告不会与使用的端口无关。 但是,正如其他评论者所说,不一定仅限于标题信息。