2、使用CAPL的函数自动生成一条完整的ICMPv4 Echo Request报文,然后把数据手动放入两个分片报文中
首先生成一条完整的icmp报文:
ethernetPacket ppkt1;//icmpv4 echo request
byte data[1] = {10};//icmpv4 echo request data
ppkt1.icmpv4.echo.Init();
ppkt1.icmpv4.echo.identifier = 10;
ppkt1.icmpv4.echo.sequence = 20;
ppkt1.icmpv4.SetData(0, data, elcount(data));
ppkt1.CompletePacket();
这里我们为什么不设置IP地址和MAC地址等字段信息?因为我们只是想获取icmpv4 header + data部分的数据,只需要把这部分的该设置的字段设置好,调用CompletePacket()函数就可以自动计算icmp里的checksum字段了,省去我们自己计算填充了。
然后发送出去,在Trace窗口获取到icmpv4 echo request header + data部分的数据:
把这部分的数据手动写入CAPL中的byte数组中,作为两个ipv4分片包报文的payload。
byte bufferFragment1[8] = {0x08, 0x00, 0xED, 0xE1, 0x00, 0x0A, 0x00, 0x14};