目前我正在努力添加我自己的軟體來為舊的 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 請求時,當我在 linux 中使用 tcpdump 時,它會顯示為 arp 請求(而不是顯示任何內容)?
答案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 層尋址。