Компьютерная распределённая система для получения информации о доменах (DNS)

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Оглавление

  • Введение
  • 1. Техническое задание
  • 2. Анализ технического задания
  • 3. Проектирование
  • Диаграмма вариантов использования
  • Диаграмма классов
  • Блок-схемы алгоритмов
  • 4. Реализация
  • 4.1 Описание разработанного ПО
  • Тестирование
  • Заключение
  • Приложения

Введение

DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).

Распределённая база данных DNS поддерживается с помощью иерархии DNS-серверов, взаимодействующих по определённому протоколу.

Основой DNS является представление об иерархической структуре доменного имени и зонах. Каждый сервер, отвечающий за имя, может делегировать ответственность за дальнейшую часть домена другому серверу (с административной точки зрения — другой организации или человеку), что позволяет возложить ответственность за актуальность информации на серверы различных организаций (людей), отвечающих только за «свою» часть доменного имени.

Начиная с 2010 года, в систему DNS внедряются средства проверки целостности передаваемых данных, называемые DNS Security Extensions (DNSSEC). Передаваемые данные не шифруются, но их достоверность проверяется криптографическими способами. Внедряемый стандарт DANE обеспечивает передачу средствами DNS достоверной криптографической информации (сертификатов), используемых для установления безопасных и защищённых соединений транспортного и прикладного уровней.

иерархия сервер доменное имя

1. Техническое задание

Разработать оконную утилиту, для обращения к системе DNS (определение доменных имен по IP-адресам, IP-адресов по доменным именам и т. д. — аналог утилиты NSLookUp).

2. Анализ технического задания

В настоящее время существует множество утилит и сервисов, позволяющих узнать IP-адрес по доменному имени и наоборот.

Одной из наиболее распространенных является утилита NSLookUp, включенная корпорацией Microsoft в ОС Windows.

Работа c NSLookUp происходит в консоли, где пользователь при помощи тех или иных команд может узнать необходимую информацию.

Так например запрос на вывод IP-адресов некоторого домена (wikipedia. org) выглядит следующим образом.

> nslookup wikipedia. org

wikipedia. org

Adresses: 74. 86. 197. 160

208. 87. 34. 15

Исходя из примера, видим, что NSLookUp выводит все IP-адреса, закрепленные за доменом.

Таким образом в результате выполнения технического задания должно получиться оконное приложение, которое будет выводить все IP-адреса прикрепленные к домену, или имя домена по IP-адресу.

Приложение не должно быть перегружено лишними функциями и его интерфейс должен быть интуитивно-понятен даже неопытному пользователю.

3. Проектирование

Диаграмма вариантов использования

Рисунок 4.1 — Диаграмма вариантов использования

Диаграмма классов

Рисунок 4.2 — Диаграмма классов

Блок-схемы алгоритмов

Рисунок 4.3 — Блок-схемы алгоритмов работы с системой DNS

Рисунок 4.4 — Блок-схема алгоритма нажатия на кнопку действия

4. Реализация

4.1 Описание разработанного ПО

Было разработано следующее приложение:

Рисунок 5.1 — Скриншот работающего приложения (вывод списка IP-адресов)

Рисунок 5.2 — Скриншот работающего приложения (вывод доменного имени)

Как видно из скриншотов, разработанная программа представляет собой простое оконное приложение.

Для удобства пользователя были добавлены несколько необязательных кнопок, например кнопка копирующая текст из выделенной строки ListBox’а в буфер обмена, кнопка копирующая текст из буфера обмена в TextBox и кнопка, очищающая TextBox.

Тестирование

Функциональное тестирование

Функциональное тестирование также известно, как тестирование методом «черного ящика». При этом неизвестна внутренняя структура ПО и исходные коды, но известна спецификация продукта.

Первым делом проверим работы ПО на корректных данных.

Рисунок 5.1 — Тестирование на корректных данных

