Сеть в DOS с помощью стека mTCP

  • Tutorial

Некоторое время назад меня попросили сделать видео-инструкцию по настройке сети в операционной системе DOS. К сожалению в съёмке видео я не силен, поэтому постараюсь максимально подробно письменно (и с картинками) изложить сей процесс.

Однажды мне самому пришлось столкнуться с этой задачей, поскольку для моей домашней коллекции компьютеров уже налажен процесс обмена файлами с помощью локального FTP-сервера. (Если будет интересно, могу подробнее рассказать об этом в одной из следующих статей)


Введение


Итак, подойдём немного издалека: с сетевой карты. К сожалению, далеко не каждая сетевушка сможет работать в DOS. В таких старых системах никогда не бывает легко. При написании этой статьи я использовал весьма распространённую Realtek RTL8139. Так же знаю, что будут работать старые Реалтеки на ISA шину и карты фирмы 3com.


Второй момент: почему я выбрал именно mTCP? Ведь есть же, так сказать, «трушный» Microsoft LAN Manager, написанный специально для DOS. Есть то он есть, но во-первых обеспечивает работу только своих собственных утилит. Сторонним программам вроде того же FTP-клиента всё ещё требуется отдельный пакетный драйвер. А во-вторых отъедает 200 килобайт основной памяти (страшная цифра) и работа с запущенной сетью становится невозможной. mTCP же является набором сетевых приложений, таких как DHCP, TELNET, NETCAT и т.д. Для своей работы он требует только пакетный драйвер и не висит в памяти. Да, у LAN Manager есть преимущество. Помимо TCP он поддерживает IPX, нужный для сетевой игры. Так что требуется важное уточнение: Эта статья не подойдёт тем, кто хочет использовать сеть для игр.


Предварительные действия


Перед непосредственной настройкой придется запастись некоторым количеством файлов. Для начала понадобится дистрибутив mTCP. Его, а так же полную документацию можно скачать с официального сайта. Не обойтись и без пакетного драйвера. Для самых популярных карт они лежат централизованно, так же можно попробовать поискать их на таких ресурсах как Vogons. Всё это придётся каким-то образом перенести на подопытную машину. При помощи дискет, болванок или подключив жесткий диск к другому компьютеру.


Немного магии и конфигурационных файлов


Теперь, когда все приготовления сделаны и резвый ретро-компьютер запущен, пришло время немного попечатать. Я использовал редактор Dos Navigator'а, но подойдет и Edit, встроенный в систему. Первым делом нужно дописать несколько строчек в файл Autoexec.bat. Нужные подчеркнуты красным. В первой строке указан полный путь до драйвера с аргументом, обозначающим номер прерывания. Для более старых карт, не поддерживающих Plug&Play, потребуется указать номер аппаратного прерывания (подчеркнуто зеленым). В следующей строке задаётся конфигурационный файл mTCP. Сам файл мы чуть позже создадим и тоже туда кое-что запишем. И наконец, в последней строчке нужно указать путь до DHCP-клиента. Это не обязательно, DHCP можно запускать и вручную, но так удобнее.


image

К моему Реалтеку также прилагается программа для диагностики и настройки. Ниже представлены оптимальные параметры. Они могут показаться странными. Почему всего 10 мегабит, когда карта вполне может прокачивать 100? Чтож, по неизвестным мне причинам, в режиме Fast Ethernet средняя скорость загрузки была около 150 килобайт в секунду. При ограничении до 10-и мегабит, увеличилась в 4 раза. Возможно, проблема в конкретной карте, драйвере (или моих руках). Буду рад, если кто-нибудь поделится мыслями по этому поводу.


image

Переходим к конфигу mTCP. Файл следует создать по пути, указанном в Autoexec.bat. В него нужно добавить только номер прерывания в поле PACKETINT. Ещё можно указать сетевое имя компьютера, но это не обязательно.


image

В итоге содержимое папки должно выглядеть вот так:


image

Теперь можно со спокойной душой перезагрузиться. И если всё сделано правильно, то после загрузки DHCP наблюдать примерно такую картину


image

Остаётся только радоваться и пользоваться благами интернета, пусть и несколько ограниченными в современных реалиях.

Комментарии 27

    +2

    Вопрос, а почему игры под DOS хотели именно IPX?

      +5

      Насколько я помню, потому что: (а) IPX был тупо популярнее из-за расцвета Novell NetWare, и (б) стек TCP/IP хотел просто до черта памяти по тем временам, IPX хотел гораздо меньше. Я помню, при запущенных драйверах TCP/IP на машине с 640К памяти уже нельзя было запустить Turbo Pascal IDE, памяти не хватало.

        0

        Да там не то что Паскаль, даже Дос Навигатор не запускается. Свободной основной памяти остаётся килобайт 400 всего.

          +2
          Насколько помнится всё лечилось пробрасыванием драйверов и загруженных програм в верхнюю память строками в config.sys:
          device=c:\windows\himem.sys
          device=c:\windows\emm386.exe noems
          dos=high,umb
          и загрузкой в autoexec.bat с приставкой LH
          LH someDOSprogram.exe

            +3
            Да понятно с загрузкой в верхние слои памяти. Но с LAN Manager это не работает. Он просто перестаёт грузиться.
        +1
        Игрушки в то время нормально игрались только в локальном сегменте сети с использованием широковещательных протоколов — интернетов в современном понимании у геймером просто не было. Для такого случая TCP/IP был очень избыточным и тратил ценную оператиную памятьзря. А IPX был в самый раз.
          0
          Потому что IPX в локальной сети настраивается проще, работает быстрее, жрет меньше ресурсов и имеет меньше накладных расходов. Но, если я не ошибаюсь, он не маршрутизируется в больших сетях так, как стек TCP/IP (не имеет маски подсети или чего-то подобного).
            0
            Было проще использовать, настроить, вплоть до совсем экзотичных вариантов без сетевых карт, используя COM и LPT порты подняв на них IPX. Насколько я помню, максимальное количество машин в такой «сети» достигало четырех. :) Но я лично использовал не более двух, и только по модному LPT кабелю (55-75кб/с).
              0
              Чего экзотичного в игре по COM-порту? Так можно было даже через модемы играть вдвоём, не выходя из дома :)
                0
                Если речь за «прозвон» из самой игры, то это совсем не то. Проброс IPX через СОМ/LPT был практически полноценной сетью, разве что медленной.
                  0
                  Некоторые игры умели соединяться по COM порту. Можно было принести компы друг к другу и соединить нуль-модемным кабелем, а можно было установить модемное соединение и запустить игру — она получала «прозрачный» порт.
                  0
                  Что экзотичного? Наверное организация работы программ (игр) которое не поддерживало связь через COM/LPT порты, а ожидало наличие сетевого оборудования.
                  README for the Pipx TEST DRIVE Release
                  1. Program Release Information

                  This documentation accompanies TEST DRIVE release of Pipx, an ODI workstation driver which provides convenient parallel port networking for Netware Lite and other ODI-capable network software. Pipx will also support NDIS software, such as Windows for Workgroups, through the ODINSUP shim, with some limitations.

                  Pipx brings the extreme convenience and simplicity of parallel port networking to the ODI environment. Pipx is part of family of parallel port networking drivers; version for NDIS and Packet Driver interfaces will be released in the near future.

                  Pipx is different from other parallel port connectivity products:

                  — it allows you to use first-class networking software
                  — it allows integrated networking with Ethernet and Token Ring
                  — it supports all types of ports and four types of cables
                  — it offers low-end or high-end performance choices
                    0
                    Которое стоило порядочно и не было широко доступно до поры.
                      0
                      О том и речь, что COM и LPT были везде, а у когото их на ПК было больше одного свободного, и тогда возникали «экзотические» варианты. И через LPT файлы копировались быстрее и надежнее чем через дискетку
                      0
                      Ок. В самом факте игры по COM-порту нет ничего экзотичного — многие игры это поддерживали. Экзотично было поднять сеть через COM-порт под DOS для игр, которые поддерживали игру по сети, но не через COM-порт. Тем не менее, поднять сеть с TCP стеком через COM-порт не было совсем уж какой-то экзотикой: в эпоху модемов так в Интернет выходили.
                        0
                        Сеть на COM портах видел и пользовался, и применялась она не как средство связи игр которые могли соединятся между собой (в те времена их было в очень немного), а как средство организации общего совместного доступа к файлам/принтерам за небольшие деньги.
                0
                Не праздного любопытсва ради: зачем сейчас нужен DOS и зачем нужен DOS с интернетом?
                  +2

                  В моем случае ни за чем. Это просто хобби. А сеть нужна для того, чтобы удобно передавать файлы.
                  Но в целом, некоторые станки до сих пор управляются компьютерами с DOS. Ещё знаю, что у Физтеха есть свой дистрибутив PTS-DOS для оборонки, как легкая и простая система.

                    0
                    «PTSD-os для оборонки». Шутники делали.
                      0

                      PTS потому что PhysTechSoft. Случайно получилось.

                    0
                    Некторые встраиваемые системы на этом работают.
                    –2
                    www.qemu.org + малинка — не?
                      +4

                      А зачем мне эмуляция? И как это уберет необходимость настраивать сеть?

                        –1
                        Это уберет старое железо и сильно уменьшит размеры девайса.
                          +8

                          А в чем тогда суть увлечения ретро компьютерами без ретро компьютеров?

                            +1
                            Цитирую заголовок статьи: Сеть в DOS с помощью стека mTCP
                            Разговора о железе — нет. А ностальгировать по старому ПО можно и на симуляторе.
                              +3

                              Но в самой статье есть упоминание вполне вполне себе физического железа. А так то да, никто не мешает страдать с этим и в эмуляторе.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое