Общеизвестные порты
Мы обсудили, как данные передаются через порты на нашей машине. Давайте рассмотрим некоторые распространенные, общеизвестные порты. Список этих портов можно найти в файле /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.