透過隧道檢索 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 請求時,當我在 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 層尋址。

相關內容