measure-delay.awk 代码分析

在measure-delay.awk的代码中,发现如下语句有变量没有定义:

if ( start_time[packet_id] == 0 )
start_time[packet_id] = time;
对于start_time[packet_id],代码前后都没有对start_time进行定义,那么如何对它的值进行判断。查阅网上资料得知:

在awk类型的代码文件中,数组称为关联数组,它的序号标记可以是数字也可以是字符串。awk中的数组可以不用提前对它进行声明,也不用声明大小。数组元素用 0 或空字符串来初始化。

因此,所有start_time[packet_id]都初始化为0,对于每个packet_id都可以赋给它初始时间。

另外这里用了pkt id这个字段,它和seq num字段有什么区别呢?查阅网上资料得知:

pkt id是每个数据包的唯一识别,仔细看可以发现cbr,tcp,ack都按照自己的规则进行id的增减,seq num 是物理传输层对于不同包的区分,在整个网络仿真过程中是顺序累计的,不论是何种协议。换句话说,如果你的数据包进行重发,pkt id是不变的,因为对上层协议这个数据没有变,但是物理传输层会认为是一次新的发送,于是增加seq num。

但是,seq num对于不同的传输层协议是分开计算的,而pkt id则不是,比如对于一个trace文件,之前的数据都是cbr的,两个序号一直都一样,当出现一个tcp的数据包时,seq num是从零开始计算的,而pkt id则在之前的基础上累加,当再次出现cbr数据包时,从上一个cbr的seq num进行累加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值