在 C# 中为 UDP 帧指定目标 IP 地址时,目标 MAC 地址如何自动更新
How is the destination MAC address automatically updated when the destination IP address is geven for an UDP frame in C#
我试过如下所示的程序:-
class Program
{
static IPEndPoint Mypoint = new IPEndPoint(IPAddress.Parse("10.169.20.30"), 8050);
static IPEndPoint UrPoint = new IPEndPoint(IPAddress.Parse("10.169.20.15"), 8051);
static UdpClient TxClient;
static void Main(string[] args)
{
int i = 0;
byte[] data= new byte[1472];
TxClient = new UdpClient(Mypoint);
while (i < 500)
{
data[i]++;
try
{
TxClient.Send(data, data.Length, UrPoint);
}
catch { }
Console.WriteLine("Sent frame " + ++i + " times\n");
}
Console.ReadKey();
}
}
在此,我向 IP 地址为 10.169.20.15 的系统发送一系列帧。我没有为这个系统提供任何 MAC ID。
但是当我通过 wireshark 查看帧的传输时,我发现目标 MAC Id 自动更新为该系统的 MAC Id。
谁能告诉我这是怎么回事。是系统自动找出IP地址对应的MACid,还是有其他原因。
我问这个问题的原因是,我现在需要使用 UDP 协议与微控制器通信。由于我无法在 C# 中更新目标 MAC 地址,如果我只提供 IP 地址就足够了吗? MAC id 会自动解析吗?
希望问题清楚,感谢您的帮助!!!
编辑:-
我尝试在命令提示符下使用 arp -s ipaddress mac 地址,然后使用 运行 我的程序,但发送的帧仍然没有传输到给定的 mac 地址。
谁能告诉我如何解决这个问题。
感谢您的帮助
简而言之,IP 不关心 MAC 地址,以太网 software/drivers 关心。
IP 层及以上(包括 TCP/UDP)完全独立于较低层。它甚至不知道下面有以太网,也不应该知道(也许它不是以太网?)。 IP 软件只是构建它的数据包并将它们发送到正下方的层,这一层是什么并不重要。这意味着在 IP 级别上没有 MAC 地址的概念,这是一件好事,它允许在没有 MAC 地址的网络上使用 运行 IP。
现在,这个 MAC 地址如何更新为您观察到的正确地址?这其实很简单。网络上的每个设备都知道下一个到数据包目的地的设备,并相应地填充 MAC 源和目的地。每个设备通过填写正确的 MAC 地址在以太网上中继数据包。
我试过如下所示的程序:-
class Program
{
static IPEndPoint Mypoint = new IPEndPoint(IPAddress.Parse("10.169.20.30"), 8050);
static IPEndPoint UrPoint = new IPEndPoint(IPAddress.Parse("10.169.20.15"), 8051);
static UdpClient TxClient;
static void Main(string[] args)
{
int i = 0;
byte[] data= new byte[1472];
TxClient = new UdpClient(Mypoint);
while (i < 500)
{
data[i]++;
try
{
TxClient.Send(data, data.Length, UrPoint);
}
catch { }
Console.WriteLine("Sent frame " + ++i + " times\n");
}
Console.ReadKey();
}
}
在此,我向 IP 地址为 10.169.20.15 的系统发送一系列帧。我没有为这个系统提供任何 MAC ID。 但是当我通过 wireshark 查看帧的传输时,我发现目标 MAC Id 自动更新为该系统的 MAC Id。
谁能告诉我这是怎么回事。是系统自动找出IP地址对应的MACid,还是有其他原因。
我问这个问题的原因是,我现在需要使用 UDP 协议与微控制器通信。由于我无法在 C# 中更新目标 MAC 地址,如果我只提供 IP 地址就足够了吗? MAC id 会自动解析吗?
希望问题清楚,感谢您的帮助!!!
编辑:- 我尝试在命令提示符下使用 arp -s ipaddress mac 地址,然后使用 运行 我的程序,但发送的帧仍然没有传输到给定的 mac 地址。
谁能告诉我如何解决这个问题。 感谢您的帮助
简而言之,IP 不关心 MAC 地址,以太网 software/drivers 关心。
IP 层及以上(包括 TCP/UDP)完全独立于较低层。它甚至不知道下面有以太网,也不应该知道(也许它不是以太网?)。 IP 软件只是构建它的数据包并将它们发送到正下方的层,这一层是什么并不重要。这意味着在 IP 级别上没有 MAC 地址的概念,这是一件好事,它允许在没有 MAC 地址的网络上使用 运行 IP。
现在,这个 MAC 地址如何更新为您观察到的正确地址?这其实很简单。网络上的每个设备都知道下一个到数据包目的地的设备,并相应地填充 MAC 源和目的地。每个设备通过填写正确的 MAC 地址在以太网上中继数据包。