Клиенты и серверы

Для программистов, использующих сокеты, наличие стандартных протоколов означает, что порты с номерами 0-1023 не должны использоваться в сценариях, если только не планируется действительное использование одного из этих протоколов верхнего уровня. Это соответствует стандартам и здравому смыслу. Например, программа Telnet может открыть диалог с любым компьютером, поддерживающим протокол Telnet, подключаясь к его порту 23; если бы не было предустановленных номеров портов, все серверы могли бы устанавливать службу Telnet на разные порты. Аналогично сайты стандартно ждут поступления запросов страниц от браузеров в порт с номером 80; если бы они этого не делали, то для посещения любого сайта в Сети требовалось бы знать и вводить номер порта HTTP.

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

Программу, которая выполняется постоянно и ожидает запросы, обычно называют сервером, а соединяющуюся с ней программу — клиентом. В качестве примера возьмем знакомую модель обзора веб-страниц. Как показано в табл. 12.1, используемый в Сети протокол HTTP позволяет клиентам и серверам общаться через сокеты с номером порта 80:

Сервер

На компьютере, где хранятся сайты, обычно выполняется программа веб-сервера, постоянно ожидающая входящие запросы соединения на сокете, связанном с портом 80. Часто сам сервер не занимается ничем другим, кроме постоянного ожидания появления запросов к порту — обработка запросов передается порожденным процессам или потокам.

Клиенты

Программы, которым нужно поговорить с этим сервером, для инициации соединения указывают имя компьютера сервера и порт 80. Типичными клиентами веб-серверов являются веб-броузеры, такие как Firefox, Internet Explorer или Chrome, но открыть соединение со стороны клиента и получать веб-страницы с сервера может любой сценарий, указав номер порта 80. Именем компьютера сервера может быть также «localhost», если веб-сервер выполняется на том же компьютере, что и клиент.

В целом многие клиенты могут подключаться к серверу через сокеты независимо от того, реализован на нем стандартный протокол или нечто более специфическое для данного приложения. А в некоторых приложениях понятия клиента и сервера размыты — программы могут обмениваться между собой байтами скорее как равноправные участники, а не как главный и подчиненный. Например, агенты пиринговых сетей передачи файлов могут одновременно являться клиентами и серверами для разных участков передаваемых файлов.

Однако в данной книге программы, которые ждут появления запросов на сокетах, мы будем называть сервера ми, а программы, устанавливающие соединения, — клиента ми. Иногда также мы будем называть сер ве- ром и клиентом компьютеры, на которых выполняются эти программы (например, компьютер, на котором выполняется программа веб-сервера, может быть назван ком пь ю тером веб-сервера), но это скорее относится к физической привязке, а не к функциональной природе.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий