Сетевые сервисы. Понятие сетевого порта. Контроль состояния портов
Компоненты сетевого приложения связываются через сетевые порты. Каждый сервисный порт имеет собственный номер, по которому клиенты могут подключаться к серверу. Активность клиента влияет на текущее состояние порта.
Цель работы: Ознакомиться с основыми сетевыми сервисами и связанными с ними портами. Научиться использовать команду netstat для контроля за состоянием локальных портов.
Задания к выполнению
- Запустить netstat в режиме непрерывного вывода. Перенаправить вывод в файл out.txt
- Инициировать сетевую активность(открыть несколько веб-сайтов, ftp-узлов, запустить торрент-клиент, клиент IM (например ICQ) и т.п.)
- Закрыть соединения
- Завершить работу netstat
- По данным файла out.txt определить:
- Какие ip-адреса у серверов, к которым были обращения
- К каким сервисам были подключения (номера портов и названия сервисов)
- Какие клиентские порты были задействованы
- Какие приложения (и их компоненты) были задействованы
- Общая статистика по транспортным протоколам
Методические указания
Сетевые сервисы и порты приложений
Сетевой порт - это предопределенная приложением или процессом точка подключения сетевых приложений, предоставленная операционной системой узла. Порт связан с сетевым адресом хоста (пример явного указания порта: 192.168.0.1:3128) и используемым протоколом взаимодействия.
В стеке TCP/IP понятие порта возникает на транспортном уровне, где порт представлен в виде 16-битного числа (номера порта). Протоколы TCP и UDP используют номера портов для идентификации компонентов сетевого приложения в рамках локального хоста. В клиент-серверной модели порты используются для мультиплексирования клиентских подключений.
IANA (Internet Assigned Numbers Authority) представляет список сетевых портов, который входит в поставку современных операционных систем в виде текстового файла services (/etc/services). В нем хранится информация о всех зарегистрированных в IANA службах internet, назначенных им номерах портов и типах сетевых протоколов. Фрагмент этого файла приведен в листинге 1. Подробности - в man 5 services.
Листинг 1. Фрагмент файла services
# http://www.iana.org/assignments/port-numbers # See also: services(5), http://www.sethwklein.net/projects/iana-etc/ http 80/tcp # World Wide Web HTTP http 80/udp # World Wide Web HTTP www-http 80/tcp # World Wide Web HTTP www-http 80/udp # World Wide Web HTTP http 80/sctp # HTTP http-mgmt 280/tcp # http-mgmt http-mgmt 280/udp # http-mgmt https 443/tcp # http protocol over TLS/SSL https 443/udp # http protocol over TLS/SSL https 443/sctp # HTTPS
Команда netstat
Команда netstat позволяет получить различную информацию о состоянии сетевой подсистемы хоста: статистику сетевых интерфейсов, данные о маршрутизации и сведения о сетевых соединениях. Команда netstat поддерживается всеми операционными системами, использующими стек TCP/IP, но в каждой конкретной реализации могут использоваться разные наборы опций. Список поддерживаемых опций можно получить командой netstat --help (см. листинг).
aag@stilo:~> netstat --help Использование: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vnNcaeol] [<Socket> ...] netstat { [-veenNac] -i | [-cnNe] -M | -s } -r, --route отобразить таблицу маршрутизации -i, --interfaces отобразить таблицу интерфейсов -g, --groups отобразить членства в мултикаст группах -s, --statistics отобразить сетевую статистику (как SNMP) -M, --masquerade отобразить замаскированные соединения -v, --verbose более детальный вывод -n, --numeric не преобразовывать адреса в имена --numeric-hosts не преобразовывать адреса в имена компьютеров --numeric-ports не преобразовывать номера портов в имена --numeric-users не преобразовывать в имена пользователей -N, --symbolic преобразовать имена устройств -e, --extend отображать другую/больше информации -p, --programs отображать номер процесса программы/имя программы для сокетов -c, --continuous непрерывный вывод -l, --listening отображать прослушиваемые сокеты сервера -a, --all, --listening отобразить все сокеты (по умолчанию - в статусе connected) -o, -timers отобразить таймеры -F, -fib отобразить информацию форвардинга базы (по умолчанию) -C, --cache отобразить кэш маршрутизации вместо FIB <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; по умолчанию: inet Список возможный адресных семейств (которые поддерживают маршрутизацию): inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25)
Чаще всего команда netstat применяется для решения таких задач, как:
- проверка состояния сетевых соединений;
- анализ информации о конфигурации интерфейсов;
- изучение таблицы маршрутизации;
- получение статистики о различных сетевых протоколах.
Пример использования netstat для получения информации об открытых соединениях по протоколу tcp (см. ключи опции Socket):
aag@stilo:~> netstat -t Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 4stud-new.asoi:www-http localhost:37092 TIME_WAIT tcp 0 0 aag.asoiu:56574 192.168.3.1:ndl-aas ESTABLISHED tcp 0 0 aag.asoiu:56552 192.168.3.1:ndl-aas ESTABLISHED tcp 0 0 4stud.asoiu:www-http localhost:37094 TIME_WAIT tcp 0 0 4stud.asoiu:www-http localhost:37095 TIME_WAIT tcp 0 0 4stud.asoiu:www-http localhost:37093 TIME_WAIT tcp 0 0 4stud.asoiu:www-http localhost:37090 TIME_WAIT tcp 0 0 4stud.asoiu:www-http localhost:37091 TIME_WAIT tcp 0 0 aag.asoiu:56576 192.168.3.1:ndl-aas ESTABLISHED tcp 0 0 aag.asoiu:56578 192.168.3.1:ndl-aas ESTABLISHED
Подробное описание см. например «Linux Programmer's Manual» (man 8 netstat).
Контрольные вопросы
CC-BY-CA Анатольев А.Г., 31.01.2012