Тема Т1-N1 - "Передача данных с уведомлением о доставке".

 

Выполнил: студент группы № 1110 Красовский П.А.

 

1.4. Построение итоговой иерархической модели узлов сети (в соответствии с концепцией OSI). В модели должны быть обязательно учтены задачи доставки как служебных, так и информационных сообщений.

2. Экспериментальная часть. Разработка и экспериментальное исследование программной модели канала передачи данных.

2.1. Разработка и описание блок-схемы алгоритма модели.

2.2. Разработка программных модулей передачи и приема сообщений канального уровня

 


1.4. Построение итоговой иерархической модели узлов сети (в соответствии с концепцией OSI).
Для единого представления данных в сетях с неоднородными устройствами и программным обеспечением международная организация по стандартам ISO (International Standardization Organization) разработала базовую модель связи открытых систем OSI (Open System Interconnection) или сетевая модель взаимодействия открытых систем. Эта модель описывает правила и процедуры передачи данных в различных сетевых средах при организации сеанса связи. Основными элементами модели являются уровни, прикладные процессы и физические средства соединения. На рис.1 представлена структура базовой модели.


                                                                                                Рис.1 Структура базовой модели OSI


Каждый уровень модели OSI выполняет определенную задачу в процессе передачи данных по сети. Базовая модель является основой для разработки сетевых протоколов. OSI разделяет коммуникационные функции в сети на семь уровней, каждый из которых обслуживает различные части процесса области взаимодействия открытых систем. Назначение каждого уровня изображено на рисунке 2.


 

                                                                                        Рис.2 Назначение каналов

В моем случае уровни прикладной, представительский и сеансовый можно обьеденить в один. На этом уровне будут приниматься все решения в системе.
Далее мы видим транспортный уровень.

Работа транспортного уровня заключается в том, чтобы обеспечить приложениям или верхним уровням стека - прикладному и сеансовому - передачу данных с той степенью надежности, которая им требуется. Модель OSI определяет пять классов сервиса, предоставляемых транспортным уровнем. Эти виды сервиса отличаются качеством предоставляемых услуг: срочностью, возможностью восстановления прерванной связи, наличием средств мультиплексирования нескольких соединений между различными прикладными протоколами через общий транспортный протокол, а главное - способностью к обнаружению и исправлению ошибок передачи, таких как искажение, потеря и дублирование пакетов.

В функции транспортного уровня входят:

1. Управление передачей по сети и обеспечение целостности блоков данных.

2. Обнаружение ошибок, частичная их ликвидация и сообщение о неисправленных ошибках.

3. Восстановление передачи после отказов и неисправностей.

4. Укрупнение или разделение блоков данных.

5. Предоставление приоритетов при передаче блоков (нормальная или срочная).

6. Подтверждение передачи.

7. Ликвидация блоков при тупиковых ситуациях в сети.


 Далее в структуре 
OSI следует сетевой уровень. Но в разрабатываемой модели он отсутствует, поскольку нет соединения с другими сетями.
Следом идет канальный уровень:
Канальный уровень  предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Полученные с физического уровня данные, представленные в битах, он упаковывает в 
кадры, проверяет их на целостность и, если нужно, исправляет ошибки (формирует повторный запрос поврежденного кадра) и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием.
И завершает схему физический уровень:
Физический уровень нижний уровень модели, который определяет метод передачи данных, представленных в двоичном виде, от одного устройства (компьютера) к другому.Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом.

В моем случае модель будет иметь упрощенную форму и состоять из 3 уровней:(Рис.3)
1)Уровень управления
2)Канальный уровень
3)Физический уровень

 



                                                                                       Рис.3 Упрощенная форма модели OSI

2. Экспериментальная часть. Разработка и экспериментальное исследование программной модели канала передачи данных.

2.1. Разработка и описание блок-схемы алгоритма модели.



 


                                                 

                                         Рис.4 Алгоритм передачи и приема текстовых файлов.


2.2. Разработка программных модулей передачи и приема сообщений канального уровня.
При разработки программных модулей необходимо передать файл, состоящий из символов ASCII. Рассмотрим реализацию процесса передачи сообщений от терминала 1 к терминалу 2. Для этого необходимо:

1.     Считать сообщение из файла.

2.     Разбить его на пакеты определенной длинны.

3.     Передать на Т2.

Пакеты, подготовленные к передаче, имеют иерархическую структуру, состоящую из физического, канального уровней и уровня управления. Структура передаваемого пакета выглядит следующим образом:

 


                                                        Рис.5 Структура передаваемого пакета

