pcap.net mac 地址设置
pcap.net mac address setting
我正在设置一个程序,将 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;
}
这似乎工作正常,但是我应该将什么设置为目标 Mac 地址?无论我将其设置为什么,它似乎只是通过我的本地网络向所有机器广播数据包。这是我在 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?
评论中提到,可以使用ARP协议自动获取IP地址的MAC地址。要使用它,请先阅读 ARP 并熟悉它,然后查看 Pcap.Net 中的 ArpLayer
和 ArpDatagram
。
如果您想跳过这一步,您可以只检查您的路由器 MAC 地址,然后简单地将其写成硬编码,因为除非您使用不同的路由器,否则它不会改变。
我正在设置一个程序,将 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;
}
这似乎工作正常,但是我应该将什么设置为目标 Mac 地址?无论我将其设置为什么,它似乎只是通过我的本地网络向所有机器广播数据包。这是我在 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?
评论中提到,可以使用ARP协议自动获取IP地址的MAC地址。要使用它,请先阅读 ARP 并熟悉它,然后查看 Pcap.Net 中的 ArpLayer
和 ArpDatagram
。
如果您想跳过这一步,您可以只检查您的路由器 MAC 地址,然后简单地将其写成硬编码,因为除非您使用不同的路由器,否则它不会改变。