我正在设置一个程序,将UDP数据包从一个服务器发送到另一个服务器上的另一个服务器。我在设置EthernetLayer时遇到问题,我设法将源MacAddress设置为我自己:
public static string GetMacAddress()
{
string macAddresses = string.Empty;
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
//macAddresses += nic.GetPhysicalAddress();
macAddresses = string.Join(":", (from z in nic.GetPhysicalAddress().GetAddressBytes() select z.ToString("X2")).ToArray());
break;
}
}
return macAddresses;
}
这似乎工作正常,但是我将什么设置为目标MacAddress?无论我设置什么,似乎只是通过我的本地网络将数据包广播到所有机器。这是我在pcapdotnet示例中所遵循的代码。
new EthernetLayer
{
Source = new MacAddress(Mac),
Destination = new MacAddress("02:02:02:02:02:02"),
EtherType = EthernetType.None,
};
这正确设置了我的源MacAddress,但目的地显然不正确,pcapdotnets文档上的示例如下所示:
new EthernetLayer
{
Source = new MacAddress("01:01:01:01:01:01"),
Destination = new MacAddress("02:02:02:02:02:02"),
EtherType = EthernetType.None, // Will be filled automatically.
};
有没有办法获取目标IP的MacAddress?
答案 0 :(得分:0)
如评论中所述,您可以使用ARP协议自动获取IP地址的MAC地址。要使用它,请先阅读有关ARP的内容并熟悉它,然后在Pcap.Net中查看ArpLayer
和ArpDatagram
。
如果您想跳过该步骤,您可以检查您的路由器MAC地址是什么,只需将其编写为硬编码,因为除非您使用其他路由器,否则不会更改。