Средства для работы с сетью

Средства для работы с сетью

Рассмотрим основные программы, позволяющие читать и изменять сетевые параметры, диагностировать и выявлять ошибки при работе сети.

В различных ОС существуют свои наборы утилит. Сравним их для двух систем, например, Microsoft Windows NT и Sun Solaris. Какими бы разными ни были эти ОС, в каждой из них реализована модель OSI. Естественно, программная и аппаратная реализация стека этой модели у них различается, но взаимодействие всех уровней осуществляется по установленному стандарту.

Начнем с утилиты, которая позволяет просматривать, проверять и изменять сетевые настройки. Обычно эти настройки включают в себя информацию 3-го (сетевого) уровня – IP-адрес, маску подсети и т.д. Для работы с ними в ОС Windows можно использовать команду ipconfig. Она выдает информацию об IP- адресе, маске подсети (netmask), роутере по умолчанию (default gateway). Задав дополнительный параметр -all, можно получить более подробную информацию – имя компьютера, имя домена, тип сетевой карты, MAC-адрес и т.д.

В ОС Solaris для получения IP-адреса и прочих сетевых настроек используется команда ifconfig. Она также показывает название интерфейса, IP-адреса, маску подсети, MAC-адрес.

Как уже было сказано ранее, в оперативной памяти компьютера находится ARP-таблица. В ней содержатся MAC-адрес удаленной машины и соответствующий ему IP-адрес. Для просмотра этой таблицы используется команда arp. Например, arp –a выводит все известные MAC- адреса.

Существует два типа записей в ARP-таблице – статический и динамический. Статическая запись вносится вручную и существует до тех пор, пока вручную же не будет удалена, или компьютер (маршрутизатор) не будет перезагружен.

Динамическая запись появляется при попытке отправить сообщение на IP- адрес, для которого неизвестен MAC-адрес. В этом случае формируется ARP-запрос, который позволяет этот адрес определить, после чего соответствующая динамическая запись добавляется в ARP-таблицу. Храниться там она будет не постоянно. После определенного времени она будет автоматически удалена, если к данному IP-адресу не было обращений. Задержка на получение MAC-адреса составляет порядка нескольких миллисекунд, так что для пользователя это будет практически незаметно, зато появляется возможность отследить изменения в конфигурации сети (в соответствии IP- и MAC-адресов).

Для выявления различных неполадок в сети существует несколько утилит, которые позволяют определить, на каком уровне модели OSI произошел сбой, или указаны неверные настройки сетевых протоколов. Одна из таких утилит – ping.

Эта утилита позволяет определить ошибки на сетевом уровне (layer 3), используя протокол ICMP (Internet Control Message Protocol) – протокол межсетевых управляющих сообщений. Формат использования этой утилиты довольно прост: ping 194.87.0.50 (где 194.87.0.50 – IP-адрес удаленного компьютера). Если сеть работает корректно, в результате выводится время ожидания прихода ответа от удаленного компьютера и время жизни пакета (TTL, time to live, количество "хопов", после которого пакет был бы отброшен; этот параметр показывает, сколько оставалось допустимых переходов у пакета-ответа).

Протокол ICMP находится на стыке двух уровней – сетевого и транспортного. Основной принцип действия этого протокола – формирование ICMP эхо-запроса (echo-request) и эхо-ответа (echo-reply). Запрос эха и ответ на него может использоваться для проверки достижимости хоста- получателя и его способности отвечать на запросы. Также прохождение эхо-запроса и эхо-ответа проверяет работоспособность основной части транспортной системы, маршрутизацию на машине источника, работоспособность и корректную маршрутизацию на роутерах между источником и получателем, а также работоспособность и правильность маршрутизации получателя.

Таким образом, если на посланный echo-request возвращается корректный echo-reply от машины, которой был послан запрос, можно сказать, что транспортная система работает корректно. И если браузер не может отобразить web-страницу, то проблема, по всей видимости, не в первых трех уровнях модели OSI.

