Софт

Http серверы

Рейтинг: 4.4/5.0 (574 проголосовавших)

Категория: Windows: Web серверы

Описание

Лекция 1 - Протокол HTTP

/ Лекции /. ИТ Архив / Лекции / 4_Протокол HTTP / Лекция 1 - Протокол HTTP

Протокол HTTP

В середине 90-х годов очень популярной стала WWW(WorldWideWeb) — «Всемирная паутина». Это набор протоколов и программ для Интернета, представляющих информацию в гипертекстовом формате. Знаменитый браузерMosaic, созданный в Национальном центре по применению супер-ЭВМ (NationalCenterforSupercomputerApplications,NCSA), был первым графическим Web-браузером и способствовал популяризацииWWW.Webразработана в 1989 году в Европейской лаборатории физики частиц (EuropeanLaboratoryforParticlePhysics,CERN) Тимоти Бернерсом-Ли (TimothyBerners-Lee). В настоящее время всеми стандартами, имеющими отношение кWeb, ведает КонсорциумWorldWideWeb(W3C).

Гипертекст применяется для создания документов, взаимосвязанных ссылками, — с ними легко управляться даже новичкам. В протоколах для Webв одних из первых в Интернете стали использовать гипертекст. Для упрощения и повышения эффективности работы с большими объемами непоследовательной информации. Теперь пользователю не обязательно заучивать команды базового протоколаFTP, а для получения информации из Интернета не надо быть асом-программистом — достаточно просто щелкнуть ссылку на странице.

Для упаковки и передачи данных в Webприменяются протоколыMIME(MultipurposeInternetMailExtensions) иTCP/IP(TransmissionControlProtocol/InternetProtocol), а также и другие, напримерFTPиTelnet. Специально дляWebразработаны указателиURL(UniformResourceLocator), протоколHTTP(HypertexttransferProtocol), языкHTML(Hyper-textMarkupLanguage) и интерфейсCGI(CommonGatewayInterface).

Унифицированные указатели ресурсов (URL)

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

На Web-страницах URL используются для ссылок на другие страницы. В виде URL можно описать многие распространенные сетевые команды, указатели на файлы (доступные через FTP) и на сообщения из групп новостейUsenet(всемирной сети UNIX-систем, функционирующей как электронная доска объявлений для групп пользователей) и т.д.

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

Указатель URL состоит из следующих частей:

<схема>:<специальное_имя>

где <схема> — это название схемы (используемый протокол, например http,ftpи т. д.), а <специальное_имя> — имя в формате, зависящем от используемой схемы.

Многие URL имеют следующий формат:

<протокол>://<пользователь>:<пароль>@<хост>:<порт>/<путь>

<пользователь> — это имя пользователя, если оно необходимо (например, дляFTPс не анонимной регистрацией);

<пароль> — пароль этого имени пользователя;

<хост> — доменное имя хоста, например “fictionalcorp . com, или его IP-адрес в числовом формате вида х.х.х.х:

< nopm > — номер IP-порта для соединения (если он не указан, используется стандартное значение для данного протокола);

<путь> — связанные с URL данные, часто это указание подкаталога и имени файла.

http: //www.fictionalcorp.com/corpinfo/sales.html

Фрагмент httpуказывает, чтоURLиспользует протоколHTTP;

