
В этой публикации вы узнаете единственный важнейший и полезный инструмент в компьютерных сетях – Wireshark.
Эта публикация опирается на базовые знания о компьютерных сетях. Обязательно просмотрите мой предыдущий пост о пятислойной модели, если вам нужно обновить информацию.
Wireshark – это сниффер, а также анализатор пакетов.
Что это значит?
Вы можете подумать о a нюхач как измерительный прибор Мы используем его для проверки того, что происходит внутри сетевого кабеля или в воздухе, если мы имеем дело с беспроводной сетью. Сниффер показывает нам данные, проходящие через нашу сетевую карту.
Но Wireshark делает больше, чем это. Снифер может просто отразить поток битов – единиц и нулей, которые видит сетевая карта. Wireshark также есть a анализатор пакеров который отображает множество значимых данных о кадрах, которые он видит.
Wireshark – это бесплатный инструмент с открытым кодом, широко используемый для анализа сетевого трафика.
Wireshark может быть полезен во многих случаях. Это может быть полезным для устранения проблем в сети, например, если вы не можете подключиться от одного компьютера к другому и хотите понять, что происходит.
Это также может помочь программистам. К примеру, представьте, что вы реализуете программу чата между двумя клиентами, и что-то не работает. Чтобы понять, что именно посылается, вы можете использовать Wireshark, чтобы просмотреть данные, передаваемые по проводу.
Итак, давайте познакомимся с Wireshark.
Начните с загрузки Wireshark с официального веб-сайта:
https://www.wireshark.org/#download
Следуйте инструкциям установщика, и все будет готово.
Запустите Wireshark и начните с анализа данных. Для этого можно ударить Ctrl+K
(ПК) или Cmd+K
(Mac), чтобы получить Capture Options
окно. Обратите внимание, что вы можете получить доступ к этому окну другими способами. Вы можете пойти к Capture->Options
. Кроме того, вы можете нажать Capture Options
значок.
Я рекомендую вам использовать комбинации клавиш и освоить их с самого начала, поскольку они позволят сэкономить время и работать эффективнее.
Итак, я снова использовал Ctrl+K
(или Cmd+K
) и получил этот экран:

Capture Options
окно в Wireshark (Источник: коротко)Здесь мы можем увидеть список интерфейсов, а у меня их достаточно много. Какой из них актуален? Если вы не уверены на этом этапе, вы можете просмотреть Traffic
и посмотрите, какие интерфейсы сейчас имеют трафик.
Вот мы это видим Wi-Fi 3
через него проходит транспорт, поскольку линия высока. Выберите подходящий сетевой интерфейс и нажмите Enter
или нажмите кнопку Start
.
Дайте Wireshark некоторое время пронюхать сеть, а затем прекратите ее использование Ctrl+E
/ Cmd+E
. Опять же, этого можно добиться другими способами – например, посетить Capture->Stop
или нажав кнопку Stop
значок.
Рассмотрим разные разделы:

Раздел, отмеченный красным, содержит меню Wireshark со всеми интересными параметрами.
Главная панель инструментов отмечена синим цветом, что обеспечивает быстрый доступ к некоторым пунктам меню.
Далее, обозначенный зеленым цветом, идет фильтр отображения. Мы скоро вернемся к этому, поскольку это одна из важнейших функций Wireshark.
Затем следует:
Панель списка пакетов отмечена оранжевым цветом. Он отображает краткую информацию о каждом захваченном пакете.
(Примечание: термин Frame относится к последовательности байтов на канальном уровне, а пакет – это последовательность байтов с сетевого уровня. В этом сообщении я буду использовать эти термины как взаимозаменяемые, хотя, чтобы быть точным, каждый пакет есть кадр, но не каждый кадр является пакетом , поскольку есть кадры, не содержащие данных сетевого уровня.)
Как вы можете видеть на картинке выше, у нас есть несколько столбцов:
ЧИСЛО (№) – номер пакета в захватном файле. Это число не изменится, даже если мы используем фильтры. Это только последовательный номер – первый кадр, который вы пронюхали, получает номер 1, второй кадр получает номер 2 и так далее.
Время – отметка времени пакета. Он показывает, сколько времени прошло от первого пакета, который мы пронюхали до момента, когда мы пронюхали соответствующий пакет. Поэтому время для пакета номер 1 всегда равно 0.
Источник – адрес, откуда поступает этот пакет. Не беспокойтесь, если вы еще не понимаете формат адресов, мы рассмотрим различные адреса в следующих руководствах.
Назначение – адрес, куда следует этот пакет.
Протокол – сокращенное название протокола. Это будет верхний протокол, то есть протокол высочайшего уровня.
Длина – длина каждого пакета в байтах.
Информация – дополнительная информация о содержимом пакета. Это меняется в соответствии с протоколом.
Нажав на пакеты на этой панели, вы управляете тем, что отображается на двух других панелях, которые я сейчас опишу.
Нажмите один из захваченных пакетов. В следующем примере я нажал на пакет номер 147:

