| Здравствуйте! Студент ВУЗа может пройти проф.переподготовку и получить официальный документ? |
Физическая модель РБД. Локальные вычислительные сети стандарта Ethernet для рабочей группы. Топологии и расширение сетей. Мониторинг и управление сетью. Увеличение пропускной способности сети. Повышение безопасности сетей
Способы и средства увеличения пропускной способности ЛВС
Увеличение пропускной способности ЛВС может осуществляться:
- пассивно - за счет замены оборудования и увеличения скорости сетевого обмена с 10 до 100 или 1000 мбит/сек
- активно - за счет деления коллизионной области с помощью маршрутизаторов, мостов и коммутаторов в соответствии со схемами трафика, обеспечивая этим наилучшее использование ширины полосы пропускания сигналов.
Рассмотрим точечный сегмент Ethernet.
- Сеть работает медленно при слабом насыщении коллизионной области ( LAN << 40% )
Критическое место - сервер, требуется разделить его функции и часть портировать на новое оборудование.
- Сеть работает медленно при LAN ~ 40%, тогда можно разделить сегмент на два подсегмента, соединив их мостом или маршрутизатором. При этом в каждой коллизионной области имеется свой сервер.
- Если всем клиентам сети при LAN >> 40% необходим online доступ к различными серверами, то при условии сбалансированного трафика, рекомендуемым решением увеличения пропускной способности сети является установка коммутатора
- Если имеется несколько коллизионных областей с высоким уровнем локального трафика и одновременно требующих разнообразного серверного обслуживания, то для увеличения пропускной способности сети используются маршрутизаторы.
Защита информации и повышение безопасности работы в ЛВС
Защита может быть
- физической - закладывается при проектировании сети и включает меры, ограничивающие непосредственный доступ к сетевым устройствам (закрывающиеся монтажные шкафы, специальные короба, серверно- коммутационные зоны и т.п.)
- логической - на программно- аппаратном уровне коммутаторов, маршрутизаторов и мостов.
В любой сети передачи данных важно, прежде всего, ограничить физический доступ к сетевому оборудованию и линиям связи.
Защита сетевого оборудования осуществляется посредством решения следующих задач:
- выбор правильной конфигурации оборудования и политики контроля. Следует разработать план политики защиты сети в отношении сетевого оборудования и линий связи. Регулярно выполнять проверки состояния защиты, чтобы гарантировать требуемый уровень физической защиты.
- ограничение доступа к оборудованию и обеспечение надежности его электропитания и охлаждения.
- контроль прямого доступа ко всему сетевому оборудованию
- обеспечение защиты линий связи. Все коммуникационные линии и сетевые провода должны быть защищены от прослушивания.
- разработка плана восстановления системы в случае взлома
На уровне защиты административного интерфейса сетевых устройств применяются следующие меры:
- защита доступа к консоли
- использование шифрования паролей
- тщательная настройка параметров линий связи
- использование многоуровневой системы привилегий доступа
- использование информационных баннеров устройств
- управление доступом Telnet
- управление доступом SNMP (Simple Network Management Protocol - простой протокол сетевого управления)
Безопасность сети на программном уровне обеспечивается следующими мерами.
- Доступ к сетевым ресурсам предоставляется только зарегистрированным пользователям
- Ведение грамотной политики паролей для учетных записей:
- Использование брандмауэров (аппаратные или программные средства ограничения и фильтрации трафика на стыке двух сетевых сегментов)
- Использование фильтрования пакетов маршрутизаторами (фильтрование производится на основе заголовков протоколов)
- Использование NAT (Network Addres Translation) - позволяет компьютерам сети не передавать свои IP-адреса, а пользоваться одним IP-адресом шлюзового компьютера для выхода в другой сегмент сети.
- Использование прокси-серверов. Прокси-сервер действует на прикладном уровне модели OSI в отличие от NAT(сетевой уровень) и выполняет функцию ретрансляции данных, скрывая IP-адрес клиента.
- Использование безопасных протоколов, шифрующих передаваемую информацию.
- Ipsec(состоит из двух протоколов AH(Authentication Header) и ESP(Encapsulating Security Payload) выполняющих транспортную функцию и шифрование соответственно)
- L2TP(Layer 2 Tunneling Protocol) создает туннели в виртуальных частных сетях и для шифрования использует средства Ipsec
- SSL(Secure Sockets Layer) Состоит из двух частей-SSLHP и SSLRP первая отвечает за проверку подлинности вторая за шифрование.(система сертификатов)
- Kerberos используется службами каталога, чтобы предоставить пользователю единую точку входа в сеть т.е. пользователь получает доступ ко всем ресурсам сети(Active Directory)(если доступ разрешен!) (система передачи билетов TGT, ST).
Практические занятия
Постановка задачи. Проектирование данных на концептуальном и логическом уровнях. Нормализация отношений.
Презентация по ER-моделированию
Подготовка SQL скриптов генерации схемы отношений БД в ERwin. Разработка скрипта для ввода тестовой информации.
Видео-презентация (Для проигрывания требуется Windows Media Player)
Архитектура MS SQL Server 2005. Настройка и использование основных компонент среды. Создание учебной базы данных.
Видео-презентация (Для проигрывания требуется Windows Media Player)
Работа с СУБД MS SQL Server 2005, ORACLE 10g. Примеры соединений с БД, технологии разработки клиенского приложения
Использование технологии Java Database Connectivity (JDBC) для работы с базами данных
Примеры к презентации
SQL-скрипты, проект и исходные коды
package org.mai806.jdbcsample;
import java.sql.*;
public class QuerySample {
public static void main(String[] args) throws Exception {
/* ======== Подключение к MS SQL Server ===== */
// Загрузка драйвера
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// Соединение с базой данных
Connection connection = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databaseName=o01;",
// localhost - сервер СУБД, o01 - имя базы данных
"sa", "123"); // пользователь, пароль
/* ======== Подключение к Oracle ============
// Загрузка драйвера
Class.forName("oracle.jdbc.OracleDriver");
// Соединение с базой данных
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl",
// localhost - сервер СУБД, orcl - SID базы оракла
"o01", "o01"); // пользователь, пароль
// Создание Statement
PreparedStatement stmt = connection.prepareStatement
("select ID, NAME from PERSON where NAME like ?");
stmt.setString(1, "%S%");
// Выполнение запроса
ResultSet rs = stmt.executeQuery();
// Перебор результата выполнения запроса
while(rs.next()) {
// Пример выбора параметра по номеру или по имени
System.out.println("ID: " +
rs.getLong(1) + "; NAME="+
rs.getString("NAME"));
}
// закрытие использованных ресурсов БД
rs.close();
stmt.close();
connection.close();
}
}
Листинг
P.1.
Выполнение запроса: QuerySample.java
package org.mai806.jdbcsample;
import java.sql.*;
import java.util.ResourceBundle;
public class StoredProcedureSample {
private static Connection connection = null;
public static void main(String[] args) throws Exception {
// Получение соединения из значений параметров в файле properties
ResourceBundle properties = ResourceBundle.getBundle("database");
Class.forName(properties.getString("driver"));
connection = DriverManager.getConnection(
properties.getString("url"),
properties.getString("user"),
properties.getString("password"));
transferAmount(1,2,100.0);
connection.close();
}
/**
* Переводит указанную сумму с одного счета на другой
* @param from счет плательщика
* @param to счет получателя
* @param amount сумма
*/
public static void transferAmount(long from, long to, double amount)
throws Exception {
// Создание Statement
CallableStatement stmt
= connection.prepareCall("{call TransferAmount(?,?,?)}");
// Установка параметров
stmt.setLong(1, from);
stmt.setLong(2, to);
stmt.setDouble(3, amount);
// Выполнение процедуры
stmt.execute();
}
}
Листинг
P.2.
Выполнение хранимой процедуры: StoredProcedureSample.java
package org.mai806.jdbcsample;
import java.sql.*;
import java.util.ResourceBundle;
public class TransactionalSample {
private static Connection connection = null;
public static void main(String[] args) throws Exception {
// Получение соединения из значений параметров в файле properties
ResourceBundle properties = ResourceBundle.getBundle("database");
Class.forName(properties.getString("driver"));
connection = DriverManager.getConnection(
properties.getString("url"),
properties.getString("user"),
properties.getString("password"));
// Ручное управление транзакциями
connection.setAutoCommit(false);
try {
transferAmount(2, 1, 10.0);
} finally {
connection.close();
}
}
/**
* Переводит указанную сумму с одного счета на другой
* @param from счет плательщика
* @param to счет получателя
* @param amount сумма
*/
public static void transferAmount(long from, long to,
double amount) throws Exception {
PreparedStatement stmt = null;
Statement query = null;
try {
stmt = connection.prepareStatement
("update ACCOUNT set AMOUNT=AMOUNT+? where ID=?");
// Забираем сумму со счета плательщика
stmt.setDouble(1, -amount);
stmt.setLong(2, from);
stmt.execute();
// Добавляем сумму на счет получателя
stmt.setDouble(1, amount);
stmt.setLong(2, to);
stmt.execute();
// Пост-проверка: отрицательность счета плательщика
query = connection.createStatement();
ResultSet rs = query.executeQuery(
"select AMOUNT from ACCOUNT where ID="+from+" and AMOUNT<0");
if (rs.next()) {
throw new Exception("На счете №"+from+"
недосточно средств ["+(amount+rs.getDouble(1))+"]
для снятия суммы ["+amount+"]");
}
connection.commit();
System.out.println("Перечисление средств успешно выполнено");
} catch(Exception e) {
e.printStackTrace();
connection.rollback();
} finally {
if (stmt!=null)
stmt.close();
if (query!=null)
query.close();
}
}
}
Листинг
P.3.
Работа с транзакциями: TransactionalSample.java




