![[Top bar]](../../common/images/Topbar-en.gif)
![[Bottom bar]](../../common/images/Bottombar-en.gif) 
| эта страница доступна на следующих языках: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce | 
| ![[Фото автора]](http://www.linuxfocus.org/common/images/Charles-V.jpg)  Автор Charles vidal Об авторе: Владелец гастрономического склада в Париже. Приверженец философии GNU и Open Source за возможность обмена знаниями. Хотел бы выделять время для игры на саксофоне. Содержание: | 
![[Иллюстрация]](http://www.linuxfocus.org/common/images/illustration129.gif)
Резюме:
Эта заметка о самом популярном веб сервере Apache состоит из двух частей : в первой я кратко опишу историю WWW, во второй - введение в HTTP протокол.
Apache - название бесплатного веб сервера. Происхождение названия спорно - одна точка зрения, что это 
"пятнистый сервер" из-за множества заплаток, так называемых 
патчей, в начале проекта, другая точка зрения более серьезна - основатели проекта взяли это имя в честь племени апачей, известного своей приспособляемостью.
Это наиболее популярный сервер в Интернет. Он поддерживает протокол 
HTTP (1.1), стандартизованный 
W3 консорциумом.
Исследования, 
проведенные в Июне 1999 г., показали, что доля веб сервера Apache в общем 
числе работающих веб серверов составляет 60.05%.
В модели клиент-сервер - задача веб сервера ослуживать запросы, 
поступающие от веб клиентов, например веб браузера Lynx ;-)
 
Запрос состоит из трех частей :
Ответ от сервера состоит из заголовка и тела сообщения в зависимости от используемого метода запроса.
| 
        >telnet www.linuxfocus.org 80
        Trying 195.53.25.18...
        Connected to nova.linuxfocus.org.
        Escape character is '^]'.
        GET / HTTP/1.0 <return>
        <return>
        HTTP/1.1 200 OK
        Date: Mon, 27 Sep 1999 21:23:20 GMT
        Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
        Last-Modified: Sun, 26 Sep 1999 16:40:44 GMT
        ETag: "4b005-1616-37ee4c8c"
        Accept-Ranges: bytes
        Content-Length: 5654
        Connection: close
        Content-Type: text/html
        <PAGE HTML>
         | 
Что нам может рассказать этот ответ?
Первая строка показывает используемый протокол и значение, возвращенное 
сервером (значение, превышающее число 400 означает ошибку). Далее идет
дата, версия сервера, дата последней модификации запрашиваемого HTML 
документа (это позволяет веб клиенту принимать решения о действительности
находящихся в кэше файлов). Параметр Content-length показывает размер
ответа, а параметр Content-type - используемый MIME тип ответа (текст,
HTML - документ, изображение).
Это не полное описание : некоторые сообщения все еще являются для меня 
тайной ;-)
Посмотрим какое сообщение возвращает сервер при возникновении ошибки :
| 
    >telnet www.linuxfocus.org 80
    Trying 195.53.25.18...
    Connected to nova.linuxfocus.org.
    Escape character is '^]'.
    get / HTTP/1.0 <return>
    <return>
    HTTP/1.1 501 Method Not Implemented
    Date: Mon, 27 Sep 1999 21:22:03 GMT
    Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)
    Allow: GET, HEAD, OPTIONS, TRACE
    Connection: close
    Content-Type: text/html
     | 
Ответ довольно подробный ;-)
HTTP очень простой протокол, что подтверждают следующие примеры.
| 
    >telnet www.linuxfocus.org 80
    Trying 195.53.25.18...
    Connected to nova.linuxfocus.org.
    Escape character is '^]'.
    GET / < return >
          < return >
     | 
Как видно язык общения между клиентом и сервером достаточно прост, но при использовании версии 1.1 вместо 1.0 для вашего запроса могут возникнуть сложности.
GET / HTTP/1.0< return > < return > HTTP/1.1 200 OK Date: Tue, 24 Aug 1999 22:25:11 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Last-Modified: Sun, 01 Aug 1999 11:50:52 GMT ETag: "4b005-1462-37a4349c" Accept-Ranges: bytes Content-Length: 5218 Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ....Использование версии 1.1 даст следующий результат :
GET / HTTP/1.1 <return > < return > HTTP/1.1 400 Bad Request Date: Tue, 24 Aug 1999 22:24:59 GMT Server: Apache/1.3.3 (Unix) (Red Hat/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>400 Bad Request</TITLE> </HEADBODY> <H1>Bad Request</H1> Your browser sent a request that this server could not understand.<P> client sent HTTP/1.1 request without hostname (see RFC2068 section 9, and 14.23): </P> </BODY></HTML>Запрос с использованием протокола HTTP версии 1.1 требует больше информации. Он состоит из нескольких строк. Дополнительные строки позволяют передать более детальную информацию, которая улучшает качество соединения.
Пример :
GET / HTTP/1.0< return > Host:www.linuxfocus.org< return > < return > [...]Следующее происходит в большинстве взаимодействий модели клиент - сервер при получении сервером запроса :
Веб сервер является интерфейсом между веб клиентом, запрашивающим URL - вы можете встретить другую аббревиатуру (например URI, URN), в общем это одно и то же - и ОС, на которой установлен Apache. Веб клиент посылает запрос и получает обратно ответ, соответствующий запрошенному URL.
Некоторые запросы не могут быть непосредственно обработаны сервером. Серверу необходимо запустить некоторые программы, которые обработают запрос и вернут результат клиенту : так работают CGI (Common Gateway Interface) - скрипты.
| Webpages maintained by the LinuxFocus Editor team © Charles vidal LinuxFocus.org 2000 Click here to report a fault or send a comment to Linuxfocus | Translation information: 
 | 
2000-07-05, generated by lfparser version 1.5