Учебно-методические материалы для студентов кафедры АСОИУ

Сетевые сервисы. Понятие сетевого порта. Контроль состояния портов

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

Цель работы: Ознакомиться с основыми сетевыми сервисами и связанными с ними портами. Научиться использовать команду netstat для контроля за состоянием локальных портов.

Задания к выполнению

  1. Запустить netstat в режиме непрерывного вывода. Перенаправить вывод в файл out.txt
  2. Инициировать сетевую активность(открыть несколько веб-сайтов, ftp-узлов, запустить торрент-клиент, клиент IM (например ICQ) и т.п.)
  3. Закрыть соединения
  4. Завершить работу netstat
  5. По данным файла 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