WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(九)——数据包的发送过程(2) 阅读

深度剖析WinPcap之(九)——数据包的发送过程(2)

 2009-10-17 00:00:00 来源:WEB开发网   
核心提示: 其中生成的数据包的函数genPacket的buf参数用来保存所生成数据包的内容,len为要求深成数据包的长度,深度剖析WinPcap之(九)——数据包的发送过程(2)(2),该函数所生成的数据包没有任何实际意义,仅仅为了演示,精度差别为1微秒左右;协议Protocol字段显示为0x0c0d,在W

其中生成的数据包的函数genPacket的buf参数用来保存所生成数据包的内容,len为要求深成数据包的长度。该函数所生成的数据包没有任何实际意义,仅仅为了演示。函数源代码如下:

void genPacket(unsigned char *buf,int len)
 
{
              int i=0;
              //设置目标MAC地址为01:01:01:01:01:01
              for (i=0;i<6;i++)
              {
                     buf[i]=0x01;
              }
              //设置源MAC地址为02:02:02:02:02:02
              for (i=6;i<12;i++)
              {
                     buf[i]=0x02;
              }
 
              //设置协议标识为0xc0xd,无任何实际意义
              buf[12]=0xc;
              buf[13]=0xd;
       
              //填充数据包的内容     
              for(i=14;i<len;i++)
              {                   
                     buf[i]=i-14;
              }
 
}

函数add_stamp增加时间戳,参数ptv修改前后的时间戳结构体指针,参数dus为时间增加的微秒数。函数源代码如下:

timeval add_stamp(timeval *ptv,unsigned int dus)
 
{
       ptv->tv_usec=ptv->tv_usec+dus;  
       if(ptv->tv_usec>=1000000)
       {
              ptv->tv_sec=ptv->tv_sec+1;
              ptv->tv_usec=ptv->tv_usec-1000000;
       }
       return *ptv;
 
}

用Wireshark接收测试程序所发送的数据包如图9-2所示。

深度剖析WinPcap之(九)——数据包的发送过程(2)

图片看不清楚?请点击这里查看原图(大图)。

图9-2 Wireshark所接收的数据包

在Wireshark概要区域的Time字段中可见,接收的时间戳间隔为30微秒,精度差别为1微秒左右;协议Protocol字段显示为0x0c0d。

在Wireshark详情区域中可看到目标MAC地址为01:01:01:01:01:01,源MAC地址为02:02:02:02:02:02。

从Wireshark数据区域中可看到数据包的内容从0开始递增只到0x55(十进制85)。

出处:http://eslxf.blog.51cto.com/918801/212406

上一页  1 2 

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接