拆分TCP,UDP数据包数据

时间:2015-01-22 11:27:48

标签: c# packet pcap pcap.net

我正在使用PcapDot.Net项目的DLL,我尝试拆分TCP和UDP数据包。

例如,如果我的有效负载长度为20个字节,我想将其拆分为2个10个字节。

当然以太网层,IPv4层和传输层保持不变,我只修复了这个校验和。

所以这适用于UDP,如果我的数据包的有效载荷在播放新的2个数据包后是100个字节,我可以看到每个数据包有2个数据包,有效载荷长度为50个字节。

我的问题是在这种情况下使用TCP,如果我的有效负载在播放新的2个数据包后是100个字节我可以看到2个数据包但在这种情况下没有任何有效负载,并且Wireshark注意到每个数据包执行第一个被视为TCP重新传输

我做错了什么?

这是我分割数据的功能:

private IEnumerable<Packet> SplitPacketData(Packet packet, List<List<byte>> lists)
        {
            EthernetLayer ethernet = (EthernetLayer)packet.Ethernet.ExtractLayer();
            IpV4Layer ipV4Layer = (IpV4Layer)packet.Ethernet.IpV4.ExtractLayer();
            DateTime packetTimestamp = packet.Timestamp;
            TransportLayer transportlayer = GetTransportLayer(packet);

            if (transportlayer == null)
            {
                yield return packet;
            }
            else
            {
                foreach (List<byte> list in lists)
                {
                    ipV4Layer.HeaderChecksum = null;
                    transportlayer.Checksum = null;
                    PayloadLayer payloadLayer = new PayloadLayer
                    {
                        Data = new Datagram(list.ToArray())
                    };

                    yield return PacketBuilder.Build(packetTimestamp, ethernet, ipV4Layer, transportlayer, payloadLayer);
                }
            }
        }

0 个答案:

没有答案