Http серверы:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Компьютерра: Устанавливаем HTTP-сервер для обмена файлами

    Устанавливаем HTTP-сервер для обмена файлами

    Нередко возникает ситуация, когда необходимо срочно передать кому-либо файл. Одно из решений такой задачи - установка собственного веб-сервера.

    Нередко возникает ситуация, когда необходимо срочно передать кому-либо файл. Каковы пути решения подобной задачи?

    Передача файлов по электронной почте - утомительное и довольно долгое занятие. Во-первых, время отправки смело умножаем на два: данные сначала будут переданы от вас на сервер, а потом в точности наоборот - от сервера к получателю. Во-вторых, за счёт некоторых особенностей почтового протокола размер физически передаваемых данных будет на 35% больше размера оригинального файла.

    ICQ-сеть для обмена файлами требует прямого соединения, и даже настройка функции "Port Forwarding" на NAT по разным причинам не всегда позволяет решить эту проблему. ICQ, вдобавок, не поддерживает докачку файлов.

    Можно поставить FTP-сервер, но для редких пересылок файлов это неоправданно сложно. Плюс, если клиент находится за NAT, его программное обеспечение должно уметь работать в пассивном FTP-режиме.

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

    Различных версий HTTP-серверов очень много, но для решения нашей проблемки идеально подойдет HTTP File Server .

    Cкачиваем вторую версию приложения и запускаем (инсталляция не требуется).

    Интерфейс программы очень простой и наглядный. Вы просто перетаскиваете мышью в него файлы, выделяете нужный и сообщаете получателю ссылку, указанную в адресной строке. Получатель любыми стандартными средствами (например, Internet Explorer) может его скачать и сохранить.

    Но сначала надо Http File Server настроить. Нажимаем вверху его окна переключатель Easy/Expert Mode для перехода в режим Expert.

    Теперь выберем порт, на котором наш сервер будет работать. Стандартный порт для HTTP - 80, можно оставить его. Однако у некоторых провайдеров 80-ый порт на вход закрыт, тогда необходимо указать любой другой свободный, допустим, 16384. Если у вас NAT-роутер, то надо на нём также указать форвард выбранного порта на ваш компьютер. Обратите внимание, что в режиме ON ("включен") порт изменить нельзя, надо предварительно нажать эту кнопку для перехода в режим OFF ("выключен").

    Затем файлы, которые мы хотим кому-то передать, перетаскиваем в окно Virtual File System. Можно перетаскивать не только отдельные файлы, но и каталоги. Для директорий есть два варианта обработки - Real и Virtual.

    Объясняем: для режима Real будут всегда доступны все файлы, которые есть и будут появляться в будущем, а Virtual позволяет редактировать список доступных объектов.

    Заметим, что если в контекстном меню на каталоге (в том числе и на корневом каталоге "/") поставить галочку на Let browse, то HTTP File Server автоматически сгенерирует страницу со списком файлов на случай, если в каталоге нет index.htm.

    Теперь можно дать пользователю ссылку из строки Address (в HTTP File Server) на сам сервер либо на конкретный файл.

    Если вы даёте ссылки на разные файлы разным пользователям, есть вероятность, что кто-то, набрав просто адрес сервера, скачает все выложенные файлы. Чтобы этого избежать, можно воспользоваться правами доступа. Для этого идём в меню "Menu -> Other options -> Users" и прописываем там имя/пароль для пользователя.

    Затем в Virtual File System на файлах, которые не должны быть доступны, кому попало, нажимаем левой кнопкой мыши для появления контекстного меню и там в поле Restrict access отмечаем пользователей, которым разрешаем доступ к файлу.

    Если вы хотите, чтобы пользователи могли сами закачать вам какой-нибудь файл, то для этого надо перетащить в окно Virtual File System папку и указать, что она будет в режиме Real. В неё пользователи смогут закачивать файлы, если разрешена опция Let browse. Можно разрешить закачивать файлы только избранным пользователям, а не всем. Для этого следуем в контекстное меню и отмечаем тех, кому разрешить в "Upload -> Upload for users".

    В случае, если у вас есть доменное имя, то его можно прописать в "Menu -> IP Address -> Custom", и оно будет подставляться в строке Address вместо IP. Если у вас доступ в интернет через NAT, то в HTTP File Server есть возможность поиска внешнего IP (в "Menu -> IP Address -> Find external address").

    Вы можете сами посмотреть в браузере, как выглядит то, что вы настроили. Для этого в конце строчки Address нажимаем кнопку Browse либо просто копируем в браузер строчку из поля Address. Если у вас NAT, и настроено использование внешних адресов (External address), то предварительно временно выберите в "Menu -> IP Address" какой-нибудь из локальных адресов или просто в браузере вручную введите http://127.0.0.1:номер_порта.

    Как работает веб-сервер

    Как работает веб-сервер

    Иными словами, сайт - это виртуальная проекция некоего проекта, чаще всего — человека или организации — в Сеть. Это прообраз Личности или Организации, созданный при помощи языка гипертекстовой разметки HTML (и, при необходимости, расширенный и дополненный средствами PHP, Java, Flash и т.п.), созданный из двух основных составляющих: • текстовой (словесной, вербальной) и • графической (визуальной).Web-сайт должен находиться на сервере (т.е. компьютере, к которому будут обращаться клиенты) и управляться web-сервером. Web-сервер web-документ по запросу клиента (браузера).

    Серверы. как правило, имеют большой объем дискового пространства и оперативной памяти, а также высокое быстродействие. Они работают 24 часа в сутки 7 дней в неделю. Работу web-сервера обеспечивает администратор web-сервера. Web-серверы бывают разными. Не все web-серверы подходят для той или иной операционной системы. Чаще на сервере установлена OC UNIX, под ней работает web-сервер Apache; для OC Windows NT применяется web-сервер Microsoft Internet Information Server (IIS).

    Разработчик, создавая web-сайт, обычно, имеет ограниченный доступ к серверу (если имеет его вообще). Поэтому для имитации web-сервера на рабочей станции (то есть на том компьютере, где проводится разработка) используются так называемые персональные web-серверы. являющиеся упрощенным, "домашним" вариантом "нормальных" web-серверов. В частности, упрощенным вариантом IIS является PWS, то есть Personal Web Server.

    Запомним, что основное назначение web-сервера - это выполнение запроса клиента на предоставление ему нужной страницы. При этом страница может существовать на сервере физически (в html формате), либо генерироваться динамически (или еще говорят: "на лету", "on-the-fly") в соответствии с информацией, передаваемой клиентом.

    Принцип работы HTTP proxy сервера

    HTTP proxy сервер – это сервер, который обрабатывает HTTP запросы клиентов. Если клиенты имеет общую организацию или домен, или они проявляют подобие в просмотре документов, proxy может эффективно кэшировать запрошенные документы. Кэширование, которое перемещает документы из сети ближе к пользователям, разгружает сетевой траффик, снижает нагрузку на популярных серверах Web и уменьшает время, в течении которого конечные пользователи ждут запрашиваемые документы.

    Proxy сервер принимает запросы от клиентов. Когда это возможно и желательно, он генерирует ответ, основанный на документах, сохранённых в локальном кэше. Иначе, он направляет запрос удалённому серверу, а полученный ответ направляет клиенту, и если ответ был удачен, кэширует его. На рисунке 3.3 схематически показана работа кэширующего proxy-сервера.

    %%img src="http://xn--b1ag1akc.xn--p1ai/DOCUME%3C/p%%0D%0A%3Cp%1/lam/LOCALS%3C/p%%0D%0A%3Cp%1/Temp/moz-screenshot-13.png" />%

    Рис. 3.3. Передача информации через кэширующий proxy-сервер

    Таким образом, proxy-сервер действует, и как сервер и как клиент. Он выступает в качестве сервера при приёмке HTTP запросов от клиентов, и клиентом по отношению к удалённым серверам, с которыми он устанавливает связь, когда не способен ответить на запрос, воспользовавшись данными из локального кэша.

    Рассмотрим работу proxy сервера более подробно. Когда proxy-сервер начинает работать, он находится в состоянии ожидания запросов от клиентов на специальный порт (по умолчанию 8080). После получения, для каждого запроса создаётся новый поток для обработки. Поток обработки анализирует запрос.

    Если запрос должен извлечь документ (обозначается методом запроса “GET”), тогда, если выполняются все ниже перечисленные условия, то документ берётся из кэша и направляется клиенту, при этом число удачного использования кэша увеличивается на единицу (cache hit):

    * необходимый документ имеется в кэше; * в запросе не указано, что документ нельзя взять из кэша (pragma “no cache” не задана в запросе); * в запросе не определена временная область “if-modified-since”; * сервер, с которого запрашивается документ, не входит в список серверов, доступ к которым осуществляется без proxy.

    Во всех остальных случаях запрос будет послан удалённому серверу, с которого запрашивается документ, или другому proxy-серверу, если таковой был определён. При этом число неудачного использования кэша (cache misses), будет увеличено на единицу.

    Ответ от удалённого сервера передаётся клиенту. В добавление к этому в случае удачного ответа на запрос (что обозначается кодом 200 ответа удалённого сервера) и при условии, что сервер не находиться в списке серверов, доступ к которым осуществляется без proxy, найденный документ будет сохранён в кэше на локальном диске. При этом необходимо отметить, что всякий раз, когда получена новая версия кэшируемого документа (например, при ответе на запрос, содержащий поле “if-modified-since”), она заменяет более старую версию в кэше.

    Статистика, накопленная в течении транзакции с удалённым сервером (время соединения, ширина пропускной полосы) используется для модификации статистической базы данных сервера.

    Протокол TCP/IP или как работает Интернет

    В основе работы глобальной сети Интернет лежит набор (стек) протоколов TCP/IP. Но эти термины лишь на первый взгляд кажутся сложными. На самом деле стек протоколов TCP/IP — это простой набор правил обмена информацией, и правила эти на самом деле вам хорошо известны, хоть вы, вероятно, об этом и не догадываетесь. Да, все именно так, по существу в принципах, лежащих в основе протоколов TCP/IP, нет ничего нового: все новое — это хорошо забытое старое.

    Человек может учиться двумя путями:

    1. Через тупое формальное зазубривание шаблонных способов решения типовых задач (чему сейчас в основном и учат в школе). Такое обучение малоэффективно. Наверняка вам приходилось наблюдать панику и полную беспомощность бухгалтера при смене версии офисного софта - при малейшем изменении последовательности кликов мышки, требуемых для выполнения привычных действий. Или приходилось видеть человека, впадающего в ступор при изменении интерфейса рабочего стола?
    2. Через понимание сути проблем, явлений, закономерностей. Через понимание принципов построения той или иной системы. В этом случае обладание энциклопедическими знаниями не играет большой роли - недостающую информацию легко найти. Главное - знать, что искать. А для этого необходимо не формальное знание предмета, а понимание сути.

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

    Итак, начнем.

    Принципы работы интернет-протоколов TCP/IP по своей сути очень просты и сильно напоминают работу нашей советской почты.

    Вспомните, как работает наша обычная почта. Сначала вы на листке пишете письмо, затем кладете его в конверт, заклеиваете, на обратной стороне конверта пишете адреса отправителя и получателя, а потом относите в ближайшее почтовое отделение. Далее письмо проходит через цепочку почтовых отделений до ближайшего почтового отделения получателя, откуда оно тетей-почтальоном доставляется до по указанному адресу получателя и опускается в его почтовый ящик (с номером его квартиры) или вручается лично. Все, письмо дошло до получателя. Когда получатель письма захочет вам ответить, то он в своем ответном письме поменяет местами адреса получателя и отправителя, и письмо отправиться к вам по той же цепочке, но в обратном направлении.

    На конверте письма будет написано примерно следующее:

    Адрес отправителя: От кого. Иванов Иван Иванович Откуда. Ивантеевка, ул. Большая. д. 8, кв. 25

    Адрес получателя: Кому. Петров Петр Петрович Куда. Москва, Усачевский переулок, д. 105, кв. 110

    Теперь мы готовы рассмотреть взаимодействие компьютеров и приложений в сети Интернет (да и в локальной сети тоже). Обратите внимание, что аналогия с обычной почтой будет почти полной.

    Каждый компьютер (он же: узел, хост) в рамках сети Интернет тоже имеет уникальный адрес, который называется IP (Internet Pointer), например: 195.34.32.116. IP адрес состоит из четырех десятичных чисел (от 0 до 255), разделенных точкой. Но знать только IP адрес компьютера еще недостаточно, т.к. в конечном счете обмениваются информацией не компьютеры сами по себе, а приложения, работающие на них. А на компьютере может одновременно работать сразу несколько приложений (например почтовый сервер, веб-сервер и пр.). Для доставки обычного бумажного письма недостаточно знать только адрес дома — необходимо еще знать номер квартиры. Также и каждое программное приложение имеет подобный номер, именуемый номером порта. Большинство серверных приложений имеют стандартные номера, например: почтовый сервис привязан к порту с номером 25 (еще говорят: «слушает» порт, принимает на него сообщения), веб-сервис привязан к порту 80, FTP - к порту 21 и так далее.

    Таким образом имеем следующую практически полную аналогию с нашим обычным почтовым адресом:

    "адрес дома" = "IP компьютера" "номер квартиры" = "номер порта"

    В компьютерных сетях, работающих по протоколам TCP/IP, аналогом бумажного письма в конверте является пакет. который содержит собственно передаваемые данные и адресную информацию — адрес отправителя и адрес получателя, например:

    Адрес отправителя (Source address): IP: 82.146.49.55 Port: 2049 Адрес получателя (Destination address): IP: 195.34.32.116 Port: 53

    Конечно же в пакетах также присутствует служебная информация, но для понимания сути это не важно.

    Обратите внимание, комбинация: "IP адрес и номер порта" - называется "сокет" .

    В нашем примере мы с сокета 82.146.49.55:2049 посылаем пакет на сокет 195.34.32.116:53, т.е. пакет пойдет на компьютер, имеющий IP адрес 195.34.32.116, на порт 53. А порту 53 соответствует сервер распознавания имен (DNS-сервер), который примет этот пакет. Зная адрес отправителя, этот сервер сможет после обработки нашего запроса сформировать ответный пакет, который пойдет в обратном направлении на сокет отправителя 82.146.49.55:2049, который для DNS сервера будет являться сокетом получателя.

    Как правило взаимодействие осуществляется по схеме «клиент-сервер»: "клиент" запрашивает какую-либо информацию (например страницу сайта), сервер принимает запрос, обрабатывает его и посылает результат. Номера портов серверных приложений общеизвестны, например: почтовый SMTP сервер «слушает» 25-й порт, POP3 сервер, обеспечивающий чтение почты из ваших почтовых ящиков «слушает» 110-порт, веб-сервер - 80-й порт и пр.

    Большинство программ на домашнем компьютере являются клиентами - например почтовый клиент Outlook, веб-обозреватели IE, FireFox и пр.

    Номера портов на клиенте не фиксированные как у сервера, а назначаются операционной системой динамически. Фиксированные серверные порты как правило имеют номера до 1024 (но есть исключения), а клиентские начинаются после 1024.

    Повторение - мать учения: IP — это адрес компьютера (узла, хоста) в сети, а порт — номер конкретного приложения, работающего на этом компьютере.

    Однако человеку запоминать цифровые IP адреса трудно - куда удобнее работать с буквенными именами. Ведь намного легче запомнить слово, чем набор цифр. Так и сделано - любой цифровой IP адрес можно связать с буквенно-цифровым именем. В результате например вместо 82.146.49.55 можно использовать имя www.ofnet.ru.  А преобразованием доменного имени в цифровой IP адрес занимается сервис доменных имен — DNS (Domain Name System).

    Рассмотрим подробнее, как это работает. Ваш провайдер явно (на бумажке, для ручной настройки соединения) или неявно (через автоматическую настройку соединения) предоставляет вам IP адрес сервера имен (DNS). На компьютере с этим IP адресом работает приложение (сервер имен), которое знает все доменные имена в Интернете и соответствующие им цифровые IP адреса. DNS-сервер «слушает» 53-й порт, принимает на него запросы и выдает ответы, например:

    Запрос от нашего компьютера: "Какой IP адрес соответствует имени www.ofnet.ru?" Ответ сервера: "82.146.49.55."

    Теперь рассмотрим, что происходит, когда в своем браузере вы набираете доменное имя (URL) этого сайта (www.ofnet.ru ) и, нажав <enter>, в ответ от веб-сервера получаете страницу этого сайта.

    IP адрес нашего компьютера: 91.76.65.216 Браузер: Internet Explorer (IE), DNS сервер (стрима): 195.34.32.116 (у вас может быть другой), Страница, которую мы хотим открыть: www.ofnet.ru .

    Набираем в адресной строке браузера доменное имя www.ofnet.ru и жмем <enter>. Далее операционная система производит примерно следующие действия:

    Отправляется запрос (точнее пакет с запросом) DNS серверу на сокет 195.34.32.116:53. Как было рассмотренно выше, порт 53 соответствует DNS-серверу - приложению, занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, который соответствует введенному имени.

    Диалог примерно следующий:

    Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.ofnet.ru . 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт как правило не пишется, т.к. используется по умолчанию, но его можно и явно указать после двоеточия - http://www.ofnet.ru:80 .

    Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу в на языке HTML - языке разметки текста, который понимает браузер.

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

    Зачем эти принципы надо понимать?

    Например, вы заметили странное поведение своего компьютера - непонятная сетевая активность, тормоза и пр. Что делать? Открываем консоль (нажимаем кнопку «Пуск» - «Выполнить» - набираем cmd - «Ок»). В консоли набираем команду netstat -an и жмем <Enter>. Эта утилита отобразит список установленных соединений между сокетами нашего компьютера и сокетами удаленных узлов. Если мы видим в колонке «Внешний адрес» какие-то чужие IP адреса, а через двоеточие 25-й порт, что это может означать? (Помните, что 25-й порт соответствует почтовому серверу?) Это означает то, что ваш компьютер установил соединение с каким-то почтовым сервером (серверами) и шлет через него какие-то письма. И если ваш почтовый клиент (Outlook например) в это время не запущен, да если еще таких соединений на 25-й порт много, то, вероятно, в вашем компьютере завелся вирус, который рассылает от вашего имени спам или пересылает номера ваших кредитных карточек вкупе с паролями злоумышленникам.

    Также понимание принципов работы Интернета необходимо для правильной настройки файерволла (проще говоря брандмауэра :)). Эта программа (которая часто поставляется вместе с антивирусом), предназначенна для фильтрации пакетов - "своих" и "вражеских". Своих пропускать, чужих не пущать. Например, если ваш фаерволл сообщает вам, что некто хочет установить соединение с каким-либо портом вашего компьютера. Разрешить или запретить?

    Напоследок приведу список портов, с которыми вам, вероятно, придется столкнуться:

    135-139 — эти порты используются Windows для доступа к общим ресурсам компьютера — папкам, принтерам. Не открывайте эти порты наружу, т.е. в районную локальную сеть и Интернет. Их следует закрыть фаерволлом. Также если в локальной сети вы не видите ничего в сетевом окружении или вас не видят, то вероятно это связано с тем, что фаерволл заблокировал эти порты. Таким образом для локальной сети эти порты должны быть открыты, а для Интернета закрыты.

    25 — порт почтового SMTP сервера. Через него ваш почтовый клиент отправляет письма. IP адрес SMTP сервера и его порт (25-й) следует указать в настройках вашего почтового клиента.

    110 — порт POP3 сервера. Через него ваш почтовый клиент забирает письма из вашего почтового ящика. IP адрес POP3 сервера и его порт (110-й) также следует указать в настройках вашего почтового клиента.

    3128, 8080 — прокси-серверы (настраиваются в параметрах браузера).

    Несколько специальных IP адресов:

    127.0.0.1 — это localhost, адрес локальной системы, т.е. локальный адрес вашего компьютера. 0.0.0.0 - так обозначаются все IP-адреса. 192.168.xxx.xxx — адреса, которые можно произвольно использовать в локальных сетях, в глобальной сети Интернет они не используются. Они уникальны только в рамках локальной сети. Адреса из этого диапазона вы можете использовать по своему усмотрению, например, для построения домашней или офисной сети.

    Что такое маска подсети и шлюз по умолчанию (роутер, маршрутизатор)?

    (Эти параметры задаются в настройках сетевых подключений).

    Все просто. Компьютеры объединяются в локальные сети. В локальной сети компьютеры напрямую «видят» только друг друга. Локальные сети соединяются друг с другом через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения — принадлежит ли компьютер-получатель к этой же локальной сети или нет. Если компьютер-получатель принадлежит этой же сети, что и компьютер-отправитель, то пакет передается ему напрямую, в противном случае пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую сеть, т.е. в другое почтовое отделение (по аналогии с советской почтой).

    Напоследок рассмотрим что же означают непонятные термины:

    TCP/IP — это название набора сетевых протоколов. На самом деле передаваемый пакет проходит несколько уровней. (Как на почте: сначала вы пишете писмо, потом помещаете в конверт с адресом, затем на почте на нем ставится штамп и т.д.).

    IP протокол — это протокол так называемого сетевого уровня. Задача этого уровня — доставка ip-пакетов от компьютера отправителя к компьютеру получателю. По-мимо собственно данных, пакеты этого уровня имеют ip-адрес отправителя и ip-адрес получателя. Номера портов на сетевом уровне не используются. Какому порту, т.е. приложению адресован этот пакет, был ли этот пакет доставлен или был потерян, на этом уровне неизвестно — это не его задача, это задача транспортного уровня.

    TCP и UDP — это протоколы так называемого транспортного уровня. Транспортный уровень находится над сетевым. На этом уровне к пакету добавляется порт отправителя и порт получателя.

    TCP — это протокол с установлением соединения и с гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для установления соединения, происходит что-то вроде рукопожатия (-Привет. -Привет. -Поболтаем? -Давай.). Далее по этому соединению туда и обратно посылаются пакеты (идет беседа), причем с проверкой, дошел ли пакет до получателя. Если пакет не дошел, то он посылается повторно («повтори, не расслышал»).

    UDP — это протокол без установления соединения и с негарантированной доставкой пакетов. (Типа: крикнул что-нибудь, а услышат тебя или нет — неважно).

    Над транспортным уровнем находится прикладной уровень. На этом уровне работают такие протоколы, как http. ftp и пр. Например HTTP и FTP — используют надежный протокол TCP, а DNS-сервер работает через ненадежный протокол UDP.

    Как посмотреть текущие соединения?

    Текущие соединения можно посмотреть с помощью команды

    netstat -an

    (параметр n указывает выводить IP адреса вместо доменных имен).

    Запускается эта команда следующим образом:

    «Пуск» - «Выполнить» - набираем cmd - «Ок». В появившейся консоли (черное окно) набираем команду netstat -an и жмем <Enter>. Результатом будет список установленных соединений между сокетами нашего компьютера и удаленных узлов.

    Домашний http сервер

    Установка small http server

    Антивирус может ругнуться на неё, не обращаем внимание, вредоносного кода там нет.

    После того, как вы скачали файл «shttp3.exe», запускаем его, появится окно:

    Ставим галочку, что вы согласны с лицензионным соглашением, эта программа распространяется бесплатно, если её использовать дома, а если хотите её использовать в коммерческих целях, то нужно заплатить, хотя кто вам может запретить =)

    Оставляем путь по умолчанию, ставить программу будем в корень диска «С» в папку «shttps».

    Дальше можно ввести логин и пароль, нет никого смысла в этом, мы использовать её будем в течение непродолжительного времени. Нам же только отдать файл и сразу закрыть доступ.

    Нажимаем кнопку «Install». Все, на этом процесс установки окончен.

    Настройка small hhtp server

    Заходим на диск «С» ищем там папку «shttps», заходим в неё и запускаем исполняющий файл «http.exe».

    В появившемся окне будет показываться информация, работает ли домашний http сервер и кто к нему подключен.  Там, где часики появилась иконка, нажимаем на неё правой кнопкой мыши, и появится контекстное меню, в котором нажимаем на пункт «settings…».

    В появившемся окне нужно нажать на кнопку «HTTP».

    Порт, по которому будет разрешен доступ на ваш сервер – я указываю обычно другой порт, для того, чтобы себя обезопасить, и избежать недоразумений, по умолчанию стоит порт 80, меняем его на порт «7777». В правом верхнем углу окна, есть две кнопки «Оk» и «Cancel», нажимаем «Ок», окно закроется после этого. Теперь давайте проверим, работает ли ваш сервер. Открываем браузер и пишем в вдресной строке: http//127.0.0.1:7777 нажимаем Enter, должно открыться такое вот окно.

    После чего, нужно проверить, доступен ли наш сервер из интернета, для этого заходим на сайт http://2ip.ru и узнаем ваш внешний ip адрес.

    Там будет написано: Ваш IP адрес: х.х.х.х, копируем его и вставляем в адресную строку вашего браузера, либо просто набираем и на конце добавляем после двоеточия порт, к примеру: «http://128.74.25.136:7777».

    Проброс порта на d-link dir-300

    У меня дома интернет раздает роутер dir -300. поэтому если я укажу восьмидесятый порт, то пользователи при заходе на мой сервер, попадут в админку моего роутера, поэтому я меняю порт на 7777, чтобы этого избежать.

    Если у вас тоже стоит роутер, вам нужно пробросить этот порт, иначе ваш сервер из интернета не будет доступен.

    Заходим по адресу http://192.168.0.1 - на ваш роутер, вводим логин и пароль и попадаем в административную панель роутера.

    1. Расширенные настройки.
    2. Перенаправление портов.
    3. Дальше чуть ниже будут правила, на самом первом ставим галочку и приступаем к заполнению остальных полей.
    4. Имя – любое имя на свой вкус.
    5. IP – адрес – нужно ввести ип адрес вашего компьютер, его можно посмотреть следующим образом.

    Нажимаем сочетание клавиш Win+R, в появившемся окне вводим «cmd», жмем кнопку «Ок».

    У вас откроется командная строка, набираем там команду: «ipconfig», и нажимаем интер.

    Вы можете наблюдать ваш ip адрес.

    6. Внешний порт – указываем 7777

    7. Внешний порт – указываем 7777

    8. Внутренний порт – указываем 7777

    9. Тип трафика – выбираем «любой»

    10. Жмем кнопку «Сохранить настройки»

    Выкладываем файл для скачивания

    Http серверы

    Java. HTTP протокол и работа с WEB Программы для работы с WEB

    Для того, чтобы получше понять как работать с HTTP, эта часть статьи будет посвящена написанию простой, но полезной утилиты для иследования WEB узлов, рассмотрения работы proxy-серверов, написанию простого кэширующего proxy и простейшего WEB сервера.

    Простой HTTP клиент

    Начну же c написания простого HTTP клиента. Идея этой утилиты проста. Иногда, для исследования защиты сервера, очень удобно подсмотреть какой заголовок он выдаёт браузеру и какие куки он при этом присылает клиенту. Также эта утилита пригодиться, если требуется подменить поле "User-Agent" или послать такие cookie, которые сервер не записывал на ваш компьютер. Программа выполняет одно не очень хитрое действие: она читает заранее приготовленный файл, содержащий HTTP запрос, и отсылает его серверу, а ответ сервера, вместе с HTTP заголовком, записывает в другой файл, имя которого задано в параметрах инициализации.

    Компилируем программу, получаем HTTPClient.class и попробуем её использовать: заготовим файл с HTTP заголовком (не забудьте два переноса строки в конце файла) и сохраним его, скажем, как "testrequest.txt" в той же директории, где находится HTTPClient.class, после чего запустим программу:

    Если всё пройдёт нормально, сервер devresource.org доступен и работает сеть, через некоторое время вы получите в той же директории файл "testreply.txt", содержащий ответ сервера, включая HTTP заголовок и содержимое документа. Файл "testreply.txt" вы сможете посмотреть в любом текстовом редакторе.

    Как создать мэнеджер докачки.

    Немного модифицировав программу HTTP клиента, вы сможете получить, к примеру, менеджер докачки. Принципы того, как закачать файл не целиком, а только его кусочек, я дал в предыдущей части статьи. Но, на всякий случай, напомню, как это делается:

    вначале методом HEAD получаем всю доступную информацию о файле:

    из полученного ответа выделяем значение параметра

    теперь, чтобы закачать кусок файла от середины длиною в килобайт, указываем следующий заголовок:

    если полученный ответ содержит код "206 Partial Content", то всё, что содержится под заголовком, и будет запрашиваемым куском файла.

    Простой WEB сервер WEB узлы отвечают за выдачу информации HTTP клиентам. Задача следующего примера показать, как работает WEB сервер. Для того, чтобы не слишком перегружать код, заранее ограничим её функционально:
    • сервер будет принимать заголовки длиною не более 64 кб
    • сервер понимает только методы GET и POST, в противном случае выдаётся "400 Bad Request"
    • сервер не сможет выдавать документ по-частям (для мэнеджеров докачек)
    • допустимые коды возвратов для сервера ограничиваются "200 OK", если он удачно обработал запрос, "400 Bad Request", если запрос не понят сервером и "404 Not Found", если запрос понят, но файл не найден
    • результатом работы сервера, будет выдача файла, указанного в запросе. При этом всё, что находится после символа "?" в URI документа и сам этот символ отсекаются.
    • MIME типы, выдаваемые сервером ограничены 5 значениями: text/html для файлов с расширениями htm и html, image/jpeg, image/gif, image/x-xbitmap для файлов с расширениями jpg, gif, bmp соответственно и text/plain для всех остальных файлов

    Программа SimpleWEBServer была создана как модификация SampleServer из первой части статьи:

    Компилируем программу и получаем SimpleWEBServer.class. Так как данная программа была написана с использованием Java 2 API (в части получения даты в формате GMT), то для её компиляции и выполнения нужен JDK версии не ниже 1.2. Данный сервер будет ставиться на localhost:80, но, в принципе, можно использовать любой другой свободный порт и адрес хоста.

    Запускаем сервер: Если программа написала "server is started", то сервер запущен и готов к работе. В противном случае, будет выдана ошибка (скорее всего, что даный порт занят другой программой или запрещён политикой безопасности).

    Проверьте сервер: положите в директорию, где находится программа файл "index.html". Файл может быть, допустим, таким: Теперь откройте браузер и наберите адрес "http://localhost" или "http://localhost/index.html". Страничка должна отобразиться.

    Proxy серверы

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

    Первый тип прокси - это так называемый "шлюз". Как было сказанно в первой части статьи, IP адрес для каждой TCP/IP сети должен быть уникальным. Каждый IP в сети интернет тоже уникален, по этому возникает закономерный вопрос подключения частной локальной сети к сети интернет. Этот вопрос как раз и решают шлюзы (они же proxy-gate). Программа такого прокси устанавливается на одном из серверов внутренней сети, имеющий выход в Internet. Разберём принцип работы такого прокси.

    Допустим, хост прокси имеет следующий IP адрес во внутренней локальной сети - "127.0.0.2", а порт, на который он установлен - 3128 (наиболее часто используются под прокси следующие порты - 81, 3128, 8080, 8081). Допустим, что клиент, находящийся во внутренней подсети, запрашивает страницу с URL "http://www.devresource.org/". Тогда происходит следующее:
    1. клиент открывает сокет локальной сети до прокси сервера ("127.0.0.2:3128")
    2. в открытый сокет клиент пишет HTTP запрос примерно следующего содержания:
    3. прокси сервер получает этот запрос, из параметра "Host" узнаёт хост ресурса, его порт и открывает сокет сети Internet до сервера "www.devresource.org:80"
    4. в открытый сокет, прокси-сервер пишет полученый от клиента HTTP запрос; фактически он перенаправляет запрос от клиента к серверу, не изменяя его.
    5. сервер запрашиваемого ресурса получает HTTP запрос от шлюза, обрабатывает его и высылает ответ обратно, к прокси серверу
    6. шлюз получает ответ от сервера "www.devresource.org:80" и, не изменяя его, отправляет к клиенту
    7. клиент получает ответ от сокета прокси сервера и обрабатывает его

    Для лучшего понимания того, что пошагово описано выше, прилагаю схему, иллюстрирующую процесс шлюзования запроса:

    Схема работы шлюза.

    Следующим типом прокси является "анонимный прокси" или анонимайзер. Принцип его работы схож с работой шлюза, но задача немного не та: задачей анонимайзера является скрыть IP адрес клиента. Этот прокси не пересылает запросы между разными TCP/IP сетями, он просто выступает посредником между клиентом и запрашиваемым хостом.

    Анонимный прокси всё так же получает запрос от клиента, обрабатывает поле "Host", передаёт запрос серверу и возвращает его ответ. Единственное отличие в том, что и ServerSocket, и Socket до указанного хоста лежат в одной сети. Собственно, анонимный прокси является самым простым типом прокси-серверов.

    Ещё одним типом прокси являются так называемые "Firewall" (firewall - огненная стена, в просторечье - файрвол). Это модули системы защиты компьютеров и локальных сетей. Для HTTP суть этих модулей сводится к тому, что они фильтруют нежелательный контент. Например рассмотрим принцип работы простейшего HTTP Firewall, отсекаюего загрузку любых не-текстовых документов и запрещающий запрос страничек, URL которых содержит в себе ключевые слова "sex", "chat" и т.д. У многих на работе стоят подобные файрволы (обычно они функционально совмещены с шлюзами). Зная, как они работают, можно попытаться обойти их.

    Итак, разберём шаги, предпринимаемые HTTP файрволом:
    1. клиент открывает сокет локальной сети до прокси сервера и отправляет ему заголовок
    2. файрвол обрабатывает HTTP заголовок запроса: выделяет URL ресурса и сканирует его на наличие "запретных" слов.
      • если слова найдены - возвращает клиенту ошибку типа "403 Forbidden" и завершает с ним соединение
      • если URL ресурса "в порядке", то соединяется с указанным хостом и передаёт ему запрос, в котором подменяет метод запроса на "HEAD". Например так:
    3. прокси получает часть ответа запрашиваемого сервера и обрабатывает HTTP заголовок ответа: выделяет поле "Content-Type", читает MIME тип документа (по умолчанию, если заголовок "Content-Type" опущен, то считается, что MIME тип - "text/html").
      • если заголовок содержит код возврата отличный от "200 OK", прокси создаёт страничку с информацией об ошибке и отправляет её к клиенту.
      • Если заголовок содержит MIME типа "image/gif" - то есть класса "image/", то в ответ выдаётся заранее заготовленная GIF картинка, содержащая прозрачный пиксел: Впрочем, прокси может просто выдать ошибку типа "403 Forbidden" - всё зависит от качества программы.
      • если заголовок содержит MIME типа "text/html" - то есть класса "text/", то прокси перенаправляет запрос клиента серверу, после чего перенаправляет ответ сервера к клиенту (работает как простой посредник)
      • во всех остальных случаях к клиенту возвращается страничка с ошибкой "403 Forbidden"

    Рассмотрим ещё один тип прокси, называемый кэширующим (cache-proxy).

    Что это значит кэширующий прокси? Это значит, что такой прокси сохраняет некоторые странички к себе в память, а потом, если от клиента придёт запрос на эту страничку, файл будет загружён не из сети, а из кэша - области памяти, куда прокси сохранил страничку.

    Зачем это нужно? Данный принцип значительно сокращает траффик, ведь стоит одному клиенту обратиться, скажем, к "http://www.devresource.org/", как страничка окажется в кэше и для всех следующих клиентов, работающих через данный прокси и запрашивающих "http://www.devresource.org/", серверу не нужно будет снова загружать эту страничку из сети: достаточно будет просто достать её из кэша.

    Какие странички нужно кэшировать, а какие - нет регламентируется следующими правилами: прежде всего, сохраняются только те странички, что были получены методом GET запроса. Кроме того, сохранять или не сохранять в кэш регламентируют такие поля HTTP, как "Pragma" и "Cache-Control". Встречаются эти поля, как вы помните, и в HTTP запросе и в HTTP ответе.

    Вспомним ещё раз значения полей "Pragma" и "Cache-Control":
    • "public" - документ является публичным, его может брать любой клиент из кэша
    • "private" - документ является приватным, из кэша его может брать только клиент, пославший этот запрос
    • "no-store" - не сохранять документ в кэш
    • "no-transform" - если в кэшэ уже находится документ по данному запросу, то его не нужно обновлять ответом на этот запрос сервера
    • "must-revalidate" - в любом случае, лежит этот документ в кэшэ или нет, прокси обязан обновить его на тот, что выдаст сервер
    • "proxy-revalidate" - относительно прокси-сервера означает то же самое
    • "max-age=[seconds]" - количество секунд, которое должен храниться этот документ в кэшэ, начиная от данного момента

    И, как вы помните, значения полей можно совмещать, к примеру: будет обозначать, что прокси обязан сохранить этот документ в кэш, причём только для этого клиента. И что по истечении суток от данного момента (через 86400 секунд) документ из кэша должен быть удалён.

    Внимание! Для прокси-сервера приоритетным является поле "Cache-Control". В случае противоречивых данных в полях "Cache-Control" и "Pragma", прокси сервер будет выполнять команды первого поля, а браузер будет конфигурировать свой кэш в соответствии с полем "Pragma".

    Простой кэширующий прокси

    Для того, чтобы проиллюстрировать всё то, что рассказано о прокси серверах, я написал программу простейшего кэширующего прокси.

    Чтобы не усложнять код, программа имеет следующие ограничения:
    • длина HTTP запроса от клиента не должна превышать 64 кб (чтобы не обрабатывать поле "Content-Length" при POST запросах)
    • обрабатываются только поле "Pragma" из HTTP заголовка запроса; обработка эта заключается в поиске параметра "no-cache"
    • кэш прокси хранится в форме файлов-директорий. К примеру страничка с URL "http://www.devresource.ru/javalinks/catalog.php3?val=this a test!" в системе Windows будет сохранена как ".\cache\www.devresource.org\!javalinks\catalog.php3\val=this%20a%20test%21" - как видно, символы "/" и "?" заменяются, соответственно, на "\!" и "\" (вместо "\" может быть любой символ разделителя пути - берётся java.io.File.separatorChar), а служебный символ "!" обозначающий директорию в кэше и непечатные символы - на %NN, в соответствие с кодом символа.

    Программа CacheProxy была тоже создана как модификация SampleServer из первой части статьи:

    После компиляции программы, получаем CacheProxy.class и запускаем его (перед запуском убедитесь, что порт 3128 на вашем localhost свободен): Если выдана строка "proxy is started", то прокси был успешно запущен.

    Теперь можно проверить его в действии: в настройках своего браузера найдите секцию, где прописываются Proxy сервера и укажите следующий HTTP прокси - имя localhost, порт - 3128. Теперь откройте браузер и немного поползайте по WEB ресурсам. Из-за того, что программа имеет ограниченную функциональность, некоторые ресурсы могут не открыться или выдать ошибку. После завершения работы, откройте в той же директории, где лежит программа, папку "cache" и посмотрите, как прокси сохранил просмотренные вами странички.

    Warning. mysql_connect() [function.mysql-connect ]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

    Warning. mysql_db_query() [function.mysql-db-query ]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

    Warning. mysql_db_query() [function.mysql-db-query ]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

    Warning. mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30

    Узнай о чем ты на самом деле сейчас думаешь тут.

    [an error occurred while processing this directive]

    Warning. mysql_connect() [function.mysql-connect ]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

    Warning. mysql_db_query() [function.mysql-db-query ]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

    Warning. mysql_db_query() [function.mysql-db-query ]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

    Warning. mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95