Home

Page 7
Page 7
background image

совсем  не  удобной.  Для  решений  этой  задачи  применяют  концепцию «well known port» - хорошо 
известных портов. Рассматриваем, в чем суть данной концепции.  

Если  присвоить  часто  используемым  службам  сети  (наш  гипотетический  сервер  времени 

может быть примером такой «часто используемой» службы) некие фиксированные номера портов и 
сделать  эту  информацию  всем  известной,  то  у  пользователя  не  будет  необходимости  указывать 
номер порта при обращении к сетевым службам – если приложение, получающее в нашем примере 
текущее время от сервера является клиентом ИМЕННО службы времени, то программист, который 
создал этого клиента УЖЕ «сконфигурировал» этого клиента отправлять все запросы серверам (IP 
адреса  серверов  будет  указывать  пользователь)  ИМЕННО  на  хорошо  известный  порт, 
зарезервированный  за  данной  службой  времени.  Положим  для  определенности,  что  за  данной 
серверной службой зафиксирован UDP порт 13, в таком случае программа клиент будет ожидать от 
пользователя указания с какого именно сервера получать текущее время (в форме IP адреса этого 
сервера или его символьного имени) и будет отправлять запросы данному компьютеру на UDP порт 
номер 13 – это означает, что пользователю не нужно ни запоминать, ни указывать клиентам номера 
портов,  к  которым  нужно  обратиться – за  пользователей  это  уже  сделают  авторы  программ – 
клиентов. 

Рассмотрим  еще  один  пример:  для  того,  чтобы  просмотреть  некоторую WEB страницу 

необходимо написать в адресной строке браузера IP адрес сервера (чаще символьное имя, которое 
заменяется на IP адрес  с  помощью  специальной  службы,  но  об  этом  несколько  позже),  но  им  НЕ 
приходится писать в адресной строке браузера НОМЕР ПОРТА на сервере. Снова таки, объясняем 
это  использованием  техники  хорошо  известных  портов:  программное  обеспечение WEB сервера 
занимает  на  компьютере-сервере  хорошо  известный TCP порт 80, а  браузер,  будучи  не  просто 
программой, а клиентом службы WEB знает, что по умолчанию, если не указано иное, необходимо 
обращаться к указанному узлу именно на 80 порт.  

 Как  нам  уже  известно,  существует  всего 65536 различных UDP портов  (так  как  поля Port 

имеют  длину 2 байта),  из  этих  портов 1023 (с 1-го  по 1023-ий)  зарезервированы  за  некоторыми 
серверными службами.  

Итак,  подводим  итог:  серверные  приложения  обычно  используют  фиксированные,  хорошо 

известные номера портов, подытожим достоинства и недостатки данного подхода.  

Достоинство:  пользователю  нет  необходимости  запоминать  и  указывать  клиентскому 

приложению  номер  порта,  к  которому  необходимо  обратиться – использование  специального 
клиента  некоторой  службы  автоматически  означает,  что  приложение-клиент  само  знает  номер 
порта  на  сервере,  к  которому  необходимо  обратиться.  Разумеется,  адрес  узла,  к  которому 
необходимо обратиться, по прежнему должен указывать пользователь, но иначе и быть не может, 
например,  если  необходимо  подключиться  к  файловому  серверу,  то  только  пользователь  может 
знать,  к  КАКОМУ  ИМЕННО  файловому  серверу  он  хочет  получить  доступ,  а  вот  номер  порта, 
который занимает файловый сервер, пользователю указывать не придется.  

Недостаток:  на  одном  узле  может  использоваться  ТОЛЬКО  ОДИН  сервер  определенного 

типа, занимающий хорошо известный порт. Действительно, только один порт с некоторым номером 
может  существовать  на  одном  узле,  это  следует  из  определения  порта,  как  уникального  адреса 
приложения  на  узле.  Важно  понимать,  что  при  этом  на  сервере  может  существовать  СКОЛЬ 
УГОДНО  МНОГО  служб  одного  и  того  же  типа  (например,  файловых  серверов,  использующих 
один и тот же протокол), но лишь ОДНА такая служба будет занимать хорошо известный порт, все 
остальные  службы  вынуждены  будут  занимать  другие  порты  (с  номерами  более 1024). 
Следовательно, лишь к одному экземпляру службы данного типа пользователи смогут обращаться 
«упрощенно»,  т.е.  не  указывая  номера  порта,  к  прочим  экземплярам  службы  так  же  можно  будет 
обращаться, но для этого пользователям необходимо будет сообщать клиентскому приложению не 
только IP адрес  сервера,  но  и  номер  порта,  который  занимает  служба  на  сервере.  Отсюда  сразу 
следует  вывод:  авторам  клиентских  приложений  необходимо  не  только  автоматически 
конфигурировать  приложения  для  обращения  к  хорошо  известным  портам,  но  и  предусматривать 
возможность указывать порт сервера вручную пользователю, разумеется, в этом случае ожидается, 
что  пользователь  узнал  необходимый  номер  порта  из  некоторого  источника.  Продолжая 
рассмотренный выше пример с браузером, отметим, что пользователь может вручную указать порт, 
к  которому  он  бы  хотел    обратиться  на  удаленном  узле,  для  этого  необходимо  после  адреса  узла 
поставить двоеточие и указать номер порта. 

Так  же  важно  отметить,  что  данный  рассмотренный  выше  недостаток  техники  «хорошо 

известных  портов»  не  является  критическим:  без  применения  данной  техники  пользователям 


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

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