Далее попробуем ввести несуществующее доменное имя или бессмысленный набор символов.

Рисунок 5.2 — Ввод неверного доменного имени

Как видно из рисунка (5. 2), при вводе неверного доменного имени программа сообщает пользователю об ошибке.

Теперь проверим работу программы в случае ввода несуществующего, либо неверного IP-адреса.

Рисунок 5.3 — Ввод неверного IP-адреса

Как видно из рисунка (5. 3), при вводе неверного IP-адреса программа сообщает пользователю об ошибке.

Таким образом тестовый набор представляет из себя следующее:

Входные данные

Результат

213. 180. 204. 11

metrika. yandex. ru

wikipedia. org

208. 80. 152. 201

wikipedia124. org

Сообщение об ошибке

jflksjdflkdsjhfkjsdf

Сообщение об ошибке

192. 168.1. 9

Сообщение об ошибке

999. 999. 999. 999

Сообщение об ошибке

Таким образом по результатам тестирования можно сделать вывод, что программа работает корректно на корректных данных.

При вводе некорректных данных программа уведомляет пользователя об ошибке.

Заключение

В ходе выполнения курсового проекта было разработано приложение, выполняющее работу с системой DNS (определение доменных имен по IP-адресам, IP-адресов по доменным именам).

Разработанное приложение работает корректно на корректных данных и удовлетворяет требования технического задания.

Приложения

Network. cs

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. net;

using System. Windows. Forms;

namespace DNStoIP

{

class Network

{

public static List< string> IPlist = new List< string> ();

public static string HostName;

public static void DNStoIP (string DNS)

{

try

{

IPAddress [] addresslist = Dns. GetHostAddresses (DNS);

foreach (IPAddress address in addresslist)

{

IPlist. Add (address. ToString ());

}

}

catch (Exception e)

{

MessageBox. Show («Введен несуществующий либо неверный адрес!»);

}

}

public static void IPtoDNS (string IP)

{

try

{

IPAddress address = IPAddress. Parse (IP);

IPHostEntry entry = Dns. GetHostEntry (address);

HostName = entry. HostName. ToString ();

}

catch (Exception e)

{

MessageBox. Show («Введен несуществующий либо неверный адрес!»);

}

}

}

}

Form1. cs

using System;

using System. Collections. Generic;

using System. componentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. net;

namespace DNStoIP

{

public partial class Form1: Form

{

public Form1 ()

{

InitializeComponent ();

}

private void button1_Click (object sender, EventArgs e)

{

IPAddress ip;

if (IPAddress. TryParse (textBox1. Text, out ip) == true)

{

listBox1. Items. Clear ();

Network. HostName = string. Empty;

Network. IPtoDNS (textBox1. Text);

listBox1. Items. Add (Network. HostName);

}

else

{

listBox1. Items. Clear ();

Network. IPlist. Clear ();

Network. DNStoIP (textBox1. Text);

foreach (string s in Network. IPlist)

{

listBox1. Items. Add (s);

}

}

}

private void button3_Click (object sender, EventArgs e)

{

this. Close ();

}

private void textBox1_KeyPress (object sender, KeyPressEventArgs e)

{

if (e. KeyChar. Equals ((char) 13))

{

button1_Click (sender, e);

}

}

private void button2_Click (object sender, EventArgs e)

{

Clipboard. SetText (listBox1. SelectedItem. ToString ());

}

private void button4_Click (object sender, EventArgs e)

{

textBox1. Clear ();

}

private void button5_Click (object sender, EventArgs e)

{

IDataObject iData = Clipboard. GetDataObject ();

if (iData. GetDataPresent (DataFormats. Text))

{

textBox1. Text = (String) iData. GetData (DataFormats. Text);

}

else

{

MessageBox. Show («Возможно буфер обмена пуст или содержит данные неверного формата!»);

}

}

}

}

ПоказатьСвернуть
Заполнить форму текущей работой