В основу каждого сетевого приложения положена модель клиент-сервер. В соответствии с этой моделью приложение состоит из сервера и одного или нескольких клиентов. Сервер управляет ресурсами, предоставляя услуги своим клиентам, для чего необходимо тем или иным способом манипулировать ресурсами. Базовой операцией модели клиент-сервер является транзакция клиент-сервер, предусматривающая запрос со стороны клиента, после которого следует ответ со стороны сервера.
Клиент и серверы обмениваются данными через глобальную сеть, известную как сеть Internet. С точки зрения программиста, можно рассматривать Internet как коллекцию хостов со всего мира, обладающих следующими свойствами:
- каждый хост сети Internet имеет уникальное 32-разрядное имя, которое является его IP-адресом
- множество IP-адресов отображается на множество доменных имен Internet
- процессы различных хостов Internet могут обмениваться между собой данными по установленным соединениям
Клиенты и серверы устанавливают соединения с помощью интерфейса сокетов. Сокет есть конечная точка соединения, которая представлена приложению в виде дескриптора файла. Интерфейс сокетов предоставляет функции для открывания и закрывания дескрипторов сокетов. Клиенты и серверы осуществляют обмен данными друг с другом путем записи и считывания содержимого этих дескрипторов.
Web-серверы и их клиенты осуществляют обмен данными между собой посредством использования протокола HTTP. Браузер запрашивает у сервера статическое либо динамическое содержимое, а для понимания, что это все из себя представляет и как с этим работать, лучше пройти обучение веб программированию в учебном центре «Дельфа».
Запрос статического содержимого обслуживается путем извлечения файла с диска сервера в доставки его клиенту. Запрос динамического содержимого обслуживается путем прогона программы в контексте порожденного процесса сервера и возврата его вывода клиенту. Стандарт CGI формулирует множество правил, которые регламентируют, как клиент передает программные аргументы серверу, как сервер передает эти аргументы и другую информацию производному процессу, и как этот производный процесс пересылает свой вывод клиенту.
Простой, но вместе с тем нормально функционирующий процесс, который обслуживает как статическое, так и динамическое содержимое, может быть реализован несколькими сотнями программных кодов на языке С.
© digitrode.ru