通过隧道检索 MAC 地址

通过隧道检索 MAC 地址

目前,我正在努力添加自己的软件,为旧的 MS-DOS 游戏提供互联网支持。由于我的主要环境是 Linux,因此我使用 Linux 中的 DOSBOX,并按照此处的说明将我的互联网连接输入到 DOSBOX:配置 DOSBOX 以进行互联网连接

在此之后,Linux 基本上就像 DOSBOX 的另一个路由器,但 DOSBOX 使用的网关地址和 DNS 与主机用于连接互联网的相同。

然后我下载了 mTCP dos 互联网套件,并且可以使用其 ping 工具和 htget 工具来检索 google 的主页,但是当我在 unix 的 tcpdump 中分析数据包时,我看不到以太网帧的前 14 个字节,甚至也看不到 ARP 数据包,并且 mTCP 套件没有 ARP 表。

所以我不明白这样的软件怎么可能在不知道远程机器的 MAC 地址的情况下连接到谷歌,除非它一直使用广播地址,但这不会耗尽网络资源吗?

所以回到我自己的软件....如果我使用 IP 数据包,我能够从 DOSBOX 连接到我的主机(linux)(我们在这里处理同一台计算机),但是在发送 ARP 数据包时遇到了麻烦(至少 tcpdump 不会显示它)。

这是我按顺序在网络上发送的数据:

FF FF FF FF FF FF 00 02 12 00 56 34 08 06 00 01 08 00 06 04 00 01 00 02
12 00 56 34 C0 A8 07 02 FF FF FF FF FF FF 08 08 08 08 

并且我向数据中添加零,直到数据大小达到 60 字节。

DOSBOX 通过 ETHERSLIP 驱动程序识别我的以太网地址为:00:02:12:00:56:34

当 DOSBOX 运行时,我预先创建了一个隧道,其信息如下:

sl0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1524
    inet 192.168.7.1  netmask 255.255.255.252  destination 192.168.7.2
    adaptive  txqueuelen 15240  (Adaptive Serial Line IP)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

有没有办法进行设置,以便当我在 DOSBOX 中向网络发出 arp 请求时,它会显示为 arp 请求(而不是什么都不显示),当我在 linux 中使用 tcpdump 时?

答案1

MAC 地址只在本地第 2 层 LAN 上可见或相关。此外,并非所有第 2 层网络都使用 MAC 地址,有些使用其他寻址,有些不使用寻址。在使用 MAC 地址的网络当中,有些是 48 位 MAC 地址,有些是 64 位 MAC 地址。路由器会剥离包含 MAC 寻址的第 2 层帧,并为下一个接口构建新帧。数据包可以从源到目标经过各种第 2 层协议,您无法知道路径中使用了哪些协议或哪些使用 MAC 寻址或不使用。

DOSBOX 连接不使用使用 MAC 寻址的协议,因此它不使用 ARP。它使用,它是一种点对点协议,类似于 PPP,不使用 MAC 寻址(或任何其他第 2 层寻址,因此没有 ARP。对于 SLIP,与 PPP 一样,只有两个可能的端点,因此不需要或使用第 2 层寻址。从一端到另一端的所有流量都不使用地址。

相关内容