User Tag List

Показано с 1 по 10 из 10

Тема: Локальная сеть корвет

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Формат пакетов Z, Y, N совершенно одинаков и примитивен.

    Код:
    Смещение длина   описание
    +00              1        01
    +01              1        23h - длина пакета
    +02              1        номер пакета
    +03              1        'Z' или 'Y' или 'N'
    +04              1         Контрольная сумма 
    +05              1         0Dh
    Адресный пакет A имеет такой формат:

    Код:
    +00      1     01
    +01      1     25h - длина пакета
    +02      1     номер пакета
    +03      1     'A'
    +04      1     Тип адреса. 0 - широковещательный, 1 - для конкретного РМУ
    +05      1     Номер РМУ (в широковещательном режиме не имеет смысла)
    +06      1     Контрольная сумма 
    +07      1     0D
    Таким образом, пакет может адресовать как конкретное РМУ, так и все сразу.

    Пакет приема данных - тип R, инициирует прием данных клиентом от сервера. Пакет определяет, какие именно данные будут передаваться и что с ними потом делать. Формат пакета:

    Код:
    +00      1     01
    +01      1     28h - длина пакета
    +02      1     номер пакета
    +03      1  'R'
    +04      1  Цифра в ASCII от '0' до '9' - тип передаваемых данных
    +05      4  Для данных типа 3 и 7 - стартовый адрес области в HEX
    +09      1  Контрольная сумма 
    +0A      1  0D

    Пакет передачи данных - тип S - запрос на передачу данных от клиента к серверу. С его помощью можно выгрузить из РМУ на сервер бейсик-программу или любую область памяти. Формат пакета:

    Код:
    +00      1     01
    +01      1     31h - длина пакета
    +02      1     номер пакета
    +03      1     'S'
    +04      1     копируется в ответный пакет R, назначение принимаемых сервером данных 
    +05      4     копируется в ответный пакет R, адрес размещения данных в памяти сервера
    +09      1     Цифра в ASCII от '0' до '9' - тип данных, отсылаемых к серверу
    +0A      4     Для блоков памяти - адрес начала области памяти в HEX
    +0E      4     Для блоков памяти - адрес конца области памяти в HEX
    +12      1     Контрольная сумма 
    +13      1     0D
    Цифра типа данных по смещению 04 пакетов R и S может принимать следующие значения:

    Код:
    0 - текстовое сообщение с предварительной очисткой экрана, 
         для пакета S - запрос копии экрана РМУ
    1 - область памяти с адреса 91D1, смысла я не понял.
    2 - бейсик-программа
    3 - образ области памяти (двоичный набор данных)
    4 - в ОПТС не определено, используется сетевой библиотекой как признак файла на диске
    5 - тело COM сообщения
    6 - флаг наличия COM-сообщения
    7 - образ блока  памяти с передачей управления на начало блока
    8 - предыдущий счетчик пакетов, видимо для проверки числа принятых пакетов.
    9 - текстовое сообщение без очистки экрана
    Понятно, что не все типы данных можно использовать в обоих - и S, и R пакетах. Например, передача в РМУ тела COM-сообщения бессмысленна. Начальный и конечный адреса в пакете записываются в виде 4 цифр или букв в HEX-коде со всеми незначащими нулями, например "001D".

    Ну и, наконец, самый главный - пакет данных, тип D. В этот пакет упаковываются передаваемые данные.

    Код:
    +00      1     01
    +01      1     длина пакета (+1Dh)
    +02      1     номер пакета
    +03      1     'D'
    +04    LLL   Данные пакета
    LLL+4  1     Контрольная сумма 
    LLL+5  1     0D
    Понятно, что здесь тоже принимаются меры по недопустимости управляющих кодов 00-1F в теле пакета. Для этого данные упаковываются с помощью специального кода 23h (знак #) следующим образом

    23 xx - указывает, что к следующему байту надо добавить 40h, а старший бит передать как есть
    23 23 - заменяется на одиночный знак #
    23 00 - заменяется на 00

    Упаковке подвергаются все байты с кодами 00-1F, 80-9F, а также байт 7F. При формировании пакета данных ОПТС следит, чтобы общий размер пакета не превышал 88 байт. Видимо, и при формировании передаваемых пакетов следует придерживаться такого же правила.

    Ну вот вроде бы и все по форматам пакетов. Осталось описать сеансовый уровень сети - порядок передачи пакетов.
    Последний раз редактировалось forth32; 26.05.2014 в 08:03.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Локальная Wiki: обсуждение
    от CityAceE в разделе Форум
    Ответов: 113
    Последнее: 26.11.2025, 23:35
  2. Сеть УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 166
    Последнее: 25.01.2024, 18:38
  3. Сеть MSX-1
    от Eugeny в разделе MSX
    Ответов: 36
    Последнее: 23.02.2020, 20:55
  4. Сеть в КУВТах
    от CodeMaster в разделе ДВК, УКНЦ
    Ответов: 8
    Последнее: 04.02.2017, 11:25

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •