В настоящее время я работаю над добавлением собственного программного обеспечения для обеспечения интернет-поддержки старой игры MS-DOS. Поскольку моей основной средой является Linux, я использую DOSBOX из Linux и подключаю свое интернет-соединение к DOSBOX в соответствии с инструкциями отсюда:настройка DOSBOX для интернета
После этого Linux по сути действует как еще один маршрутизатор для DOSBOX, но адрес шлюза и DNS, которые использует DOSBOX, те же самые, что и хост, использующий для подключения к Интернету.
Затем я загружаю пакет mTCP DOS Internet Suite и могу использовать его инструменты ping и htget для получения домашней страницы Google, но когда я анализирую пакеты в tcpdump Unix, я не вижу первых 14 байт кадра Ethernet и даже не вижу пакета ARP, а в пакете mTCP нет таблицы ARP.
Поэтому я не понимаю, как такое программное обеспечение может подключаться к Google, если оно даже не знает MAC-адреса удаленной машины, если только оно не использует широковещательный адрес все время, но не приведет ли это к истощению сетевых ресурсов?
Итак, вернемся к моему собственному программному обеспечению... Я могу подключиться к своему хосту (Linux) из DOSBOX (мы имеем дело с одним и тем же компьютером), если использую IP-пакеты, но у меня возникают проблемы с отправкой 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 идентифицирует мой адрес Ethernet через драйвер 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
Есть ли способ настроить это так, чтобы при отправке запроса ARP в сеть в DOSBOX он отображался как запрос ARP (а не как ничего) при использовании tcpdump в Linux?
решение1
MAC-адреса видны или имеют значение только в локальной сети уровня 2. Кроме того, не все сети уровня 2 используют MAC-адреса, некоторые используют другую адресацию, а некоторые не используют адресацию. Из тех, которые используют MAC-адреса, некоторые имеют 48-битные, а некоторые — 64-битные MAC-адреса. Маршрутизаторы удаляют кадр уровня 2, содержащий MAC-адресацию, и создают новый кадр для следующего интерфейса. Пакет может проходить через различные протоколы уровня 2 от источника к месту назначения, и у вас нет возможности узнать, какие протоколы используются или какие используют MAC-адресацию или нет на пути.
Соединение DOSBOX не использует протокол, который использует MAC-адресацию, поэтому оно не использует ARP. Оно используетСОСКАЛЬЗЫВАТЬ, который является протоколом точка-точка, как PPP, который не использует MAC-адресацию (или любую другую адресацию уровня 2, поэтому ARP отсутствует. Для SLIP, как и для PPP, существует только две возможные конечные точки, поэтому адресация уровня 2 не нужна и не используется. Весь трафик с одного конца идет на другой конец без использования адреса.