Из примера видно, что по умолчанию размер посылаемого пакета — 32 байта, далее выводится время задержки ответа и TTL. В этом примере показано успешное выполнение команды ping. В случаях, когда запросы echo request посылаются, но echo reply не возвращаются, выводится сообщение об истечении времени ожидания ответа.

Утилита traceroute также использует протокол ICMP для определения маршрута прохождения пакета. При отсылке traceroute устанавливает значение TTL последовательно от 1 до 30. Каждый маршрутизатор, через который проходит пакет на пути к назначенному хосту, увеличивает значение TTL на единицу. С помощью TTL происходит предотвращение зацикливание пакета в "петлях" маршрутизации, иначе "заблудившиеся" пакеты окончательно перегрузили бы сеть. Однако, при выходе маршрутизатора или линии связи из строя требуется несколько дополнительных переходов для понимания, что данный маршрут потерян и его необходимо обойти. Чтобы предотвратить потерю датаграммы, поле TTL устанавливается на максимальную величину.

Когда маршрутизатор получает IP-датаграмму с TTL, равным 0 или 1, он уничтожает ее и посылает хосту, который ее отправил, ICMP-сообщение "время истекло" (time exceeded). Принцип работы traceroute заключается в том, что IP-датаграмма, содержащая это ICMP-сообщение, имеет в качестве адреса источника IP-адрес маршрутизатора.

Теперь легко понять, как работает traceroute. На хост назначения отправляется IP- датаграмма с TTL, равным единице. Первый маршрутизатор, который должен обработать датаграмму, уничтожает ее (так как TTL равно 1) и отправляет ICMP-сообщение об истечении времени (time exceeded). Таким образом определяется первый маршрутизатор в маршруте. Затем traceroute отправляет датаграмму с TTL, равным 2, что позволяет получить IP-адрес второго маршрутизатора. Так продолжается до тех пор, пока датаграмма не достигнет хоста назначения. Утилита traceroute может посылать в качестве такой датаграммы UDP-сообщение с номером порта, который заведомо не будет обработан приложением (порт выше 30000), поэтому хост назначения ответит "порт недоступен" (port unreachable). При получении такого ответа делается вывод, что удаленный хост работает корректно. В противном случае максимального значения TTL (по умолчанию 30) не хватило для того, чтобы его достигнуть.

Рассмотрим пример выполнения утилиты traceroute.

traceroute to netserv1.chg.ru (193.233.46.3), 30 hops max, 38 byte packets

1 n3-core.mipt.ru (194.85.80.1) 1.508 ms 0.617 ms 0.798 ms

2 mipt-gw-eth0.mipt.ru (193.125.142.177) 2.362 ms 2.666 ms 1.449 ms

3 msu-mipt-atm0.mipt.ru (212.16.1.1) 5.536 ms 5.993 ms 10.431 ms

4 M9-LYNX.ATM6-0.11.M9-R2.msu.net (193.232.127.229) 12.994 ms 7.830 ms 6.816 ms

5 Moscow-BNS045-ATM4-0-3.free.net (147.45.20.37) 12.228 ms 7.041 ms 8.731 ms

6 ChgNet-gw.free.net (147.45.20.222) 77.103 ms 75.234 ms 92.334 ms

7 netserv1.chg.ru (193.233.46.3) 96.627 ms 94.714 ms 134.676 ms

Первая строка содержит имя и IP-адрес хоста назначения, максимальное значение TTL и размер посылаемого пакета (38 байт). Последующие строки начинаются с TTL, после чего следует имя хоста, или маршрутизатора и его IP-адрес. Для каждого значения TTL отправляются три датаграммы. Для каждой возвращенной датаграммы определяется и выводится время возврата. Если в течение 3-х секунд на каждую из 3-х датаграмм не был получен ответ, то посылается следующая датаграмма, а вместо значения времени выводится звездочка. Время возврата – это время прохождения датаграммы от источника (хоста, выполняющего программу traceroute) до маршрутизатора. Если нас интересует время, потраченное на пересылку между, например, 5 и 6 узлом, необходимо вычесть из значения времени TTL 6 время TTL 5.

Читайте также:  Как связать айфон и андроид

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