Программа:

Передающая сторона:

1) Открытие файла

 fid = fopen('zc.txt','r');

 

2) Считывание первых 8 байт:

 for m=1:26

    x=fread(fid,1)';

    bi_x = de2bi(x,8);

    biX = [biX bi_x];

 end

 


3) Формирование поля Data L3 уровня:

DATA = bin_msg;

disp(['Поле DATA: ', num2str(length(DATA))]);

msg_L3  = [bi_x DATA];

 

4) Добавление CRC:

set.poly=[ 1 0 0 1 0 1 0 0 0 1 1 0 0]; % CRC-12

 

5) Определение типа сообщения:

if  strcmp(TypeMSG, 'service')

       TYPE = my_de2bi(st.service,'left_msb',1);

   elseif strcmp(TypeMSG, 'traffic')

       TYPE = my_de2bi(st.traffic,'left_msb',1);

   end;

6) Сборка сообщения L2 уровня:

% сборка части L2-сообщения

   msg_L20 = [TYPE msgL3];

     

   % получение CRC кода

   m = [msg_L20 zeros(1,st.y-1)]; %вставка нулей в поле CRC

   [q r] = deconv(m,st.poly); % поиск частного и остатка от деления

   %информационной части на порождающий полином CRC кода

   r = mod(abs(r),2);

   CRC = r(st.length_msg_Lev2 + 1:end);%расчет CRC

   % сборка сообщения

   msg_L2 = [msg_L20 CRC];

   disp(['Поле Сообщение_L2: ', num2str(length(msg_L2))]);

  

   trx = msg_L2;

 

7) Помехоустойчивое кодирование, был выбран код (255.231) , который исправляет 3 ошибки:

   code_word = encode(trx,st.n,st.k,'bch/binary');

   code_word = [code_word]';

   disp(['Поле "Кодовое слово": ', num2str(length(code_word))]);

 

8) Модуляция:

   h = modem.pskmod(st.mPos);

   h.inputtype = ‘bit’;

   h.SymbolOrder = ‘gray’;

   h.PhaseOffset = 0;

 

   собственно модуляция

   IQ_signal = modulate(h, code_word);

 

9) Наложение шума на блок символов:

   noise_sgn = awgn(trxIQ,15);

 

Приемная сторона:

10) Демодуляция:

h = modem.pskdemod(st.mPos);

h.SymbolOrder = 'gray';

h.PhaseOffset = 0;

h.OutputType = 'bit';

  

собственно демодуляция

s = demodulate(h,rxIQ);

 

11) Декодирование:

received_mes_L1 = decode(s(1:st.n),st.n,st.k,'bch/binary');

 

12) Проверка подлинности СRC:

% Подготовка к проверке CRC

 

[q r]=deconv(received_mes_L1,st.poly);

%проверка остатка

   r=mod(abs(r),2);

   if r == zeros(1,length(received_mes_L1))'

        detect=0;ошибок нет

   else

        errs = errs + 1;

        detect=1;% обнаружены ошибки

   end;

 

13) Принятое сообщение:

 Собственно принятое сообщение

received_mes_L2 = received_mes_L1(1:st.length_msg_Lev2);

 


 

14) Извлечение принятого сообщения в двоичном виде:

%    % Извлечение принимаемого сообщения (в двоичном виде)

   length_data = my_bi2de(received_mes_L2(2:8)','left_msb' );

      msgL3 = received_mes_L2(9:8+16*length_data)';

Для примера передачи сообщения возьмём строки из гимна РФ:
Россия — священная наша держава,
Россия — любимая наша страна.
Могучая воля, великая слава —
Твоё достоянье на все времена!


По условию нужно передать файл, состоящий и символов ASCII. Для это переведём данный отрывок через таблицу ASCII символов, данное сообщение будет выглядеть следующим образом:

105610861089108910801103 8212 108910741103109710771085108510721103 1085107210961072 107610771088107810721074107244

105610861089108910801103 8212 1083110210731080108410721103 1085107210961072 10891090108810721085107246

1052108610751091109510721103 107410861083110344 1074107710831080108210721103 10891083107210741072 8212

1058107410861105 107610861089109010861103108511001077 10851072 107410891077 107410881077108410771085107233


ОСШ 30 дБ:



ОСШ 20 дБ:




Список используемой литературы:

1. Бакке А.В.   «Лекции по курсу ССПО»;

2. Бакке А.В.   «Лекции по курсу ОТССПО»;

3.http://omoled.ru/publications/view/418

4.http://omoled.ru/publications/view/405