Исходный код вики Сетевое API - MAXIOL Landisk technology ®
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
|
1.1 | 1 | {{box cssClass="floatinginfobox" title="**Contents**"}} |
2 | {{toc/}} | ||
3 | {{/box}} | ||
4 | |||
5 | = Введение = | ||
6 | |||
7 | Облачные сервисы стали неотъемлемой частью современной информационной инфраструктуры, играя ключевую роль в распространении и сохранении данных. Они представляют собой удалённые серверные ресурсы, доступ к которым осуществляется через интернет, что позволяет пользователям хранить, обрабатывать и обмениваться информацией без необходимости в физическом наличии собственного аппаратного обеспечения. | ||
8 | |||
9 | Первоначально облачные сервисы применялись для хранения персональных данных, таких как фотографии, документы и контакты. Однако их роль значительно расширилась. В бизнес-среде облачные технологии обеспечивают удобство коллаборации, позволяя нескольким пользователям работать с одними и теми же данными одновременно, что способствует повышению производительности и снижению затрат на ИТ-инфраструктуру. | ||
10 | |||
11 | Кроме того, облачные сервисы обеспечивают высокий уровень надёжности и безопасности данных. Ведущие провайдеры используют передовые методы шифрования и многоуровневую защиту, что делает доступ к данным более безопасным, чем традиционное хранение на локальных устройствах. | ||
12 | |||
13 | Экономические выгоды облачных сервисов трудно переоценить. Они позволяют компаниям существенно сократить затраты на аппаратное обеспечение и обслуживание ИТ-инфраструктуры, а также минимизировать риски потери данных в случае аварий или катастроф. | ||
14 | |||
15 | С развитием интернет-технологий и повсеместным распространением широкополосного доступа, облачные сервисы становятся доступными практически для любого пользователя. Это делает их важным инструментом не только для бизнеса, но и для обычных пользователей, желающих обеспечить безопасность и доступность своих данных в любое время и из любой точки мира. | ||
16 | |||
17 | Таким образом, облачные сервисы играют ключевую роль в современном цифровом мире, объединяя удобство доступа, высокий уровень безопасности и экономическую эффективность, что делает их неотъемлемым компонентом для сохранения и обработки информации в условиях современных технологий. | ||
18 | |||
19 | == Актуальность облачных сервисов для ретрокомпьютеров == | ||
20 | |||
|
3.1 | 21 | С развитием облачных технологий они стали актуальны не только для современных устройств, но и для ретро-компьютеров 1970-1990х годов. Несмотря на их возраст, такие машины продолжают использоваться энтузиастами, коллекционерами и исследователями истории вычислительной техники. Однако работа с файлами и программами на старых ПК, которые изначально не имели доступа к интернету и использовали устаревшие носители (дискеты, магнитные ленты, жесткие диски малых объемов), затруднена и лишена современного комфорта, который могут предоставить облачные сервисы сегодня. |
|
1.1 | 22 | |
|
4.1 | 23 | **Облачные сервисы** могли бы стать решением этой проблемы, предоставляя **удобный доступ** к программному обеспечению, образам дисков, драйверам и документам. Однако на сегодняшний день специализированные облачные платформы для ретро-компьютеров отсутствуют. Энтузиастам приходится искать обходные пути: использовать старые протоколы передачи данных, адаптеры или локальные серверы. |
24 | |||
|
3.1 | 25 | Во-первых, облачные платформы могут играть ключевую роль в распространении программного обеспечения и образов дисков для ретро-компьютеров. Архивы игр, операционных систем и утилит хранятся в облаке, откуда их можно легко загрузить и на современные машины и на на старый компьютер с помощью сетевого доступа. |
|
1.1 | 26 | |
|
3.1 | 27 | Во-вторых, облака облегчают процесс обмена файлами между энтузиастами ретро-компьютеров. Ранее для этого использовались физические носители, требовавшие пересылки по почте или прямого обмена на встречах. Теперь же образы дискет, ROM-файлы и текстовые документы можно загрузить в облачное хранилище и предоставлять доступ другим пользователям мгновенно, что существенно ускоряет процесс обмена информацией. |
|
1.1 | 28 | |
29 | Наконец, облачные технологии помогают в резервном копировании ценных данных. Ретро-компьютеры подвержены физическому износу, а дискеты и винчестеры стареют, увеличивая риск потери информации. Использование облачного хранилища позволяет сохранить образы дисков, редкие программы и пользовательские наработки, обеспечивая их доступность даже в случае отказа оригинального оборудования. | ||
30 | |||
31 | Таким образом, облачные сервисы становятся важным инструментом для сообщества любителей старых компьютеров, облегчая сохранение, передачу и распространение программного обеспечения и данных. Они помогают преодолеть технические ограничения прошлых десятилетий, давая ретро-компьютерам новую жизнь в цифровую эпоху. | ||
32 | |||
|
4.1 | 33 | **Создание облачного сервиса**, адаптированного под старые системы, позволило бы не только упростить доступ к данным, но и обеспечить их сохранность, защитив важные архивы от утери. |
34 | |||
|
3.1 | 35 | == MAXIOL Landisk Technology® как решение проблемы == |
|
1.1 | 36 | |
|
3.1 | 37 | Для решения проблемы предоставления облачных сервисов для ретро-компьютеров я разработал уникальную технологию блочного доступа к файлам-образам дисков — **MAXIOL Landisk Technology®**. Она предназначена для удобного хранения, передачи и работы с образами дисков, обеспечивая надежное взаимодействие старых компьютеров с современными облачными сервисами. |
|
1.1 | 38 | |
|
3.1 | 39 | **Концепция технологии** основана на блочном доступе к файлам в [[**архиве MAXIOL**>>https://mirrors.pdp-11.ru/]], что позволяет пользователям легко загружать, управлять и использовать образы дисков без необходимости локального хранения больших объемов данных. Благодаря этому старые компьютеры, изначально не рассчитанные на подключение к современным сетевым хранилищам, могут получать доступ к облачным данным так, будто они находятся на физических носителях. |
|
1.1 | 40 | |
|
3.1 | 41 | Одним из ключевых преимуществ **MAXIOL Landisk Technology®** является возможность создания персонализированных облачных хранилищ. Пользователи могут настраивать свои архивы, управлять доступом и адаптировать их под конкретные задачи, будь то работа с операционными системами, программным обеспечением или играми для ретро-компьютеров. |
|
1.1 | 42 | |
|
3.1 | 43 | Эта технология открыта для свободного использования на любых старых компьютерах, поддерживающих блочную работу с носителями. Реализация и использование **MAXIOL Landisk Technology®** возможны при соблюдении условий лицензионного соглашения, обеспечивающего прозрачность и безопасность применения технологии. |
|
1.1 | 44 | |
|
3.1 | 45 | Таким образом, **MAXIOL Landisk Technology®** открывает новые возможности для энтузиастов ретро-компьютеров, коллекционеров и исследователей цифровой истории, позволяя без лишних сложностей интегрировать старую технику в современную экосистему облачных сервисов. |
46 | |||
|
4.1 | 47 | == История создания MAXIOL Landisk Technology® == |
48 | |||
49 | Идея создания облачного сервиса **MAXIOL Landisk Technology®** возникла как логическое продолжение развития серии контроллеров **AZ®**, разработанных для работы с компьютерами **PDP-11** и их многочисленными советскими клонами. Эти контроллеры стали настоящим прорывом в области ретро-компьютеров, позволив использовать современные технологии хранения данных и сетевого взаимодействия на устаревших машинах. | ||
50 | |||
51 | Разработка серии **AZ®** началась в **2019 году**, когда инженеры **Макс Багаев (Россия)** и **Александр Забайрацкий (Казахстан)** поставили перед собой задачу создания универсального контроллера для работы с шиной **QBUS** и её аналогами. Первые модели быстро получили признание в сообществе ретро-компьютеров, а в **2022 году** разработку продолжил только **Макс Багаев**, расширяя функциональность устройств. На данный момент произведено **более 500 контроллеров различных модификаций**, что делает серию **AZ®** самым массовым оборудованием для **PDP-11** за последние годы. | ||
52 | |||
53 | Контроллеры **AZ®** создавались для множества советских моделей, включая **ДВК-1, ДВК-2, ДВК-3, ДВК-4, Квант-4С, Электроника-60, Электроника 60М, Славутич ПК-1 и УКНЦ**. Кроме того, была разработана особая версия **AZBK®** с расширенным функционалом, специально адаптированная для **BK-0010, BK-0010.01 и BK-0011M**. | ||
54 | |||
55 | Главная особенность контроллеров **AZ®** — это поддержка **блочного доступа с произвольным доступом**, обеспечивающего более высокий уровень абстракции, где образы дисков хранятся в виде файлов на файловой системе устройства. Это позволило значительно упростить работу с дисками и гибко управлять данными. Более того, контроллеры получили **поддержку сети Ethernet**, что открыло новые возможности для удаленного доступа и передачи файлов. | ||
56 | |||
57 | Ключевые характеристики контроллеров **AZ®** включают: | ||
58 | |||
|
5.1 | 59 | * **16-битную обработку данных**, что обеспечивает эффективные вычисления. |
60 | * **Модульную конструкцию**, облегчающую обслуживание и модернизацию. | ||
61 | * **Поддержку до 32 устройств** на одной **MicroSD-карте**. | ||
62 | * Совместимость с операционными системами **RT-11 и RSX-11M**. | ||
63 | * Поддержку **16-, 18- и 22-битных адресных шин**. | ||
64 | * **Открытое API**, позволяющее разработчикам писать собственное ПО и драйверы. | ||
65 | * **Энергонезависимую память**, доступную через API. | ||
66 | * **Встроенные часы реального времени (RTC)** с возможностью получения времени через **NTP-серверы**. | ||
67 | |||
|
4.1 | 68 | Возможность сетевого подключения контроллеров **AZ®** и их использование в качестве блочных устройств привела к созданию **MAXIOL Landisk Technology®** — облачного сервиса, который позволяет старым компьютерам напрямую работать с удалёнными образами дисков. Этот сервис стал естественным развитием технологий **AZ®**, расширяя их функционал и делая ретро-компьютеры более удобными для современных пользователей. |
69 | |||
70 | Сегодня **MAXIOL Landisk Technology®** открывает перед владельцами старых ПК новые возможности, обеспечивая удобный доступ к программному обеспечению, образам дисков и архивам данных, помогая сохранить историю вычислительной техники и сделать её более доступной. | ||
71 | |||
|
5.1 | 72 | = Техническое описание MAXIOL Landisk Technology® = |
|
4.1 | 73 | |
|
5.1 | 74 | === **MAXIOL Landisk Technology® — инновационное облачное решение для ретро-компьютеров** === |
|
1.1 | 75 | |
|
5.1 | 76 | **MAXIOL Landisk Technology®** — это классическая **клиент-серверная технология**, разработанная для обеспечения удобного и эффективного взаимодействия старых компьютеров с удалёнными хранилищами данных. Она позволяет ретро-системам работать с образами дисков через сеть, как если бы они были физически подключены. |
|
1.1 | 77 | |
|
5.1 | 78 | ==== **Архитектура системы** ==== |
79 | |||
80 | Система состоит из двух ключевых компонентов: | ||
81 | |||
82 | 1. **Клиент** — это сетевой интерфейс, установленный на ретро-компьютере, который эмулирует **блочный доступ** к файлу-образу диска. Он выполняет роль виртуального накопителя, заменяя традиционные носители информации (дискеты, жесткие диски, магнитные ленты), но при этом позволяет работать с данными в облаке. | ||
83 | 1. **Сервер** — программное обеспечение **MAXIOL Landisk Technology® AZSERVER**, разработанное в **MAXIOL**. Этот сервер управляет файлами-образами дисков, обрабатывает запросы клиентов и обеспечивает надёжную передачу данных. | ||
84 | |||
85 | ==== **Механизм работы** ==== | ||
86 | |||
87 | Передача данных между клиентом и сервером происходит **блочными структурами** размером **512 байт**, дополненными **контрольной и командной информацией**. Такой формат позволяет: | ||
88 | |||
89 | * **Обеспечить совместимость** с существующими файловыми системами и методами хранения данных, используемыми в ретро-компьютерах. | ||
90 | * **Повысить надёжность передачи данных**, так как контрольная информация помогает обнаруживать и устранять возможные ошибки при обмене. | ||
91 | * **Гарантировать высокую скорость работы**, так как блочная передача эффективно распределяет нагрузку на сеть и сервер. | ||
92 | |||
93 | ==== **Преимущества использования MAXIOL Landisk Technology®** ==== | ||
94 | |||
|
9.1 | 95 | ===== **Отказ от устаревших носителей** ===== |
96 | |||
97 | (% class="wikigeneratedid" %) | ||
|
8.1 | 98 | Технология избавляет от необходимости использовать физические дискеты, жёсткие диски и магнитные ленты, которые со временем выходят из строя и требуют сложного обслуживания. |
|
5.1 | 99 | |
|
9.1 | 100 | ===== **Простота интеграции** ===== |
101 | |||
102 | (% class="wikigeneratedid" %) | ||
|
8.1 | 103 | MAXIOL Landisk Technology® совместима с различными моделями ретро-компьютеров, поддерживающими работу с блочными устройствами, что делает её универсальным решением. |
|
5.1 | 104 | |
|
9.1 | 105 | ===== **Гибкость и масштабируемость** ===== |
106 | |||
107 | (% class="wikigeneratedid" %) | ||
|
8.1 | 108 | Пользователи могут хранить неограниченное количество образов дисков на сервере, управлять ими и быстро переключаться между ними без необходимости физического переноса данных. |
|
5.1 | 109 | |
|
9.1 | 110 | ===== **Удалённый доступ** ===== |
111 | |||
112 | (% class="wikigeneratedid" %) | ||
|
8.1 | 113 | Благодаря сетевому подключению пользователи могут работать с образами дисков из любой точки мира, используя свои ретро-компьютеры так, будто они подключены к локальным накопителям. |
|
5.1 | 114 | |
|
9.1 | 115 | ===== **Надёжность и сохранность данных** ===== |
116 | |||
117 | (% class="wikigeneratedid" %) | ||
|
8.1 | 118 | Использование облачного хранилища минимизирует риск потери данных, а встроенные механизмы проверки целостности обеспечивают их корректное хранение и передачу. |
|
5.1 | 119 | |
|
9.1 | 120 | ===== **Поддержка ретро-экосистемы** ===== |
121 | |||
122 | (% class="wikigeneratedid" %) | ||
|
8.1 | 123 | MAXIOL Landisk Technology® помогает сохранять цифровое наследие, предоставляя удобный и современный способ работы с устаревшими вычислительными системами. |
|
5.1 | 124 | |
|
9.1 | 125 | |
|
5.1 | 126 | ==== **Перспективы развития** ==== |
127 | |||
128 | В будущем планируется расширение возможностей технологии, включая: | ||
129 | |||
|
8.1 | 130 | * Поддержку **новых протоколов связи** для улучшенной совместимости с различными ретро-компьютерами. |
131 | * Развитие **системы авторизации и управления доступом**, чтобы обеспечить безопасное совместное использование облачного хранилища. | ||
132 | * Оптимизацию работы **в низкоскоростных сетях**, что позволит использовать сервис даже на устаревших интернет-подключениях. | ||
|
15.1 | 133 | * Интеграция с поисковой системой [[Архива MAXIOL>>https://mirrors.pdp-11.ru/]]. |
|
8.1 | 134 | |
|
5.1 | 135 | Таким образом, **MAXIOL Landisk Technology®** открывает перед владельцами ретро-компьютеров **новую эру облачного взаимодействия**, делая их работу с данными более удобной, надёжной и безопасной. |
136 | |||
|
10.1 | 137 | == DNS имя и TCP порт для подключения к MAXIOL Landisk Technology® == |
|
1.1 | 138 | |
|
10.1 | 139 | 1. **DNS имя**: **landisk.maxiol.com** |
140 | Это доменное имя указывает на сервер **MAXIOL Landisk Technology®**, позволяя клиентским устройствам автоматически подключаться к серверу без ввода IP-адреса. Оно облегчает доступ к облачному хранилищу для ретро-компьютеров. | ||
141 | 1. **TCP Порт**: **34162** | ||
142 | Порт **34162** используется для безопасной и надежной передачи данных между клиентом и сервером через протокол **TCP**. Он обеспечивает стабильное соединение и исключает конфликты с другими приложениями. | ||
|
1.1 | 143 | |
|
10.1 | 144 | При подключении клиент разрешает доменное имя в IP-адрес, затем устанавливает соединение с сервером через порт **34162**, что позволяет начать обмен блоками данных между сервером и ретро-компьютером. |
145 | |||
|
11.1 | 146 | == Структура запроса == |
|
1.1 | 147 | |
|
11.1 | 148 | В **MAXIOL Landisk Technology®** как клиент, так и сервер написаны на языке C, что позволяет эффективно управлять памятью и работать с низкоуровневыми операциями ввода/вывода. Структуры запросов, отправляемых на сервер, имеют строгую формализованную форму, которая обеспечивает правильную передачу данных между клиентом и сервером. Эти структуры определяются с учетом специфики языка C, включая синтаксис описания структур данных и использование указателей. |
149 | |||
150 | |||
151 | {{code language="c++"}} | ||
152 | // структура пакета запроса | ||
153 | typedef __packed struct landisk_reqest | ||
154 | { | ||
155 | unsigned int num_block; // номер блока (32 бита) | ||
156 | unsigned short int command; // команда | ||
157 | unsigned char reserved[32]; // зарезервировано | ||
158 | unsigned char data[512]; // данные - если они отправляются | ||
159 | char path[386]; // путь до диска | ||
160 | unsigned short int crc; // CRC команды | ||
161 | } landisk_reqest_t; | ||
162 | {{/code}} | ||
163 | |||
164 | при открытии файла блок данных (data[512]) рассматривается как пакет информации следующей структуры | ||
165 | |||
166 | {{code language="c++"}} | ||
167 | // структура пакета открытия файла, информационные параметры | ||
168 | typedef __packed struct landisk_reqest_status | ||
169 | { | ||
170 | unsigned long timestamp; // локальное время контроллера (unix-time) | ||
171 | unsigned long uptime; // аптайм в секундах | ||
172 | unsigned long ip_addr; // локальный ip адрес контроллера | ||
173 | unsigned long dns_srv1; // ip адреса DNS-серверов | ||
174 | unsigned long dns_srv2; | ||
175 | unsigned short int tzone; // таймзона в минутах | ||
176 | unsigned short int platform; // номер платформы | ||
177 | unsigned short int controller; // тип контроллера | ||
178 | unsigned short int version; // версия прошивки контроллера | ||
179 | char build[32]; // дата билда прошивки контроллера | ||
180 | char url[64]; // URL производителя контроллера | ||
181 | } landisk_reqest_status_t; | ||
182 | {{/code}} | ||
183 | |||
184 | пакет информации настоятельно рекомендуется заполнять полностью | ||
185 | \\~/~/ platform - номер платформы | ||
186 | 1 - PDP-11 - БК 10/11M | ||
187 | 2 - PDP-11 - остальные - ДВК Э60 УКНЦ оригинальные машины итд | ||
188 | 3 - MSX | ||
189 | \\для добавления вашей платформы пишите в комментарии к этой статье. | ||
190 | \\~/~/ controller - тип контроллера | ||
191 | 1 - AZБК | ||
192 | 2 - AZ - для всех остальных PDP-11 машин | ||
193 | 3 - Carnivore2+ | ||
194 | \\для добавления вашего контроллера пишите в комментарии к этой статье. | ||
195 | |||
196 | === Команды === | ||
197 | |||
198 | {{code language="c++"}} | ||
199 | // команды | ||
200 | #define LANDISK_CMD_OPEN 1 // в ответ успешность/ошибка, и если успешно - размер диска | ||
201 | #define LANDISK_CMD_READ 2 // чтение блока | ||
202 | #define LANDISK_CMD_WRITE 3 // запись блока | ||
203 | #define LANDISK_CMD_CLOSE 4 // закрытие файла | ||
204 | #define LANDISK_CMD_OPENDIR 5 // открыть оглавление по указанному пути | ||
205 | #define LANDISK_CMD_READDIR 6 // прочитать одну запись оглавления в буфер | ||
206 | #define LANDISK_CMD_SEARCH_REQ 7 // послать запрос поиска | ||
207 | #define LANDISK_CMD_READ_SREQ 8 // прочитать одну запись результата поиска в буфер | ||
208 | {{/code}} | ||
209 | |||
210 | |||
|
12.1 | 211 | == Структура ответа == |
|
11.1 | 212 | |
|
12.1 | 213 | Формат ответа |
214 | |||
215 | {{code language="c++"}} | ||
216 | // структура пакета ответа с данными | ||
217 | typedef __packed struct landisk_answer | ||
218 | { | ||
219 | unsigned short int result; // результат | ||
220 | unsigned char data[512]; // принятые данные | ||
221 | unsigned short int crc; // CRC ответа | ||
222 | } landisk_answer_t; | ||
223 | {{/code}} | ||
224 | |||
225 | === Статус файла === | ||
226 | |||
227 | при открытии файла, сервер возвращает статус файла, в блоке данных (data[512]) | ||
228 | |||
229 | {{code language="c++"}} | ||
230 | // структура пакета ответа статуса файла | ||
231 | typedef __packed struct landisk_answer_status | ||
232 | { | ||
233 | unsigned char fattr; // File attribute | ||
234 | unsigned short int fdate; // Fat date | ||
235 | unsigned short int ftime; // Fat time | ||
236 | unsigned int fsize; // File size | ||
237 | } landisk_answer_status_t; | ||
238 | {{/code}} | ||
239 | |||
240 | === Коды результатов выполнения команд === | ||
241 | |||
242 | {{code language="c++"}} | ||
243 | // ответы | ||
244 | #define LANDISK_ANS_OK 0x0000 // команда выполнена успешно | ||
245 | #define LANDISK_ANS_ERROR 0x0001 // флаг ошибки, устанавливается при любой ошибке | ||
246 | #define LANDISK_ANS_ACCESS_DENIED 0x0002 // нет доступа, устанавливается при любой ошибке доступа | ||
247 | #define LANDISK_ANS_NEED_REG 0x0004 // нет доступа - нужна регистрация | ||
248 | #define LANDISK_ANS_RO_ONLY 0x0008 // нет доступа на запись- данный диск только для чтения | ||
249 | #define LANDISK_ANS_NOT_EXISTS 0x0010 // нет данного образа - неверный путь до файла образа или директории | ||
250 | {{/code}} | ||
251 | |||
252 | === Стратегия работы === | ||
253 | |||
254 | ~1. первая команда должна быть открытие файла (LANDISK_CMD_OPEN) | ||
255 | при запросе на открытие надо указать блок параметров (landisk_reqest_status_t) | ||
256 | в ответ будет прислан блок landisk_answer_t но data[512] надо рассматривать как landisk_answer_status_t | ||
257 | 2. далее можно посылать команды чтения | ||
258 | 3. на данный момент [февраль 2025] поддержаны команды LANDISK_CMD_OPEN, LANDISK_CMD_READ, LANDISK_CMD_WRITE, LANDISK_CMD_CLOSE | ||
259 | 4. В конце работы желательно (но не обязательно) послать команды закрытия дисков. | ||
260 | |||
|
14.1 | 261 | === Ограничения === |
262 | |||
263 | (% class="wikigeneratedid" id="H41E43344043043D43844743543D43844F:1.43D43543143E43B43543510043743043F44043E44143E43243244143543A44343D43444344143E43443D43E43343EIP2843843D43044743544144043043143E44243043544243143B43E43A43043D442438-DDOS43843743043143043D43844243443043D43D44B439IP43D43043D43543A43E44243E44043E43543244043543C44F292.43D43543143E43B435435104424382243243844144F4494384452244143E43543443843D43543D43843943D430IP." %) | ||
|
12.1 | 264 | ~1. не более 100 запросов в секунду с одного IP (иначе сработает блок анти-DDOS и забанит данный IP на некоторое время) |
|
14.1 | 265 | 2. не более 10ти "висящих" соединений на IP. |
|
12.1 | 266 | |
|
14.1 | 267 | === Исходные коды === |
|
12.1 | 268 | |
|
15.1 | 269 | ==== Код подсчета CRC ==== |
|
14.1 | 270 | |
271 | [[attach:1740422838699-683.cpp||target="_blank"]] |