目前,我正在努力添加自己的软件,为旧的 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 层寻址。从一端到另一端的所有流量都不使用地址。