Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ_vlasik.doc
Скачиваний:
22
Добавлен:
19.02.2016
Размер:
1.72 Mб
Скачать

4.4 Опис алгоритму роботи канального рівня кінцевого вузла

На рисунку 4.1 представлений алгоритм канального рівня кінцевого вузла інформаційної мережі.

На початку підпрограми здійснюється установка всіх прапорців і лічильників в стан, необхідний для правильного відпрацювання канального рівня для передачі і прийому інформації для сеансового рівня.

Після цього треба перевірити активність фізичного рівня, тобто наявність встановленого модемами каналу зв’язку. Якщо канал не встановлений, немає можливості передавати і приймати інформацію, і підпрограма другого рівня закінчує роботу. Якщо ж канал встановлений, може бути два варіанти:

Підпрограма сеансового рівня викликала підпрограму канального рівня для передачі інформації, про що свідчить активний стан прапорця наявності інформації для передачі FRG52. В цьому випадку канальний рівень кінцевого пункту повинен передати канальному рівню центрального пункту команду „запит на захват каналу” (ENQ). Після передачі команди ENQ запускається тайм-аут Т21 очікування відповіді від центрального пункту. Якщо за час Т21 не надійшла позитивна відповідь (АСК) на нашу вимогу ENQ, виставляємо в активний стан прапорець помилки FО25 і завершуємо роботі канального рівня. Якщо отримана згода (АСК) від канального рівня центрального вузла на прийом інформації, приступаємо до передачі. Для цього ставимо в активний стан прапорець FA2, в неактивний стан прапорець „кінець передачі” (FETX), встановлюємо покажчик чергового байту для передачі в регістрі RG52 (j) та номер блоку для передачі (NBlockPd) в 0, і викликаємо підпрограму формування блоку для передачі FormBlock.

Сформований блок передається за допомогою підпрограми PdBlock. Оскільки в мережі використовується вирішуючий зворотній зв’язок з очікуванням, то під час передачі блоку або відразу після передачі всього блоку від канального рівня центрального вузла може бути отримано DLE, що означає порушення порядку прийому блоків згідно номерів блоків, тобто втрату блоку. В цьому випадку передачу всього кадру треба розпочинати спочатку. Може надійти від канального рівня центрального вузла повідомлення про те, що блок був прийнятий з помилкою „заперечення правильності прийому блоку” (NAK).

Це може бути у двох випадках - неправильний формат блоку або неправильна контрольна сума блоку. В такому випадку враховується спроба передачі блоку в лічильнику SSPDB, який при формування блоку був встановлений в 3, і якщо лічильник спроб ще не дорівнює 0, виконується передача цього блоку ще раз. Якщо за три спроби передачі цього блоку позитивний результат не отриманий, виставляється в активний стан прапорець помилки для сеансового рівня, і підпрограма канального рівня закінчує роботу. Ще може надійти від канального рівня центрального вузла повідомлення про те, що блок був прийнятий без помилки - „підтвердження правильності прийому блоку” (АСК). В такому випадку якщо не всі блоки кадру передані, про що свідчить неактивний стан прапорця FETX, то переходимо до формування і передачі наступного блоку. Якщо передача закінчена, виставляється в неактивний стан прапорець наявності інформації для передачі FRG52, передається канальному рівню центрального вузла повідомлення „кінець передачі” (ЕОТ), ставиться в неактивний стан прапорець FA2, включається тайм-аут Т22 очікування прийому від ЦВ і очікуємо команду від ЦВ.

2) Підпрограма сеансового рівня викликала підпрограму канального рівня для прийома інформації, про що свідчить неактивний стан прапорця наявності інформації для передачі FRG52. В цьому випадку канальний рівень кінцевого пункту повинен включити тайм-аут Т22 очікування прийому команди від ЦВ і чекати команду.

Якщо за час Т22 від ЦВ не надходить команда „запит на захват каналу” (ENQ), підпрограма канального рівня закінчує роботу.

У випадку надходження команди ENQ треба надіслати позитивну відповідь (АСК), тобто згоду на прийом, встановити в активний стан прапорець FA2, приготувати лічильник прийнятої інформації SRG25 (записати в нього 0), встановити в неактивний стан прапорець FRG25 наявності прийнятої канальним рівнем для сеансового рівня інформації і встановити в неактивний стан прапорець FETX, який означає, що прийнятий останній блок кадру. Також для запобігання зациклювання програми необхідно запустити тайм-аут Т21 очікування знаку від канального рівня ЦВ.

Канальний рівень ЦВ, після прийому від КВ АСК буде надсилати інформаційні блоки. Ознакою початку інформаційного блоку є перший байт блоку STX („початок тексту”). Якщо за час Т21 не отримано STX, треба встановити в неактивний стан прапорець FA2 і вийти з підпрограми другого рівня.

Якщо STX є, викликаємо підпрограму прийома блоку PmBlock. Ця підпрограма перевіряє правильність блоку, ознаку кінця кадру і виставляє відповідні прапорці.

При неправильному форматі блоку або неправильній контрольній сумі блоку (активний прапорець FNAK) треба передати канальному рівню ЦВ „заперечення правильності прийому блоку” (NAK) і перейти до повторного прийома блоку.

При неправильному номері блоку (активний прапорець FDLE) треба передати канальному рівню ЦВ „передати кадр спочатку” (DLE) і перейти на початок прийома кадру.

При правильному форматі блоку і номера блоку, а також правильній контрольній сумі блоку (активний прапорець FACK) треба передати канальному рівню ЦВ „підтвердження правильності прийому блоку” (АСК) і перевірити, чи активний прапорець FETX („кінець тексту”). Якщо блок не останній, приступаємо до прийома наступного блоку.

Якщо був прийнятий останній блок кадру для сеансового рівня, за час Т21 повинна надійти команда ЕОТ. В цьому випадку встановлюються прапорці: FA2 в неактивний стан, FRG25 в активний стан, передається ЕОТ і підпрограма канального рівня закінчує роботу.

Рисунок 4.1- Алгоритм канального рівня кінцевого вузла

Продовження рисунку 4.1- Алгоритм канального рівня кінцевого вузла