Теперь, панель деталей пакета Более подробно отображает пакет, выбранный на панели списка пакетов. Вы можете увидеть слои здесь.
В примере выше мы имеем Ethernet II как второй уровень, IPv4 как третий уровень, UDP как четвертый уровень и некоторые данные как полезную нагрузку.
Когда мы нажимаем на определенный пласт, мы фактически видим заголовок этого слоя.
Обратите внимание, что мы не видим первый слой в отдельности. Напоминаем, что первый слой отвечает за передача одного бита – 0 или 1 – через сеть (если вам нужно обновить информацию о разных слоях, просмотрите эту публикацию).

Под панелью деталей пакета у нас есть панель пакетных байтов. Он отображает данные из пакета, выбранного на панели списка пакетов. Это фактические данные, которые посылаются по проволоке. Мы можем видеть данные в шестнадцатеричной форме, а также в форме ASCII.
Wireshark имеет много разных функций, и сегодня мы сосредоточимся на одном – фильтре отображения.
Как видите, как только вы начинаете нюхать данные, вы получаете МНОГО трафика. Но смотреть на все точно не хочется.
Вспомните предыдущий пример – использование Wireshark для настройки программы чата, которую вы ввели. В этом случае вы хотите видеть трафик, связанный только с программой чата.
Скажем, я хочу отфильтровать только сообщения, отправленные по адресу источника кадра номер 149 ( 192.168.1.3
). Я расскажу об IP-адресах в следующих публикациях, но сейчас вы видите, что они состоят из четырех чисел, разделенных точкой:

display filter
в Wireshark (Источник: Кратко)Теперь, даже если вы не знаете, как фильтровать только пакеты, отправленные из этого IP-адреса, вы можете использовать Wireshark, чтобы показать вам, как это делается.
Для этого перейдите к правому полю, которое мы хотим отфильтровать – в этом случае это IP-адрес источника. Затем щелкните правой кнопкой мыши -> и выберите filter -> Apply as Filter
.

После применения фильтра вы увидите только пакеты, отправленные с этого адреса. Кроме того, можно просмотреть строку фильтра отображения и увидеть используемую команду. Таким образом вы можете узнать о синтаксисе фильтра отображения (в этом примере это ip.src
для поля IP-адреса источника):

Теперь попробуйте отфильтровать только пакеты, отправленные с этого адреса, и к адрес 172.217.16.142
(как в кадре 130 на изображении выше). Как ты это сделал бы?
Ну, вы можете перейти к соответствующему полю – в этом случае это IP-адрес назначения. Теперь щелкните правой кнопкой мыши -> Apply as Filter
-> и выберите ...and Selected
:

Если вы посмотрите на строку фильтра дисплея после применения этого фильтра:

Вы также можете узнать, что вы можете использовать &&
операнд для выполнения and
. Вы также можете написать слово and
вместо этого и получить тот же результат.

