Как создать пакет Ethernet с тегом vlan с помощью PacketDotNet?
В моем приложении C# я использую библиотеку PacketDotNet. Итак, я пытаюсь отправить кадр с тегом vlan, но не могу его правильно построить. Мой код:
public static void Main(string[] args)
{
const ushort udpSourcePort = 123;
const ushort udpDestinationPort = 321;
var udpPacket = new UdpPacket(udpSourcePort, udpDestinationPort);
var ipSourceAddress = System.Net.IPAddress.Parse("192.168.1.1");
var ipDestinationAddress = System.Net.IPAddress.Parse("192.168.1.2");
var iPv4Packet = new IPv4Packet(ipSourceAddress, ipDestinationAddress);
var vlan = new Ieee8021QPacket(iPv4Packet.BytesSegment)
{
VlanIdentifier = 14
};
const string sourceHwAddress = "90-90-90-90-90-90";
var ethernetSourceHwAddress = System.Net.NetworkInformation.PhysicalAddress.Parse(sourceHwAddress);
const string destinationHwAddress = "80-80-80-80-80-80";
var ethernetDestinationHwAddress = System.Net.NetworkInformation.PhysicalAddress.Parse(destinationHwAddress);
var ethernetPacket = new EthernetPacket(ethernetSourceHwAddress,
ethernetDestinationHwAddress,
EthernetType.None);
// Now stitch all of the packets together
iPv4Packet.PayloadPacket = udpPacket;
vlan.PayloadPacket = iPv4Packet;
ethernetPacket.PayloadPacket = vlan;
// and print out the packet to see that it looks just like we wanted it to
Console.WriteLine(ethernetPacket.ToString());
}
Однако вывод, созданный с помощью, кажется неправильным.
Как правильно построить тегированный кадр vlan в PacketDotNet?