Цель работы: Научиться применять сетевые утилиты командной строки Windows.
Теория
Подготовительная часть
Порядок выполнения задания
Варианты Скачать журнал группы с вариантами
Web-ресурсы
Утилитами называются сравнительно небольшие программы, предназначенные для решения каких-либо узкоспециализированных задач. В данной работе рассматриваются утилиты операционной системы Windows, используемые для диагностики сетевых подключений. Обзор утилит мы совместим с изучением основ теории компьютерных сетей.
Для связи с сетью компьютеры оснащаются сетевыми интерфейсами, к которым относятся Ethernet платы, Wi-Fi и WiMAX модули. Указанные интерфейсы должны иметь IP адреса. Пример такого адреса – 192.168.0.1. Компьютер может иметь не одну плату, а две или три, и каждая из них будет иметь свой IP адрес. Если имеется WiMAX модуль, то и он будет иметь свой IP адрес. Таким образом, компьютер может иметь несколько адресов. Адреса необходимы для организации пересылки сообщений по сети. Адреса должны быть уникальными, т.е. неповторяющимися. Ведь если в сети находятся два компьютера с одинаковыми адресами, то кому из них будет адресовано сообщение с указанным адресом? Отметим также, что IP адреса разбиты на две категории: приватные и публичные. Приватные адреса имеют силу лишь для своей локальной сети и в глобальной сети они не видны. Примером такого адреса является 192.168.0.1. Существуют сотни тысяч, а может быть, миллионы локальных сетей, в которых встречаются компьютеры с одинаковыми приватными адресами, и они никак не конфликтуют между собой из-за совпадения адресов. Публичные же адреса уникальны для всей глобальной сети.
Компьютеры образуют сети, которые также имеют свои адреса. Например, компьютер с адресом 192.168.0.1 находится в сети с адресом 192.168.0.0. У адреса сети и адреса компьютера, как видим, совпадают первые три числа. Сколько же на самом деле должно совпадать чисел определяет так называемая маска подсети. Для нашего примера эта маска имеет вид 255.255.255.0. Такое значение маски чаще всего и встречается в локальных сетях. Более подробно об IP адресации и, соответственно, о маске подсети будет изложено в теоретической части данного курса.
Сами компьютерные сети не изолированы друг от друга. Для связи их между собой используются специализированные компьютеры, называемые маршрутизаторами. Такие сетевые устройства имеют как минимум два сетевых интерфейса, один из которых принадлежит одной сети, другой же является частью второй сети. Маршрутизатор, перенаправляя сообщения с одного своего интерфейса на другой, обеспечивает межсетевой трафик. Если маршрутизатор имеет три платы, то он будет находиться на границе трех сетей. Широкое распространение получили двухточечные сети, которые образуют два маршрутизатора, соединенные общим кабелем. Интерфейсы обеих маршрутизаторов, присоединенные к разным концам одного кабеля, должны иметь адреса, относящиеся к одной и той же сети. Более часто встречаются тупиковые сети. Такие сети связаны лишь с одним маршрутизатором (отсюда и название сети - тупиковая). Компьютеры, находящиеся в такой сети, отправляют сообщения, адресованные в другие сети, на интерфейс этого маршрутизатора. Компьютеры, следовательно, должны знать адрес интерфейса маршрутизатора своей сети. Такой адрес носит название основной шлюз. Маршрутизатор полученные от компьютеров тупиковой сети сообщения перенаправляет дальше, передавая их своим соседям-маршрутизаторам по двухточечным каналам связи. Таким образом, сообщение последовательно перемещается по следующим сетям: тупиковая сеть, двухточечная сеть 1, двухточечная сеть 2, ..., двухточечная сеть N, тупиковая сеть. Если же маршрут перемещения изучать по узлам, то он будет таким: компьютер (отправитель сообщения), маршрутизатор 1, маршрутизатор 2, …, маршрутизатор N-1, компьютер (получатель сообщения).
Подытоживая вышесказанное, отметим, что таким образом для настройки сетевого интерфейса компьютера необходимо назначить ему IP адрес, маску подсети и указать основной шлюз.
Программа ipconfig предназначена для получения информации о настройках сетевых интерфейсов. Выполняется данная утилита в окне командной строки. Для этого необходимо нажать кнопку Пуск и выбрать пункт «Выполнить…». Далее следует ввести cmd и нажать Enter. В открывшемся окне командной строки
следует ввести команду ipconfig и нажать Enter. Пример результата выполнения данной утилиты:
C:\Users\Анатолий>ipconfig |
В данном примере команда выполнялась на ноутбуке. Связь с «внешним миром» осуществлена с помощью беспроводной сети. IP адрес интерфейса ноутбука - 192.168.0.206, маска - 255.255.255.0, шлюз - 192.168.0.10. Интерфейсы ноутбука и маршрутизатора находятся в одной сети 192.168.0.0. Сетевой кабель не подключен (по Ethernet адаптеру среда передачи недоступна).
Компьютеры и другие узлы сети помимо IP адресов имеют так называемые доменные адреса. Такие адреса удобны пользователям сети, так как они легче запоминаются. К примеру доменный адрес mаil.ru запомнить намного проще чем его IP аналог в виде 94.100.180.70. За соответствие доменных и IP адресов отвечает DNS служба. Когда с компьютера исходит запрос на какой-либо сетевой ресурс по его доменному адресу, то DNS служба позволяет определить соответствующий этому ресурсу IP адрес.
Утилита ping позволяет проверить доступность какого-либо удаленного узла по сети. С этой целью на указанный узел отправляется сообщение в виде запроса, и утилита переходит в режим ожидания прихода ответного сообщения. По истечении некоторого времени посылается повторное сообщение. По результатам обмена сообщениями выводится статистика о качестве связи между двумя узлами. Для пингования удаленного узла можно использовать либо его IP адрес, либо его доменное имя.
Команда ping 127.0.0.1 позволяет проверить настройку самого сетевого интерфейса. Адрес 127.0.0.1 является служебным и узлам сети не назначается. DNS аналог этого адреса: localhost. Сетевой интерфейс при использовании данного адреса пингует сам себя
ping 127.0.0.1 |
В рассмотренном случае сетевой интерфейс настроен без ошибок, потери отсутствуют. Параметр TTL переводится как «время жизни» (time to life). Его создает узел, отправляющий в сеть свое сообщение. Маршрутизаторы, передавая данное сообщение из одной сети в другую, убавляют TTL на единицу. Если на каком-то маршрутизаторе TTL будет убавлено до нуля, то сообщение будет уничтожено. Маршрутизатор, удаливший из сети сообщение, извещает об этом отправителя, указывая свой адрес.
Второй вариант использования ping – это проверка состояния тупиковой сети, в которой находится сам узел. С этой целью пингуется основной шлюз:
ping 192.168.0.10 |
В данном примере маршрутизатор доступен. Он в свои ответные сообщения помещает TTL (64) отличное от TTL (128) сетевого интерфейса компьютера.
Для проверки доступности удаленного хоста, как правило, применяются доменные адреса:
ping esstu.ru |
Удаленный узел доступен. В данном случае мы видим, что DNS служба определила IP адрес узла в виде 212.0.68.2.
Утилита имеет несколько опций, из которых рассмотрим лишь одну: -i, позволяющую задать значение TTL:
ping -i 1 esstu.ru |
Здесь TTL был принят равным 1 и сообщение с пингом было уничтожено на шлюзе (192.168.0.10). В следующем примере TTL=2
ping -i 2 esstu.ru |
На этот раз сообщение дошло до маршрутизатора (192.168.1.1), который был вторым за шлюзом. Так, постепенно меняя значение TTL, можно получить список всех маршрутизаторов, находящихся между компьютером и удаленным узлом 212.0.68.2.
Эта утилита, последовательно применяя пинг с увеличивающимся TTL, позволяет получить список промежуточных маршрутизаторов:
tracert esstu.ru |
Между двумя узлами в данном случае находится 7 маршрутизаторов. Трансляция сетевых адресов (NAT) реализуется на маршрутизаторе с адресом 192.168.1.1. Пояснение: Данный адрес является приватным и он назначен ближнему интерфейсу роутера. Дальний его интерфейс имеет публичный адрес, так как он находится в одной сети с интерфейсом следующего маршрутизатора (213.228.116.203). Следовательно на данном роутере настроен NAT, позволяющий подменять в сообщениях приватные адреса публичными.
Утилита pathping сочетает в себе черты команд ping и tracert, позволяя получить дополнительную информацию, которую не обеспечивают две последние. Команда определяет процент потерь сообщений на всех переходах, выявляя самые медленные и ненадежные участки маршрута.
pathping esstu.ru |
В настройках некоторых маршрутизаторов может стоять запрет на выдачу ответа на пришедший пинг. В данном примере маршрутизатор с подобной настройкой имеет адрес 86.110.127.129. Попытка отправить пинг на этот адрес убеждает нас в справедливости этого утверждения:
ping 86.110.127.129 |
Сетевые интерфейсы, такие как Ethernet, Wi-Fi и WiMAX, имеют вшитые в их микросхемы адреса. Пример подобного адреса: 70-F3-95-A6-FE-0C. Эти адреса, называемые аппаратными, физическими или MAC, должны добавляться к сообщениям, прежде чем они будут переданы через сеть. Не все сети используют такие адреса, но в тупиковых они, как правило, применяются. Узел, собирающийся отправить сообщение M другому узлу, должен предварительно узнать MAC адрес получателя сообщения. Для решения данной проблемы узел применяет технологию ARP. Как работает ARP? Узел отправляет ARP запрос всем узлам своей сети. В запрос узел "вкладывает" IP адрес получателя сообщения M. На запрос отвечает лишь тот, у кого требуемый IP адрес. В своем ответе он сообщает свой MAC адрес. И лишь после этого первый узел ему сможет отправить свое сообщение M. В данном случае мы рассмотрели перессылку сообщения M, относящегося к внутрисетевому трафику. Если же оба узла находятся в разных сетях, то узел должен своё сообщение перенаправить маршрутизатору своей сети. Это означает, что к сообщению должен быть добавлен MAC адрес сетевого интерфейса маршрутизатора. В таком случае, ARP запрос узла адресуется маршрутизатору. Таким образом, основной шлюз, указываемый при настройке сетевой платы узла, необходим для определения MAC адреса интерфейса маршрутизатора. Для уменьшения ARP трафика компьютеры в течении некоторого времени хранят в своей памяти таблицу с IP и MAC адресами тех устройств, с которыми они в последнее время обменивались сообщениями.
Утилита arp позволяет получить таблицу соответствия IP адресов и MAC-адресов. Ниже приведен вывод, полученный командой arp, выполненной с ключом –a
arp -a Интерфейс: 192.168.0.206 --- 0xe адрес в Интернете Физический адрес Тип 192.168.0.10 20-aa-4b-2a-d5-21 динамический 192.168.0.255 ff-ff-ff-ff-ff-ff статический 224.0.0.22 01-00-5e-00-00-16 статический 224.0.0.252 01-00-5e-00-00-fc статический 239.192.152.143 01-00-5e-40-98-8f статический 239.255.255.250 01-00-5e-7f-ff-fa статический 255.255.255.255 ff-ff-ff-ff-ff-ff статический |
В данном случае мы видим, что основной шлюз (192.168.0.10) имеет MAC адрес 20-aa-4b-2a-d5-21.
Когда мы говорим: «компьютеры обмениваются сообщениями», то это не совсем точное утверждение. На самом деле обмен происходит между сетевыми приложениями. В оперативной памяти компьютера одновременно могут находиться и выполняться несколько программ, получающих сообщения из сети или отправляющие их в сеть. Как же сообщения, приходящие из сети в компьютер, распределяются между этими приложениями? На этот случай в сообщениях предусмотрены дополнительные адреса, называемые портами. Здесь уместно привести аналогию с обычной почтовой корреспонденцией. Для того чтобы письмо было доставлено в многоквартирный дом (компьютер), на конверте письма указывается номер дома (IP адрес компьютера). Затем письма необходимо разложить по почтовым ящикам согласно номерам квартир. Номер квартиры, присутствующий на конверте письма, и есть аналог портов. Далее жильцы (т.е. сетевые приложения) забирают эти письма (сообщения).
Распределение потока сообщений, приходящих из сети на компьютер, по разным портам называется демультиплексированием. И, напротив, сбор сообщений от разных приложений в единый поток и отправляемый в сеть называется мультиплексированием.
Когда приложение хочет обменяться сообщениями с другим удаленным приложением, оно должно знать не только IP адрес компьютера данного приложения, но и номер порта, которое то приложение использует. Эта связка из двух адресов (IP адрес и порт) называется сокетом. Как же приложение, собирающее отправить свое сообщение, выясняет номер порта, используемое адресатом? Здесь следует упомянуть про клиент-серверную архитектуру, применяемую в сетевых технологиях. Одно из приложений является сервером, получающим запросы от клиентов, обрабатывающим их и отправляющим клиенту результаты обработки запросов. Клиенты же являются инициаторами соединения между ними и сервером, отправляя серверу свои запросы. При разработке подобных сетевых приложений программисты заранее определяют номера портов, которые их сервера будут использовать. Клиенты, соответственно, при своих запросах на сервер должны использовать этот порт. Сервер, будучи запущенным, должен постоянно находиться в оперативной памяти своего компьютера, ожидая прихода из сети сообщений от клиентов на «прослушиваемый» им порт.
Возможны конфликтные ситуации, вызванные применением одного и того же порта разными серверными программами. Если запускаемый сервер обнаружит, что его порт использует другое приложение, то он не сможет выполнять свои функции в своем обычном режиме. В то же время другой сервер, занимающий этот порт, будет получать сообщения от чужих клиентов, что может приводить к ошибкам его исполнения. Следовательно, важно распределять порты таким образом, чтобы серверные программы не конфликтовали между собой из-за совпадения используемых ими портов. За распределение портов отвечает организация IANA (Internet Assigned Numbers Authority, Администрация адресного пространства Интернет).
Таким образом, оба приложения (клиент и сервер) устанавливают между собой соединение, используя два сокета. Сокеты можно условно представить в виде двух розеток, соединенных между собой неким виртуальным каналом связи. Когда одно приложение «помещает» в сокет свое сообщение, то оно доставляется на другой конец канала - на второй сокет, и попадает, таким образом, другому приложению.
Команда netstat позволяет получить список сокетов. Ниже приведен вывод этой команды, полученный c использованием опций -a, -n и -o.
netstat -ano Активные подключения Имя Локальный адрес Внешний адрес Состояние PID TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2944 TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 892 TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 2944 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:2869 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:26143 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:45662 0.0.0.0:0 LISTENING 2920 TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 576 TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 1020 TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING 724 TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING 660 TCP 0.0.0.0:49160 0.0.0.0:0 LISTENING 640 TCP 0.0.0.0:61741 0.0.0.0:0 LISTENING 2944 TCP 127.0.0.1:5939 0.0.0.0:0 LISTENING 2580 TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING 2920 TCP 127.0.0.1:49156 127.0.0.1:49157 ESTABLISHED 2952 TCP 127.0.0.1:49157 127.0.0.1:49156 ESTABLISHED 2952 TCP 127.0.0.1:49158 127.0.0.1:49159 ESTABLISHED 2952 TCP 127.0.0.1:49159 127.0.0.1:49158 ESTABLISHED 2952 TCP 192.168.0.206:139 0.0.0.0:0 LISTENING 4 TCP 192.168.0.206:54842 64.4.23.171:40013 ESTABLISHED 2944 TCP 192.168.0.206:54844 157.56.53.42:12350 ESTABLISHED 2944 TCP 192.168.0.206:54845 173.252.121.3:5222 ESTABLISHED 2944 TCP 192.168.0.206:54850 191.235.188.99:443 ESTABLISHED 2944 TCP 192.168.0.206:54893 64.4.61.132:443 ESTABLISHED 2944 TCP 192.168.0.206:54919 157.56.194.7:443 ESTABLISHED 2944 TCP 192.168.0.206:55125 185.39.80.24:80 ESTABLISHED 3684 TCP 192.168.0.206:57762 137.116.224.167:443 TIME_WAIT 0 TCP 192.168.0.206:57770 81.19.104.81:443 TIME_WAIT 0 TCP 192.168.0.206:57792 192.168.0.10:1780 TIME_WAIT 0 TCP 192.168.0.206:57793 192.168.0.10:1780 TIME_WAIT 0 TCP 192.168.0.206:57822 81.19.104.81:443 TIME_WAIT 0 TCP 192.168.0.206:57845 176.119.71.119:62348 ESTABLISHED 2920 < дальнейший вывод был пропущен> |
Cокеты обозначаются в виде IP_адрес:порт (с двоеточием между адресами). Например, 192.168.0.206:54842. Виртуальный канал связи, существующий между двумя сетевыми приложениями, обозначен парой сокетов. Например, 192.168.0.206:54842 и 64.4.23.171:40013. Первый сокет открыт на компьютере, другой на удаленном узле. Адрес в виде 0.0.0.0 означает любые IP адреса. Если в качестве номера порта присутствует 0, то это означает любые значения портов. В колонке "Состояние" отображается состояние соединения:
Первый тип состояния (LISTENING) означает, что сетевое приложение ждет установления соединения по определенному порту. Например, сокет 0.0.0.0:443 означает, что какое-то удаленное приложение может отправить на компьютер сообщение на порт 443 с целью установить виртуальное соединение.
В последней колонке (PID) выводятся номера процессов. Под процессами понимаются приложения. Из вывода мы видим, что процесс 2944 ждет подключения по портам 80, 443 и 61741. Как выше было сказано, какая-то программа с другого узла может отправить запрос на установление соединения с процессом 2944. Такая программа своё сообщение может адресовать на любой из указанных трех портов. Чтобы выяснить, какая программа запущена под видом процесса 2944, вызовем диспетчер задач (Ctrl+Alt+Delete). В окне диспетчера перейдем на вкладку Процессы и войдем в меню Вид. Далее выберем строчку Выбрать столбцы и активируем чекбокс ИД процесса (PID). Щелкнем по OK. Затем отсортируем таблицу по столбцу ИД процесса (PID), щелкнув по его названию. Находим запись, соответствующую процессу 2944.
В данном случае мы видим, что этим процессом является сетевое приложение Skype. Приведенный выше вывод netstat показывает, что данная программа поддерживает связь с шестью удаленными skype приложениями других пользователей. Для каждого соединения был создан отдельный сокет.
Все команды выполняются в окне командной строки и дублируются с помощью пакетного файла. Правила запуска окна командной строки были рассмотрены выше (рис. 1). Отметим лишь, что команды в окне вводятся с клавиатуры и выполняются нажатием на клавишу Enter. Предыдущие команды можно вызвать для редактирования и повторного выполнения с помощью клавиши Стрелка вверх. Скриншоты окна помещайте в файл отчета со всеми необходимыми комментариями.
Рассмотрим приемы работы с пакетным файлом. Для этого Вам потребуется специализированный текстовый редактор PSPad. С помощью поисковых машин Интернета (Google, Яндекс и т.п.) найдите сайт разработчика данного редактора. Скачайте дистрибутив редактора и инсталлируйте его на своем компьютере. Также рекомендуется с данного сайта скачать русификатор, который следует распаковать в папку Lang.
Запустите PSPad и в его окне выполните команду Файл/Новый. Выберите тип файла MS-DOS Batch (второй вариант Windows Shell Script ). В созданный файл введите строку текста ipconfig > 1.txt
Сохраните файл на рабочий стол под именем script. На рабочем столе файл имеет вид
Для его выполнения выполните двойной щелчок по нему мышью. На рабочем столе появится новый файл в виде
Для открытия файла 1.txt следует вернуться в окно PSPad. В меню Кодировка PSPad’а выберите OEM Russian (866) и затем откройте файл 1.txt (Файл/Открыть…). Важно соблюдать порядок действий: вначале выбирать OEM Russian (866) и после открывать файл. Из данного файла некоторые фрагменты вывода можно скопировать в файл отчета по лабораторной работе.
Поменяйте строку в скрипте на ipconfig /all > 2.txt
Красный уголок у названия скрипта предупреждает, что файл был изменен, но не сохранен. Сохраните файл. Уголок должен исчезнуть. При выполнении команды ipconfig /all вывод будет помещен в текстовый файл 2.txt. Запустите с рабочего стола скрипт и просмотрите в PSPad’е содержимое файла 2.txt.