В ОС Solaris используется утилита traceroute. В качестве параметра задается IP-адрес, или доменное имя удаленного хоста, связь до которого требуется проверить. В примере, приведенном выше, видно успешное выполнение traceroute и корректную работу сете- зависимых уровней (физический, канальный, сетевой).

В ОС Windows утилита называется tracert. Используется она так же, как и в ОС Solaris (tracert netserv1.chg.ru). Принципиального различия между утилитами tracert и traceroute нет. Особенностью traceroute является наличие большего количества функций (например, можно указать, начиная с какого TTL выводить информацию).

В случае какой-либо неполадки выводится соответствующее сообщение. Например, при недоступности сети на маршрутизаторе выдается сообщение !N (net unreachable):

947.327 ms !N 996.548 ms !N 995.257 ms

Это означает, что 147.45.20.37 – маршрутизатор, начиная с которого, последующий маршрут недоступен. Если недоступен сам хост, то сообщение будет выглядеть так:

5.536 ms !H 5.993 ms !H 10.431 ms !H.

Ошибка !P означает недоступность протокола (protocol unreachable).

Для просмотра и редактирования таблицы маршрутов используется утилита route. Типичный пример таблицы маршрутизации на персональном компьютере:

В таблице маршрутизации указывается сеть, маска сети, маршрутизатор, через который доступна эта сеть, интерфейс и метрика маршрута. Из приведенной таблицы видно, что маршрут по умолчанию доступен через маршрутизатор 192.168.1.1. Сеть 192.168.1.0 с маской 255.255.255.0 является локальной сетью.

При добавлении маршрута можно использовать следующую команду.

route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1

157.0.0.0 – удаленная сеть, 255.0.0.0 – маска удаленной сети, 157.55.80.1 – маршрутизатор, через который доступна эта сеть. Примерно такой же синтаксис используется при удалении маршрута: route DELETE 157.0.0.0.

В ОС Solaris для просмотра таблицы маршрутизации используется немного другая команда – netstat –r.

Добавление и удаление маршрутов выполняется командой route: route add –net 157.6 157.6.1.20, где 157.6 – сокращенный адрес подсети, а 157.6.1.20 – маршрут, по которому эта сеть доступна. Также удаление маршрутов в таблице маршрутизации: route del –net 157.6.

Утилита netstat позволяет определить, какие порты открыты и по каким портам происходит передача данных между узлами сети. Например, если запустить web-браузер и открыть для просмотра web-страницу, то, запустив netstat, можно увидеть следующую строку:

TCP mycomp:3687 www.ru:http ESTABLISHED

В проведенном примере первое значение – TCP – тип протокола (может быть TCP или UDP), далее следует имя локальной машины и локальный порт, www.ru:http – имя удаленного хоста и порта, к которому производится обращение (поскольку использовался порт по умолчанию для протокола HTTP, то отображается не его числовое значение 80, а имя протокола), ESTABLISHED – показывает, что TCP-соединение установлено.

В ОС Windows с помощью команды netstat –an можно получить список всех открытых портов (параметр –n не определяет DNS-имя, а выводит только IP-адрес). Из примера выше видно, что установленных соединений нет, а все открытые порты находятся в состоянии "прослушивания", т.е. к этому порту можно обратиться для установки соединения. TCP-порт 139 отвечает за установку Netbios-сессий (например, для передачи данных через "сетевое окружение").

В ОС Solaris для получения информации об используемых портах также применяется утилита netstat. Формат вывода практически одинаков.

Приложение

В приложение рассматриваются средства Java для работы с наиболее распространенными сетевыми проколами.

Перейдем к рассмотрению средств Java для работы с сетью.

Классы, работающие с сетевыми протоколами, располагаются в пакете java.net, и простейшим из них является класс URL. С его помощью можно сконструировать uniform resource locator (URL), который имеет следующий формат:

Здесь protocol – название протокола, используемого для связи; host – IP-адрес, или DNS-имя сервера, к которому производится обращение; port – номер порта сервера (если порт не указан, то используется значение по умолчанию для указанного протокола); resource – имя запрашиваемого ресурса, причем, оно может быть составным, например:

Затем можно воспользоваться методом openStream(), который возвращает InputStream, что позволяет считать содержимое ресурса. Например, следующая программа при помощи LineNumberReader считывает первую страницу сайта http://www.ru и выводит ее на консоль.

public class Net <

public static void main(String args[]) <

URL url = new URL("http://www.ru");

String s = r.readLine();

> catch (MalformedURLException e) <

> catch (IOException e) <

Из примера мы видим, что работа с сетью, как и работа с потоками, требует дополнительной работы с исключительными ситуациями. Ошибка MalformedURLException появляется в случае, если строка c URL содержит ошибки.

Более функциональным классом является URLConnection, который можно получить с помощью метода класса URL.openConnection(). У этого класса есть два метода – getInputStream() (именно с его помощью работает URL.openStream()) и getOutputStream(), который можно использовать для передачи данных на сервер, если он поддерживает такую операцию (многие публичные web-серверы закрыты для таких действий).

Класс URLConnection является абстрактным. Виртуальная машина предоставляет реализации этого класса для каждого протокола, например, в том же пакете java.net определен класс HttpURLConnection. Понятно, что классы URL и URLConnection предоставляют возможность работы через сеть на прикладном уровне с помощью высокоуровневых протоколов.

Пакет java.net также предоставляет доступ к протоколам более низкого уровня – TCP и UDP. Для этого сначала надо ознакомиться с классом InetAddress, который является Internet-адресом, или IP. Экземпляры этого класса создаются не с помощью конструкторов, а с помощью статических методов:

InetAddress getByName(String name)

InetAddress[] getAllByName(String name)

Первый метод возвращает IP-адрес машины, на которой исполняется Java- программа. Второй метод возвращает адрес сервера, чье имя передается в качестве параметра. Это может быть как DNS-имя, так и числовой IP, записанный в виде текста, например, "67.11.12.101". Наконец, третий метод определяет все IP-адреса указанного сервера.

Для работы с TCP-протоколом используются классы Socket и ServerSocket. Первым создается ServerSocket – сокет на стороне сервера. Его простейший конструктор имеет только один параметр – номер порта, на котором будут приниматься входящие запросы. После создания вызывается метод accept(), который приостанавливает выполнение программы и ожидает, пока какой-нибудь клиент не инициирует соединение. В этом случае работа сервера возобновляется, а метод возвращает экземпляр класса Socket для взаимодействия с клиентом:

ServerSocket ss = new ServerSocket(3456);

// Метод не возвращает

// управление, пока не подключится клиент

> catch (IOException e) <

Клиент для подключения к серверу также использует класс Socket. Его простейший конструктор принимает два параметра — адрес сервера (в виде строки, или экземпляра InetAddress) и номер порта. Если сервер принял запрос, то сокет конструируется успешно и далее можно воспользоваться методами getInputStream() или getOutputStream().

Socket s = new Socket("localhost", 3456);

InputStream is = s.getInputStream();

> catch (UnknownHostException e) <

> catch (IOException e) <

Обратите внимание на обработку исключительной ситуации UnknownHostException, которая будет генерироваться, если виртуальная машина с помощью операционной системы не сможет распознать указанный адрес сервера в случае, если он задан строкой. Если же он задан экземпляром InetAddress, то эту ошибку надо обрабатывать при вызове статических методов данного класса.

Читайте также:  Не закрывается вода в кране

На стороне сервера класс Socket используется точно таким же образом – через методы getInputStream() и getOutputStream(). Приведем более полный пример:

public class Server <

public static void main(String args[]) <

ServerSocket ss = new ServerSocket(3456);

> catch (IOException e) <

Сервер по запросу клиента отправляет число 10 и завершает работу. Обратите внимание, что при завершении вызываются методы close() для открытых сокетов.

public class Client <

public static void main(String args[]) <

Socket s = new Socket("localhost", 3456);

InputStream is = s.getInputStream();

> catch (UnknownHostException e) <

> catch (IOException e) <

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

