Программа Wireshark предназначена для анализа пакетов, проходящих в сети Ethernet. Запустить программу можно выбрав пункт меню "Wireshark". Одной из наиболее интересных возможностей программы EtherPeek является захват проходящих по сети пакетов, их декодирование и предоставление пользователю как самих пакетов, так и содержащейся в них информации в наглядном и удобном виде.
При запуске главное окно программы выглядит следующим образом. В верхней части окна расположено меню, позволяющее вызывать команды в соответствии с выполняемыми задачами. В частности пункт меню "File" позволяет сохранять в файле информацию о пакетах, полученных в текущем сеансе, и загружать файлы, содержащие данные о пакетах, захваченных в предыдущих сеансах.
Прежде чем начинать новый сеанс захвата пакетов следует выбрать пункт "Capture", далее пункт меню "Interfaces", в результате чего появится окно "Wireshark Capture Interfaces", отображающее доступные сетевые интерфейсы, с которых может осуществляться захват пакетов. Если Wireshark обнаружил только один активный интерфейс, то в окне будет представлена информация об этом интерфейсе.
На приведенном рисунке видно, что в строке сетевого интерфейса приводится описание сетевой платы, далее IP-адрес интерфейса, далее количество принятых пакетов и скорость поступления пакетов(Packets/s). В этой же строке расположены три кнопки: "Start", "Options" и Details". Чтобы начать сеанс захвата пакетов нужно нажать кнопку "Start".
В результате этого в главном окне программы появится список захваченных пакетов, который постоянно пополняется сетевыми пакетами, проходящими по сети. Для прекращения захвата пакетов нужно выбрать пункты меню "Capture" и "Stop".
Рассмотрим содержимое и значение трех горизонтальных окон. В самом верхнем окне содержится последовательный список всех пакетов, захваченных в течение текущего сеанса захвата. Информация о захваченных пакетах в данном окне представлена в строках таблицы. По умолчанию колонки таблицы содержат данные о номере пакета, времени его получения, IP-адресах отправителя и получателя, о протоколе пакета, а также дополнительную информацию, содержимое которой зависит от типа пакета.
Выделяя какую-либо строку таблицы можно более детально узнать что из себя представляет данный пакет с помощью нижних окон.
В самом нижнем окне представлено содержимое пакета в двоичном виде с помощью шестнадцатеричных цифр. Именно в таком виде пакеты передаются по сети и хранятся в компьютере. Информация и данные пакета здесь содержатся в виде, закодированном посредством комбинаций двоичных цифр.
В среднем окне представлена расшифровка данных, содержащихся в пакете. Важным преимуществом программы является то, что расшифрованные данные представлены в удобном и структурированном виде. Представленная структура четко отражает структуру уровней стека протоколов TCP/IP и соответствующую им вложенность заголовков. Понять эту взаимосвязь помогает то, что при выделении в среднем окне какого-либо участка декодированной информации, программа автоматически выделяет соответствующий участок в двоичном представлении пакета в нижнем окне.
Использование программы позволяет сразу убедиться в том, что в сети происходит интенсивный обмен пакетами, даже если мы не передаем какие-либо данные. Таким образом можно наглядно видеть, что для поддержания работоспособности сети, компьютеры, подключенные к сети, постоянно и интенсивно обмениваются служебной информацией. Однако, для решения конкретных задач администрирования необходимо уметь фильтровать пакеты, отбирая лишь те, которые интересуют нас непосредственно.
В качестве первого примера рассмотрим применение анализатора Wireshark для выделения и анализа пакетов, посылаемых утилитой ping. Для этого начнем сеанс захвата пакетов на одном из компьютеров (в описываемом эксперименте этот компьютер имеет IP-адрес 192.168.252.21), после чего на другом компьютере (с IP-адресом 192.168.252.20) в режиме командной строки запустим утилиту ping 192.168.252.21. После окончания работы утилиты ping остановим сеанс захвата пакетов анализатором. В результате в окне Wireshark будут отображены все пакеты, полученные в течение сеанса, включая и пакеты утилиты ping. Чтобы не выискивать самостоятельно интересующие нас пакеты из всего множества пакетов рекомендуется использовать фильтрацию, позволяющую выделить только те пакеты, которые представляют наибольший интерес.
Для задания фильтра можно нажать кнопку "Filter:", расположенную в строке фильтрации, находящейся под строкой меню. В результате появится окно "Wireshark: Display Filter".
В этом окне в списке "Filter" приводится набор встроенных фильтров, готовых к применению. Для этого достаточно выбрать требуемый фильтр и нажать кнопку "Apply". Каждый из имеющихся фильтров определяется именем, отображаемым в поле "Filter name:" и строкой, отображаемой в поле "Filter string:" и задающей условие фильтрации пакетов. Рассмотрение встроенных фильтров позволяет, в некоторой степени, понять синтаксис задания условий отбора, аналогичный синтаксису условных операторов языка C. Для создания собственного фильтра, например, фильтра отбирающего лишь те пакеты, в которых IP-адрес источника или приемника равен 192.168.252.20 нужно нажать кнопку "New" и ввести в поле "Filter name:" имя фильтра, например, "myFilter", а в поле "Filter string:" условие фильтрации - в данном случае "ip.addr==192.168.252.20" (заметьте два следующих подряд знака равенства) и нажать кнопку "Apply". При создании сложных фильтров помощь в составлении соответствующих выражений может оказать построитель выражений "Wireshark Filter Expression", который можно увидеть, нажав кнопку "Expression...". В результате применения фильтра содержимое главного окна Wireshark изменится и будет выглядеть примерно следующим образом.
Из представленного списка пакетов видно, что утилита ping отправила четыре пакета-запроса (Echo(ping) request) с компьютера, на котором она была запущена, и получила четыре ответных пакета (Echo(ping) reply) с запрашиваемого компьютера. Чтобы убрать фильтрацию достаточно в строке фильтрации нажать кнопку "Clear".
Более подробную информацию о каждом из пакетов можно получить, выделяя интересущий пакет в полученном списке пакетов и анализируя его содержимое с помощью инфрмации, представленной в среднем окне анализатора.
Из представленного рисунка видно, что выбранный пакет содержит три заголовка:
Кроме этих заголовков, содержащих информацию, требуемую для функционирования соответствующих уровней стека TCP/IP, в среднем окне присутствует также пункт Frame, в котором представлена информация общего характера о выбранном пакете, которая не содержится непосредственно в самом пакете, например, время прибытия пакета, его длина и т.д.
Для просмотра содержимого отдельных заголовков их нужно развернуть щелчком на знаке "+", или свернуть щелчком на знаке "-", если эта информация больше не нужна и требуется освободить место для просмотра других данных. На нижнем рисунке, например, представлена в развернутом виде информация, содержащаяся в заголовках пакета-запроса.
Рассмотрение представленной информации позволяет очень мног узнать о работе различных уровней стека TCP/IP. Видно, например, что на канальном уровне, обслуживаемом заголовком Ethernet II, для передачи пакета используются физические адреса источника и получателя, а на сетевом уровне, обслуживаемом заголовком Internet Protocol, для аналогичной цели используются IP-адреса. Уровень Internet Control Message Protocol используется непосредственно для диагностических целей, обслуживаемых утилитой ping. Именно в этом заголовке с помощью поля Type определяется является ли данный пакет запросом или ответом, а также содержится набивка пакета данными, которые в данном случае представляют просто английский алфавит.
Следующий рисунок представляет развернутую информацию о содержимом ответного пакета. Прежде всего можно отметить перемену адресов, как физических, так и IP-адресов назначения и источника, а также изменение поля Type в заголовке Internet Control Message Protocol.
Для более углубленного понимания принципов работы стека TCP/IP и структуры заголовков пакетов рекомендуется самостоятельное изучение содержимого полей заголовков и смысла, содержащейся в них информации. Неоценимую помощь в этом окажет анализатор пакетов Wireshark.