将以太网帧发送到本地网络中另一台机器的正确方法是什么?

j3141592653589793238

我最近开始学习OSI模型,网络和东西。
因为我喜欢用C语言编码,所以我想发送自己的以太网帧。

我现在开始工作了;但是,我仍然不确定:
在从机器A向机器B发送以太网帧时(假设两台机器都在同一网络中),我必须指定哪个MAC地址作为帧的目标MAC地址?
我同时尝试了路由器的MAC地址和机器B的MAC地址,两种方法都能正常工作。要获取机器B的MAC地址,我仅进行了ARP请求。

但是,正确的方法是什么?

我使用机器A上的Wireshark机器B上的tcpdump监视了流量这是机器的输出是机器的MAC地址):e0:d5:5e:c6:52:9a

当将机器B的MAC地址指定为目标地址时(a0:ce:c8:10:75:8c是机器A的NIC MAC ):

18:42:46.152800 a0:ce:c8:10:75:8c > e0:d5:5e:c6:52:9a, ethertype IPv4 (0x0800), length 64: 192.168.178.21.23455 > 192.168.178.27.23456: UDP, length 5

将路由器的MAC地址指定为目标地址时(c8:0e:14:fd:f3:23是路由器的NIC MAC):

18:45:04.735375 c8:0e:14:fd:f3:23 > e0:d5:5e:c6:52:9a, ethertype IPv4 (0x0800), length 60: 192.168.178.21.23455 > 192.168.178.27.23456: UDP, length 5

此结果表明路由器重写了MAC地址,并可能使用其缓存来确定目标IP的正确目标MAC地址。

路由器如何处理指定机器B的MAC地址的帧

两种方式之间有区别吗?

有一种首选/正确的方法吗?

用户名

如果您知道目标计算机在本地子网上,则通常正确的方法是直接使用目标计算机的MAC地址(如有必要,请进行ARP查找)。无论帧的以太类型或内容如何它都将起作用,并且通常会绕过路由器(它将通过以太网交换机短路)。

如果帧包含IPv4或IPv6,则可以将其发送到子网的路由器,该路由器将进行ARP查找并将帧的有效负载转发到目标IP地址所属的任何主机。(毕竟,路由器就是这样做的:它们转发IP数据包-即使这只是意味着将它们反射回相同的接口。)

但是,在大多数情况下,通过路由器发送本地数据包效率低下,完全没有必要。对于更便宜的路由器,这可能意味着要由非常慢的CPU处理该数据包(与以太网交换机的全线速度相比)。

这就是说,第二方法在实践中偶尔使用的,与“客户端隔离”(又名“专用VLAN”)一起提供在交换机和接入点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过脚本从本地网络中的另一台机器重启debian机器

来自分类Dev

如何从本地网络上的另一台机器访问Docker容器

来自分类Dev

在IIS 7中从本地网络内部的另一台计算机访问本地网站

来自分类Dev

在 xState 中将事件从一台机器发送到另一台机器时传递值

来自分类Dev

无法将局域网中的一台机器的远程git repo推送到另一台机器

来自分类Dev

无法从同一网络中的另一台机器访问 apprtc

来自分类Dev

还有什么可能阻止我访问本地网络中另一台笔记本电脑上的Web服务器?

来自分类Dev

从同一网络中的另一台计算机访问本地网站

来自分类Dev

如何从连接到本地网络的另一台Mac访问本地存储库git

来自分类Dev

访问酒店受保护网络中的另一台机器

来自分类Dev

从内部网络中的另一台机器访问Docker容器

来自分类Dev

无法连接到本地网络上另一台PC上的MySQL数据库。[视窗]

来自分类Dev

如何使用ACE对同一本地网络中的另一台PC进行ping操作?

来自分类Dev

如何通过本地网络从另一台计算机远程使用一台计算机?

来自分类Dev

在Android中查找本地网络地址-包括IP和NetMask?(以太网不是wifi)

来自分类Dev

通过命令行将测试消息从一台linux机器发送到另一台linux机器

来自分类Dev

在不提交的情况下从另一台机器访问本地git进度

来自分类Dev

如何在本地网络上找到另一台计算机或服务器的公共IP?

来自分类Dev

如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

来自分类Dev

如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

来自分类Dev

如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

来自分类Dev

从本地网络上的另一台计算机访问apache虚拟主机时出现错误为空的响应

来自分类Dev

hadoop getmerge到另一台机器

来自分类Dev

从另一台机器查看ServicePulse

来自分类Dev

从另一台机器导入MDF

来自分类Dev

来自另一台机器的ssh命令

来自分类Dev

将数据包从一台计算机发送到不在同一网络上的另一台计算机

来自分类Dev

在本地网络上访问连接以太网的服务器

来自分类Dev

通过使用 scapy 发送 ARP 请求并捕获响应来扫描本地网络的正确方法是什么?

Related 相关文章

  1. 1

    通过脚本从本地网络中的另一台机器重启debian机器

  2. 2

    如何从本地网络上的另一台机器访问Docker容器

  3. 3

    在IIS 7中从本地网络内部的另一台计算机访问本地网站

  4. 4

    在 xState 中将事件从一台机器发送到另一台机器时传递值

  5. 5

    无法将局域网中的一台机器的远程git repo推送到另一台机器

  6. 6

    无法从同一网络中的另一台机器访问 apprtc

  7. 7

    还有什么可能阻止我访问本地网络中另一台笔记本电脑上的Web服务器?

  8. 8

    从同一网络中的另一台计算机访问本地网站

  9. 9

    如何从连接到本地网络的另一台Mac访问本地存储库git

  10. 10

    访问酒店受保护网络中的另一台机器

  11. 11

    从内部网络中的另一台机器访问Docker容器

  12. 12

    无法连接到本地网络上另一台PC上的MySQL数据库。[视窗]

  13. 13

    如何使用ACE对同一本地网络中的另一台PC进行ping操作?

  14. 14

    如何通过本地网络从另一台计算机远程使用一台计算机?

  15. 15

    在Android中查找本地网络地址-包括IP和NetMask?(以太网不是wifi)

  16. 16

    通过命令行将测试消息从一台linux机器发送到另一台linux机器

  17. 17

    在不提交的情况下从另一台机器访问本地git进度

  18. 18

    如何在本地网络上找到另一台计算机或服务器的公共IP?

  19. 19

    如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

  20. 20

    如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

  21. 21

    如何将Skaffold项目连接到本地网络但不在另一台计算机上的群集

  22. 22

    从本地网络上的另一台计算机访问apache虚拟主机时出现错误为空的响应

  23. 23

    hadoop getmerge到另一台机器

  24. 24

    从另一台机器查看ServicePulse

  25. 25

    从另一台机器导入MDF

  26. 26

    来自另一台机器的ssh命令

  27. 27

    将数据包从一台计算机发送到不在同一网络上的另一台计算机

  28. 28

    在本地网络上访问连接以太网的服务器

  29. 29

    通过使用 scapy 发送 ARP 请求并捕获响应来扫描本地网络的正确方法是什么?

热门标签

归档