Рассмотрим эти классы более подробно. Во-первых, класс ServerSocket имеет конструктор, в который передается, кроме номера порта, еще и адрес машины. Это может показаться странным, ведь сервер открывается на той же машине, где работает программа, зачем специально указывать ее адрес? Однако, если компьютер имеет несколько сетевых интерфейсов (сетевых карточек), то он имеет и несколько сетевых адресов. С помощью такого детализированного конструктора можно указать, по какому именно адресу ожидать подключения. Это должен быть именно локальный адрес машины, иначе возникнет ошибка.

Аналогично, класс Socket имеет расширенный конструктор для указания как локального адреса, с которого будет устанавливаться соединение, так и локального порта (иначе операционная система выделяет произвольный свободный порт).

Во-вторых, можно воспользоваться методом setSoTimeout(int timeout) класса ServerSocket, чтобы указать время в миллисекундах, на протяжении которого нужно ожидать подключение клиента. Это позволяет серверу не "зависать", если никто не пытается начать с ним работать. Тайм-аут задается в миллисекундах, нулевое значение означает бесконечное время ожидания.

Важно подчеркнуть, что после установления соединения с клиентом сервер выходит из метода accept(), то есть перестает быть готовым принимать новые запросы. Однако, как правило, желательно, чтобы сервер мог работать с несколькими клиентами одновременно. Для этого необходимо при подключении очередного пользователя создавать новый поток исполнения, который будет обслуживать его, а основной поток снова войдет в метод accept(). Приведем пример такого решения:

public class NetServer <

public static final int PORT = 2500;

private static final int TIME_SEND_SLEEP = 100;

private static final int COUNT_TO_SEND = 10;

private ServerSocket servSocket;

public static void main(String[] args) <

NetServer server = new NetServer();

servSocket = new ServerSocket(PORT);

System.err.println("Unable to open Server Socket : " + e.toString());

// Класс-поток для работы с

class Listener implements Runnable <

public Listener(Socket aSocket) <

public void run() <

OutputStream out = socket.getOutputStream();

OutputStreamWriter writer = new

PrintWriter pWriter = new PrintWriter(writer);

while (count 1)?",":"")+ "Say" + count);

// Основной поток, циклически выполняющий метод accept()

Socket socket = servSocket.accept();

Listener listener = new Listener(socket);

Thread thread = new Thread(listener);

public void sleeps(long time) <

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

public class NetClient implements Runnable <

public static final int PORT = 2500;

public static final String HOST = "localhost";

public static final int CLIENTS_COUNT = 5;

public static final int READ_BUFFER_SIZE = 10;

private String name = null;

public static void main(String[] args) <

String name = "name";

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10502 — | 7742 — или читать все.

Программы, необходимые для работы в сети интернет, в том числе, для просмотра веб-сайтов, получения и отправки почты или текстовых сообщений, а так же для передачи файлов по сети Интернет.

Браузеры — специальные программы для просмотра Интернет-страниц.

Программы для связи и общения по сети Интернет или по локальным сетям.

Программы для отправки и получения электронной почты.

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

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

Программы для передачи файлов по протоколу FTP.

Дополнения для браузеров

Различные программы, встраивающиеся в браузеры и расширяющие их функциональность.

10. Классификация и характеристики компьютерных вирусов. Методы защиты от компьютерных вирусов.

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

 степень воздействия (безвредные, опасные, очень опасные)

В зависимости от среды обитания основными типами компьютерных вирусов являются:

 Программные (поражают файлы с расширением. СОМ и .ЕХЕ) вирусы

Программные вирусы – это вредоносный программный код, который внедрен внутрь исполняемых файлов (программ). Вирусный код может воспроизводить себя в теле других программ – этот процесс называется размножением. По прошествии определенного времени, создав достаточное количество копий, программный вирус может перейти к разрушительным действиям – нарушению работы программ и операционной системы, удаляя информации, хранящиеся на жестком диске. Этот процесс называется вирусной атакой. Загрузочные вирусы – поражают не программные файлы, а загрузочный сектор магнитных носителей (гибких и жестких дисков). Макровирусы – поражают документы, которые созданы в прикладных программах, имеющих средства для исполнения макрокоманд. К таким документам относятся документы текстового процессора WORD, табличного процессора Excel. Заражение происходит при открытии файла документа в окне программы, если в ней не отключена возможность исполнения макрокоманд. Сетевые вирусы пересылаются с компьютера на компьютер, используя для своего распространения компьютерные сети, электронную почту и другие каналы.

