4. netstat

Общеизвестные порты

Мы обсудили, как данные передаются через порты на нашей машине. Давайте рассмотрим некоторые распространенные, общеизвестные порты. Список этих портов можно найти в файле /etc/services:

ftp             21/tcp
ssh             22/tcp
smtp            25/tcp
domain          53/tcp  # DNS
http            80/tcp
https           443/tcp
..и т.д..

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

Введение в linux netstat

Чрезвычайно полезным инструментом для сбора подробной сетевой информации является netstat. Команда linux netstat отображает широкий спектр сетевых данных, включая активные сетевые соединения, таблицы маршрутизации и статистику интерфейсов. Ее часто называют швейцарским армейским ножом сетевых утилит.

Этот урок будет посвящен использованию netstat для проверки состояния сетевых соединений. Прежде чем перейти к примеру, давайте уточним разницу между сокетами и портами. Порт — это числовой идентификатор, используемый для направления данных в определенное приложение. Сокет — это конечная точка связи, позволяющая программам отправлять и получать данные. Адрес сокета — это уникальная комбинация IP-адреса и номера порта. Каждое соединение между хостом и назначением требует уникального сокета. Например, хотя служба HTTP работает на порту 80, одновременно может существовать несколько HTTP-соединений, и для каждого из них создается уникальный сокет.

Рассмотрим вывод команды netstat -at:

pete@icebox:~$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 icebox:domain           *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 icebox.lan:44468        124.28.28.50:http       TIME_WAIT
tcp        0      0 icebox.lan:34751        124.28.29.50:http       TIME_WAIT
tcp        0      0 icebox.lan:34604        economy.canonical.:http TIME_WAIT
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN
tcp6       1      0 ip6-localhost:35094     ip6-localhost:ipp       CLOSE_WAIT
tcp6       0      0 ip6-localhost:ipp       ip6-localhost:35094     FIN_WAIT2

Команда netstat -a отображает все прослушиваемые и не прослушиваемые сокеты, а флаг -t фильтрует вывод, показывая только TCP-соединения.

Столбцы следующие:

  • Proto: Используемый протокол (например, TCP или UDP).
  • Recv-Q: Очередь данных, ожидающих получения.
  • Send-Q: Очередь данных, ожидающих отправки.
  • Local Address: Адрес локального хоста.
  • Foreign Address: Адрес удаленного хоста.
  • State: Текущее состояние сокета.

Понимание состояний соединений

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

  • LISTENING: Сокет ожидает входящих соединений. Для установления TCP-соединения назначение должно прослушивать.
  • SYN_SENT: При использовании netstat состояние SYN_SENT указывает на то, что сокет активно пытается установить соединение.
  • ESTABLISHED: Сокет имеет полностью установленное соединение.
  • CLOSE_WAIT: Состояние netstat close_wait означает, что удаленный хост завершил работу, и локальная система ожидает, пока приложение закроет сокет.
  • TIME_WAIT: Сокет ожидает после закрытия для обработки любых пакетов, которые могут все еще находиться в сети.

Полный список состояний сокетов можно найти на странице руководства netstat.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот практическая лабораторная работа для закрепления понимания настроек сетевого интерфейса:

  1. Проверка настроек сетевого интерфейса с помощью ethtool в Linux - Узнайте, как использовать команду ethtool для проверки и управления настройками сетевого интерфейса, включая просмотр и установку скорости и дуплекса интерфейса, а также анализ режимов канала для устранения неполадок на физическом уровне сети.

Эта лабораторная работа поможет вам применить концепции в реальных сценариях и повысить уверенность в управлении сетевыми интерфейсами.

Тест

Какой порт используется для HTTPS?