&&
или and
(Источник: Кратко)Пинг это полезная утилита для проверки подключения удаленных серверов.
На этой странице объясняется, как пользоваться ping
в Windows и на этой странице объясняется, как это сделать в OSX.
Теперь мы можем попробовать ping <address>
с помощью командной строки. По умолчанию отправляется ping 4
спрашивает и ждет a понг ответ. Если мы хотим, чтобы он посылал один запрос, мы можем использовать -n 1
:

Вы видите, что Google ответил. Время, необходимое для возвращения сообщения, составило 92 миллисекунды. Мы узнаем о значениях TTL в следующих публикациях.
Ping полезен, чтобы определить, доступна ли удаленная служба и как быстро достичь этой службы. Если подключение к надежному серверу, например google.com занимает много времени, у нас могут возникнуть проблемы с подключением.
Попробуйте сами
Теперь попробуйте воспользоваться Wireshark, чтобы ответить на следующие вопросы:
1) Какой протокол выполняет пинг коммунальное использование?
2) Используя только Wireshark, вычислите RTT (Время прохождения туда и обратно) – сколько времени прошло с момента отправки вашего запроса ping и до получения ответа на ping?
Далее выполните следующую команду:
ping -n 1 -l 342 www.google.com
3) Каково главное различие между пакетом, отправленным этой командой, и пакетом, отправленным предыдущей командой? Где в Wireshark можно увидеть эту разницу, проверяя пакеты?
4) Какое содержимое (данные) предоставляется в пакете ping? Какое содержимое предоставляется в ping-пакете?
Давайте решим вместе
Итак, первый вопрос:
Какой протокол использует утилита ping?
Чтобы ответить на этот вопрос, начните нюхать Wireshark и просто запустите ping
команда. Остановите нюхание и рассмотрите панель пакетов:

Wireshark обозначает пакеты как Echo (ping) request
и Echo (ping) reply
.
Рассматривая эти пакеты, мы видим, что они состоят из Ethernet
для уровня канала данных (хотя это может отличаться от одной сети к другой), IPv4
как сетевой уровень, а затем ICMP
как протокол для самого Ping. Итак, ответ, который мы нашли: ICMP.
Следующий вопрос:
Используя только Wireshark, вычислите время в обратном направлении
Глядя на восторженные пакеты, мы можем увидеть Time
и вычтите время пакета Pong ( 7.888...
) с момента пакета Ping ( 7.796...
).
Следовательно, в этом случае RTT был: 92 мс. Конечно, значение может быть другим, когда вы запускаете ping
полезность.
Какова главная разница между пакетом, отправленным этой командой, и пакетом, отправленным предыдущей командой?
Для вопроса номер 3 нас просят выполнить следующую команду:
ping -n 1 -l 342 www.google.com
Смотря на первый запуск ping
мы можем увидеть длину пакетов 74
байты:

Наблюдение за пакетами, отправленными после запуска ping
с -l 342
аргумент, мы видим, что значение больше:

Итак, основное отличие состоит в количестве байтов, которые посылаются как данные.
Вопрос номер четыре:
Какое содержимое (данные) предоставляется в пакете ping?
Какое содержимое предоставляется в ping-пакете?
Нажмите пакет запроса, чтобы просмотреть отправленные данные:

ping
утилита (источник: Brief)Ответ на запрос ping a
через w
снова и снова.
Относительно ответа ping – это то же самое, что запрос.
Wireshark – отличный инструмент для тех, кто работает с компьютерными сетями. Это может помочь вам понять, как работают протоколы, и поможет вам наладить программы или проблемы с сетью.
Как вы видели, вы можете узнать, как все работает, просто запустив Wireshark в фоновом режиме при их использовании, а затем проверив трафик. С этим инструментом за поясом небо есть предел.
В следующих уроках мы также будем полагаться на наши знания Wireshark и использовать их для дальнейшего понимания различных концепций компьютерных сетей.
Об авторе
Омер Розенбаум является основным техническим директором Swimm. Он является автором YouTube-канала Brief. Он также является экспертом по киберобучению и основателем Checkpoint Security Academy. Он автор книги «Компьютерные сети» (ивритом). Вы можете найти его в Twitter.