Home

Page 8
Page 8
background image

ВСЕГДА пришлось бы указывать вручную номер порта, к которому они хотели бы обратиться, при 
использовании техники «хорошо известных портов» это приходится делать лишь в особых случаях. 

Так  же  отметим,  что  список  «хорошо  известных»  портов  всегда  можно  было  получить  в 

текущей  редакции RFC Assigned Number. Последней  версией  данного  документа  был RFC1700 
(Октябрь 1994 года).  Впоследствии,  в RFC3232 (Январь 2002 года)  было  объявлено,  что  серия 
документов Assigned Number не  будет  продолжаться,  и  заменяется  на  доступный  в  Интернет  по 
адресу www.iana.org/numbers.html документ,  именно  этот  документ  сегодня  является  источником 
информации об используемых хорошо известных портах (и прочих константах стека TCP/IP). Так 
же сведения о занимаемых службами портах можно получить из файл services, который расположен 
в  папке %systemroot%\system32\drivers\etc .Bзначально  для  «хорошо  известных»  портов  было 
зарезервировано 256 номеров  портов (0 – 255), однако  позднее,  в RFC1060 (1990 год),  их  число 
было  расширено  до 1024, а  в RFC1340 (очередной Assigned Number) было  введено  понятие 
«регистрированных» портов.  

Что  такое  «регистрированные  порты»  и  для  чего  они  используются?  Дело  в  том,  что 

базовые,  ключевые  приложения  стека TCP получили  свои  «хорошо  известные»  порты,  но  что 
делать  программисту,  которому  необходимо  для  СОБСТВЕННОГО  серверного  приложения 
использовать  некоторый  «хорошо  известный»  лишь  СОБСТВЕННОМУ  клиенту  порт?  С  одной 
стороны программист может использовать для этой цели любой порт в диапазоне 1024 – 65535, с 
другой  стороны  это  может  привести  к  потенциальному  конфликту  с  другими  приложениями. 
Иногда  бывают  ситуации,  когда  написанное  приложение  становится  популярным  и  массово 
используемым  множеством  пользователей.  Желательно,  чтобы  в  случае,  если  такое  приложение 
становится  популярным  и  появляется  шанс  встретить  его  использование  в  собственной  сети/сети 
заказчика  программного  продукта,  программист,  выбирающий  порт  для  своего  серверного 
приложения мог бы об этом узнать и не использовать такой порт для своих целей. Для этого было 
введено  понятие  о  «регистрированных»  портах – таковыми  были  названы  ВСЕ  остальные  порты, 
помимо  «хорошо  известных» (сегодня  номера  с 1024 до 49151), IANA ведет  учет  использования 
регистрированных  портов,  задействованных  популярными  приложениями,  хотя  и  НЕ  занимается 
координированием  распределения  таких  портов.  Т.е.  программист,  выбирающий  для  своего 
серверного  приложения  некоторый  порт,  может  выбрать  любой  из  диапазона 1024 – 65535, но 
имеет смысл при этом убедиться с помощью текущей версии списка «регистрированных» портов, 
что  некоторое  популярное  приложение  (которое,  возможно,  когда-то  будет  использоваться  в  сети 
заказчика  программного  продукта)  не  использует  уже  этот  порт.  Если  желаемый  порт  уже 
используется,  его,  тем  не  менее,  можно  использовать  для  своих  нужд,  но  из  соображений 
потенциальной  совместимости  программисту  имеет  смысл  выбрать  другой  порт  для  своего 
серверного  приложения.  В  любом  случае  портов  много  и  поэтому  при  случайном  выборе 
серверного  порта  шанс  встретить  совпадение  с  другим  используемым  приложением,  которое 
пользуется  таким  же  номером  порта  не  велик.  Когда  программист  для  своих  целей  присваивает 
своему  серверному  программному  обеспечению  некоторый  номер  порта,  он  затем,  создавая 
клиентское программное обеспечение, очевидно, сделает так, чтобы клиент «знал» серверный порт, 
т.е.  конфигурирование  такого  клиент  или  указание  порта  силами  пользователями  так  же  не 
потребуется – фактически,  данный  порт  будет  «хорошо  известен»,  но  только  данной  паре 
клиент/сервер.  

Так же отметим, что бывают ситуации, когда некоторое серверное программное обеспечение 

по ряду причин НЕ использует некоторого известного порта, а может занимать различные номера 
портов. В таком случае пользователю придется сообщать своему клиенту не только адрес сервера, 
но и номер порта, который занимает на сервере соответствующая служба своими силами, пример 
такого серверного программного обеспечения нам встретится в этом курсе (HTTP-Proxy).  

Итак,  с  присвоением  номеров  портов  серверным  приложениям  мы  разобрались,  теперь 

рассмотрим, каким образом присваиваются номера портов клиентским приложениям. Можно ли и 
за  клиентскими  приложениями  зарезервировать  номера  портов  точно  так  же,  как  это  сделано  с 
серверными приложениями? Такой подход крайне плох: положим, мы зарезервируем за браузером 
некоторый  порт,  в  таком  случае  при  запуске  браузера  на  узле  пользователя  он  всегда  будет 
занимать один и тот же порт. Но что, если пользователю захочется запустить не один, а несколько 
браузеров?  В  таком  случае  можно  зарезервировать  за  браузером  не  один,  а  несколько  портов? 
Сколько  портов  имеет  смысл  зарезервировать?  Очевидно,  необходимо  зарезервировать  за 
браузером  столь  много  портов,  чтобы  не  могла  возникнуть  ситуация,  в  которой  пользователю 
хочется  запустить  браузеров  больше,  чем  для  него  зарезервировано  портов,  т.е.  количество 


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.