Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用PcapDotNet DLL更改数据包IP地址后,除数据包IP地址更改外,还将增加附加值_C#_Packet_Pcap.net - Fatal编程技术网

C# 使用PcapDotNet DLL更改数据包IP地址后,除数据包IP地址更改外,还将增加附加值

C# 使用PcapDotNet DLL更改数据包IP地址后,除数据包IP地址更改外,还将增加附加值,c#,packet,pcap.net,C#,Packet,Pcap.net,我正在应用程序中使用PcapDotNetdll,并且在更改数据包IP地址时,似乎除了IP地址之外,还有另一个值发生了更改 这就是我如何更改IP地址的方法: private Packet ChangePacketIp(Packet packet, IpV4Address oldIpAddress, IpV4Address newIpAddress) { try { EthernetLayer ethernet = (EthernetLayer)packet.Ethe

我正在应用程序中使用
PcapDotNet
dll,并且在更改数据包
IP地址时,似乎除了
IP地址
之外,还有另一个值发生了更改

这就是我如何更改
IP地址的方法:

private Packet ChangePacketIp(Packet packet, IpV4Address oldIpAddress, IpV4Address newIpAddress)
{
    try
    {
        EthernetLayer ethernet = (EthernetLayer)packet.Ethernet.ExtractLayer();
        IpV4Layer ipV4Layer = (IpV4Layer)packet.Ethernet.IpV4.ExtractLayer();
        IpV4Datagram ipV4Datagram = packet.Ethernet.IpV4;
        ILayer layer = ipV4Datagram.ExtractLayer();
        DateTime packetTimestamp = packet.Timestamp;
        ILayer payload = packet.Ethernet.IpV4.Payload.ExtractLayer();

        if (packet.Ethernet.IpV4.Source == oldIpAddress)
        {
            ipV4Layer.Source = newIpAddress;
            ipV4Layer.HeaderChecksum = null;
        }
        else if (packet.Ethernet.IpV4.Destination == oldIpAddress)
        {
            ipV4Layer.CurrentDestination = newIpAddress;
            ipV4Layer.HeaderChecksum = null;
        }

        return PacketBuilder.Build(packetTimestamp, ethernet, ipV4Layer, payload);
    }
    catch (Exception)
    {
        return null;
    }
}
例如,原始数据包是:

以及IP地址改变后的新数据包:

如您所见,在将
IP地址
212.25.99.74
更改为
80.81.82.83
后,另2个字节将从
e6 16
更改为
7a d6

这是更改
IPv4
数据包的方法,还是它是一个bug?
这2个字节是什么?

您知道IP数据包有一个校验和,必须重新计算以匹配新的IP地址吗