СТАНДАРТНЫЕ ПОРТЫ список стандартных портов с описанием сервисов

uUcp (uucp@xakep.ru)

Спецвыпуск Xakep, номер #023, стр. 023-034-1


Сканер портов – это, конечно, большой рулез. Но, взяв его в зубы и накинувшись на безобидный хост, ничего особого не добьешься. Ну, выдаст он тебе что-нибудь в стиле:

22/listening

25/listening

79/listening

80/listening

111/listening

117/listening

И что? Многим это вообще ни о чем не говорит. Кто-то поймет, что на сервере открыты порты 22, 25, 79, 80, 111 и 117. Но кто его помнит, что за этими портами скрывается? Ладно, допустим, 80-ый порт знают все – web-сервер, а что стоит за, скажем, 117-ым? Ты помнишь? Я – нет. Так что давай посмотрим, как надо разруливаться в таких ситуациях. Есть два варианта: либо пользоваться сканерами, которые хоть как-то показывают, какой сервис висит на открытом порту (такими, как nmap – да и тот выдает о сервисе не очень много информации, только название), либо самому научиться определять по номеру любого порта сервис, который на нем висит. Мы пойдем вторым путем, так как он универсален и не привязывает тебя к каким-либо конкретным сканерам, платформам, ОС'ям архитектурам процессора и прочим ограничителям свободы и воли :).

ЧТО ЕСТЬ ЧТО?

Начнем с самого тривиального – что есть порт? Все знают, что у каждой машины в сети есть свой IP-адрес, и для того чтобы приконнектиться к ней и воспользоваться каким-нибудь сервисом (если машина его предоставляет, т.е. является сервером), надо знать этот самый айпишник. Но что делать, если машина предоставляет сразу несколько сервисов: вэб, почта, телнет? Вэб браузер будет коннектиться по этому IP точно так же, как и почтовый клиент, а ведь каждому из этих приложений надо предоставлять отдельный сервис. Как их разделить? Чтоб не возникало таких проблем, используются порты. Браузер коннектиться к серверу по его IP'шнику, но уточняет, что ему нужен такой-то порт (тот, на котором предоставляется вэб-сервис – 80), и почтовый клиент коннектится к тому же IP, но уточняя, что ему нужен другой порт (вернее порты: POP3/SMTP – 25/110, один для приема почты, второй для отправки – для приема и отправки почты используются разные сервисы). Вот и получается, что порты – это, как бы, адреса конкретных сервисов в пределах одного сервера (можно еще сказать в пределах одного IP). Ок, все отлично, но есть еще одна проблема: что будет, если каждый владелец сервера будет вешать свои сервисы на произвольных портах? Например, один повесит web-сервер на порт 40, а второй на 45 и тд. Будет неразбериха, потому что браузер не будет знать, к какому порту ему коннектиться на каждом новом сервере. Во избежание этих неприятностей и был создан список стандартных портов. В нем ясно сказано, что, например, web-сервис должен находиться на 80-м порту, телнет-сервис – на 23-м, DNS – на 53-м и тд. При таком раскладе браузер всегда знает, что ему нужен порт 80, точно так же telnet-клиент всегда коннектится на порт 23.

За списком стандартных портов следит организация под названием IANA (Internet Assigned Numbers Authority). Базируется эта контора по следующему адресу: http://www.iana.com/. В ее полномочья входит, собственно, редактирование и поддержание списка стандартных портов в надлежащем состоянии. Не завидую я этим ребятам - работа у них, блин, гиморная. Прикинь, каждый разработчик, решивший, что его сетевое приложение (или протокол) должно занимать такой-то порт, должен отправить в IANA'у соответствующий запрос на регистрацию этого порта (все это можно сделать прямо с сайта). После того, как IANA рассмотрит запрос и даст добро, порт будет добавлен в список стандартных портов и будет официально закреплен за соответствующим приложением (чтоб клиентская и серверная часть этого приложения могли спокойно взаимодействовать на всех серверах через этот порт).

Содержание  Вперед на стр. 023-034-2