По алгоритмам работы различают компьютерные вирусы:

 Черви (пересылаются с компьютера на компьютер через компьютерные сети, электронную почту и другие каналы)

В настоящее время к наиболее распространенным видам вредоносных программ, относятся: черви, вирусы, троянские программы.

Желательно не допускать появление вирусов в ПК, но при заражении компьютера вирусом очень важно его обнаружить. Основные признаки появления вируса в ПК:

 медленная работа компьютера

 зависания и сбои в работе компьютера

 изменение размеров файлов

 уменьшение размера свободной оперативной памяти

 значительное увеличение количества файлов на диске

 исчезновение файлов и каталогов или искажение их содержимого

 изменение даты и времени модификации файлов

И другие признаки.

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

 Не запускайте программы, полученные из Интернета или в виде вложения в сообщение электронной почты без проверки на наличие в них вируса

Читайте также:  Новая штаб квартира apple

 Необходимо проверять все внешние диски на наличие вирусов, прежде чем копировать или открывать содержащиеся на них файлы или выполнять загрузку компьютера с таких дисков

 Необходимо установить антивирусную программу и регулярно пользоваться ею для проверки компьютеров. Оперативно пополняйте базу данных антивирусной программы набором файлов сигнатур вирусов, как только появляются новые сигнатуры

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

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

 Основным средством защиты информации – это резервное копирование ценных данных, которые хранятся на жестких дисках

Существует достаточно много программных средств антивирусной защиты. Современные антивирусные программы состоят из модулей:

 Эвристический модуль – для выявления неизвестных вирусов

 Монитор – программа, которая постоянно находится в оперативной памяти ПК

 Устройство управления, которое осуществляет запуск антивирусных программ и обновление вирусной базы данных и компонентов

 Почтовая программа (проверяет электронную почту)

 Программа сканер – проверяет, обнаруживает и удаляет фиксированный набор известных вирусов в памяти, файлах и системных областях дисков

 Сетевой экран – защита от хакерских атак

К наиболее эффективным и популярным антивирусным программам относятся: Антивирус Касперского 7.0, AVAST, Norton AntiVirus и многие другие.

Список использованных источников:

Соломенчук В. Интернет: Краткий курс. – СПб.: Питер, 2002.

Гук М. Аппаратные средства IBM PC. / С-Пб.,Питер, 1999г.

Касперский Е. Компьютерные вирусы в MS-DOS. / М., ”ЭДЭЛЬ”-“Ренессанс”, 1992г.

Толковый словарь по вычислительной технике. / С-Пб., ТОО “Channel Trading LTD”, 2000г.

Практикум по экономической информатике: Учебное пособие в 3-х ч. – М.: Перспектива, 2002.

Основы работы на персональном компьютере: Учебное пособие / под ред. проф. А.В. Юркова. – СПб.: НИИММ, 2004.

Хорошилов А.В., Селетков С.Н. Мировые информационные ресурсы: Учебное пособие. – СПб.: Питер, 2004.

Потапкин А. Основы Visual Basic для пакета Microsoft Office. М.,1996.

Дубнов П.Ю. Access 2000. Проектирование баз данных. Ecom 2000.

Райтингер М., Муч Г. Visual Basic 6.0. Библиотека студента. BHV 2000.

Копылов В.А. Информационное право. М., “Юристъ”, 1997.

Колесниченко О.В., Шишкин И.В. Аппаратные средства PC. СПб.: БХВ-Петербург, 2004. – 1152 с

Стенг Д., Мун С. Секреты безопасности сети. / К., ”Диалектика”, “Информейшн Компьютер Энтерпрайз”, 1996г.

Платонов Ю.М., Уткин Ю.Г., Иванов М.И. Информатика (с компакт-диском). Серия «Библиотека студента». – М.: СОЛОН-Пресс, 2004.

Введение в сети и протоколы

Сегодня миллионы компьютеров и устройств связаны в глобальную сеть интернет, либо в отдельные локальные подсети. В связи с этим возникает необходимость создания приложений, которые бы использовали все преимущества передачи данных по сети. Например, одним из распространенных приложений, которое использует передачу по сети, является веб-браузер. И платформа .NET и язык программирования C# предоставляют все необходимые возможности для создания приложений, которые могут взаимодействовать по сети и использовать различные сетевые протоколы.

Но прежде чем переходить непосредственно к созданию приложений, надо пару слов сказать, что вообще представляет собой коммуникация в сети.

Вся сеть состоит из отдельных элементов — хостов, которые представляют собой компьютеры и другие подключенные устройства. Между собой они соединены каналами связи (кабели Ethernet, Wi-Fi и т.д.) и маршрутизаторами. Маршрутизаторы объединяют компьютеры в подсети и контролируют передачу данных между ними.

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

Существует множество различных протоколов. Протоколы, которые используются для передачи данных по сети, составляют семейство протоколов TCP/IP. Основные из них: Internet Protocol (IP), Transmission Control Protocol (TCP) и User Datagram Protocol (UDP). Причем эти протоколы организованы в уровневую систему:

IP представляет сетевой уровень. Он использует нижележащие уровни, которые представляют физические каналы коммуникации — кабели Ethernet и т.д., для передачи пакетов с данными другому хосту.

Выше IP располагается транспортный уровень, который образуют протоколы TCP и UDP. Эти протоколы используют определенные порты для передачи данных. TCP позволяет отследить потерю пакетов и их дублирование при передаче. UDP подобного не позволяет сделать и нацелен на простую передачу данных.

Однако приложение взаимодействует с уровнем TCP / UDP не напрямую, а через специальный API, который предоставляют сокеты . Сокеты — это не какой-либо протокол, это просто интерфейс для создания сетевых приложений, который опирается на встроенные возможности операционной системы.

В зависимости от используемого протокола различают два вида сокетов: потоковые сокеты (stream socket) и дейтаграммные сокеты (datagram socket). Потоковые сокеты используют протокол TCP, дейтаграммные — протокол UDP.

В итоге, когда приложение посылает сообщение приложению, запущенному на другом хосте, то приложение обращается к сокетам для передачи данных на уровень TCP / UDP. Далее с этого транспортного уровня данные передаются сетевому уровню — уровню протокола IP. И этот протокол передает данные далее физическим уровням, и после этого данные уходят по сети.

Чтобы уникально определять хосты в сети каждый хост имеет адрес. Существует несколько различных протоколов адресов. В настоящее время наиболее распространен протокол IPv4, который предполагает представление адреса в виде 32-битного числа, например, 37.120.16.63. Такой адрес содержит четыре числа, разделенных точками, и каждое число находится в диапазоне от 0 до 255. Однако также в последнее время набирает оборот использование адресов протокола IPv6, которые представляют собой 128-битное значение.

Однако такие адреса очень сложно запомнить, поэтому в реальности чаще оперируют доменами. Домены представляют специальные названия, используемые для интернет-адресов. Например, есть доменное имя "www.microsoft.com", ему соответствует адрес в формате IPv4 2.23.143.150. Но для протокола IP, через который идет взаимодействие, доменные адреса не существуют. Поэтому при отправке или передаче данных по доменному имени, компьютер еще обращается к службам Domain Name System (DNS), который выполняют сопоставление между интернет-адресами в формате IPv4 или IPv6 и доменными названиями.

Кроме адреса при сетевых взаимодействиях используются порты . Порт представляет 16-битное число в диапазоне от 1 до 65 535. Использование портов позволяет разграничить несколько запущенных приложений на одном хосте.

Собственно, это все базовые принципы взаимодействия по сети, которые надо знать. В реальности, как правило, при создании приложений не потребуется глубокого знания всех протоколов и нюансов их работы. Если в редких случаях возникнет необходимость более детального знания протоколов, то в этом случае можно обратиться к специализированной литературе, например, к книгам Олифера или Танненбаума.

Ссылка на основную публикацию
Adblock detector