Автор работы: Пользователь скрыл имя, 04 Июня 2013 в 16:34, курсовая работа
Настоящее техническое задание распространяется на разработку имитационного моделирования алгоритма защиты сети, а так же разработку модели сети. Данный алгоритм должен позволять обнаруживать и отключать «генератор помехи», а так же проверять работоспособность сети. Данная модель сети должна позволять генерировать сообщения от контроллера на любой заданный абонент, имитировать отказы и сбои любого из абонентов и контроллера сети, имитировать, текущее время, отображать процесс прохождения сообщений к ОУ и состояния ОУ. Модель и алгоритм обеспечения восстановления работоспособности сети должны пройти отладку с предоставлением отчета.
Техническое задание………………………………………………………………………………….……………………...3
Эскизный проект…………………………………………………………………………………………………….………..7
1. Общие положения…………………………………………………………………………..................................7
2. Основные технические решения………………………………………………………………………………..7
Реализация…………………………………………………………………………………………………………………......9
Генератор сети………………………………………………………………………………………………...9
Описание……………………………………………………………………………………………….....9
Листинг …………………………………………………………………………………………………..9
Анализатор сети ……………………………………………………………………………………….……27
Описание………………………………………………………………………………………...……..27
Листинг…………………………………………………………………………………………………27
Графический визуализатор сети……………………………………………………………………………31
Интерфейс программы………………………………………………………………………………....31
Инструкция по эксплуатации…………………………………………………………………………31
Листинг программы…………………………………………………………………………………….35
Эксперимент………………………………………………………………………………………………………………....41
Описание эксперимента……………………………………………………………………………………..41
Результаты эксперимента……………………………………………………………………………………42
Приложение…………………………………………………………………………………………………………………..79
Список используемой литературы……………………………………………………………………………………….....81
this.changeDSost = function ChangeDSost(dsost) {
this.dsost = dsost;
};
}
var countNodes = +prompt('Количество ОУ?', 0); //Запрашиваем кол-во ОУ
var ouA = [];
var ouB = [];
for (var i = 0; i < countNodes; i++) {
ouA[i] = new Node(i,"A");
ouB[i] = new Node(i,"B");
}
function changeDsost(dsost, line) { ////Функция для общей смены доп. состояния
for(var i=0;i<countNodes;i++){
if(line=='A') ouA[i].dsost = dsost;
if(line=='B') ouB[i].dsost = dsost;
}
}
function resetSost() {
for(var i=0; i<countNodes; i++) {
ouA[i].sost=0;
ouB[i].sost=0;
ouA[i].dsost=0;
ouB[i].dsost=0;
$('div[id="sostB'+ ouB[i].number +'"]').removeClass();
$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_1');
$('div[id="sostA'+ ouA[i].number +'"]').removeClass();
$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_1');
}
}
function clearLog() {
$('#log').html('');
time=0;
}
function checkSost(first,line,chgen) { //Функция проверки состояния и изменения его
var tmp;
var fail = 1;
for(var i=first; i<countNodes; i++) { // Пишем в лог состояния
$('#log').append('--\n');
if(line=='A') {
if((ouA[i].sost==0)&&(ouA[i].
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
}
if((ouA[i].sost==-1)||(ouA[i].
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
}
if((ouA[i].sost==3)&&(ouA[i].
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
ouA[i].sost = 0;
$('div[id="sostA'+ ouA[i].number +'"]').removeClass();
$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_1');
}
if((ouA[i].sost==4)&&(ouA[i].
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
}
}
if((line=="B")&&(chgen==0)) {
if((ouB[i].sost==0)&&(ouB[i].
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
}
if((ouB[i].sost==-1)||(ouB[i].
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
}
if(((ouB[i].sost==-1)||(ouB[i]
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
}
if((ouB[i].sost==3)&&(ouB[i].
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
ouB[i].sost = 0;
$('div[id="sostB'+ ouB[i].number +'"]').removeClass();
$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_1');
}
if((ouB[i].sost==4)&&(ouB[i].
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос ответа у '+ ouB[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
}
}
if((line=="B")&&(chgen==1)&&(
if((ouB[i].sost==0)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
tmp = ouA[i].sost;
ouA[i].sost = -1;
$('#log').append('\n\
time = checkSost(0,'A', 0);
$('#log').append('Генерация
ouA[i].sost = tmp;
}
if((ouB[i].sost==-1)||(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append('Не могу
}
if((ouB[i].sost==3)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
tmp = ouA[i].sost;
ouA[i].sost = -1;
ouB[i].sost = 0;
$('div[id="sostB'+ ouB[i].number +'"]').removeClass();
$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_1');
$('#log').append('\n\
time = checkSost(0,'A',0);
$('#log').append('Генерация
ouA[i].sost = tmp;
}
if((ouB[i].sost==4)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
tmp = ouA[i].sost;
ouA[i].sost = -1;
$('#log').append('\n\
time = checkSost(0,'A',0);
$('#log').append('Генерация
ouA[i].sost = tmp;
}
}
if((line=="B")&&(chgen==1)&&(
if((ouB[i].sost==0)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
changeDsost(0,'A');
ouA[i].sost = -1;
$('div[id="sostA'+ ouA[i].number +'"]').removeClass();
$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_2');
$('#log').append('\n\
time = checkSost(0,'A',0);
$('#log').append('Генерация
return time;
}
if((ouB[i].sost==-1)||(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Нет ответа \n'); time = time + 4;
$('#log').append('Не могу
}
if((ouB[i].sost==3)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
changeDsost(0,'A');
ouA[i].sost = -1;
$('div[id="sostA'+ ouA[i].number +'"]').removeClass();
$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_2');
ouB[i].sost = 0;
$('div[id="sostB'+ ouB[i].number +'"]').removeClass();
$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_1');
$('#log').append('\n\
time = checkSost(0,'A',0);
$('#log').append('Генерация
return time;
}
if((ouB[i].sost==4)&&(ouB[i].
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: занят \n'); time = time + 4;
$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time + 20;
$('#log').append(time + ': Ожидание ответа... \n'); time = time + 32;
$('#log').append(time + ': Получен ответ: ОК \n'); time = time + 4;
changeDsost(0,'A');
ouA[i].sost = -1;
$('div[id="sostA'+ ouA[i].number +'"]').removeClass();
$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_2');