Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Введение в сети TCP/IP

Компьютерная сеть — это система связи между двумя или более компьютерами. Локальная вычислительная сеть, ЛВС (Local Area Network, LAN) - это компьютерная сеть, покрывающая относительно небольшую территорию, такую как дом, офис, или небольшую группу зданий. Глобальная вычислительная сеть (Wide Area Network, WAN) представляет собой компьютерную сеть, охватывающую большие территории и включающую в себя десятки и сотни тысяч компьютеров. Лучшим примером WAN является Интернет. Интернет (пишется с заглавной буквы, англ. Internet) - это всемирная система добровольно объединённых компьютерных сетей, построенная на использовании протокола IP и маршрутизации пакетов данных. В современной сети Интернет используется протокол IP четвёртой версии, также называемый как IPv4.

IP-адрес (aй-пи адрес, сокращение от Internet Protocol Address) - это уникальный идентификатор (адрес) устройства или узла (чаще всего компьютера), подключённого к сети (локальной сети или Интернету). В протоколе IP этой версии каждому узлу сети ставится в соответствие IP-адрес длиной 4 октета (байта). Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например: 192.168.0.1.

При построении сетей, составляющих Интернет (например, сетей провайдеров), выбираются строго определённые диапазоны адресов, назначенные организацией ICANN (Internet Corporation for Assigned Names and Numbers - международная некоммерческая организация, созданная осенью 1998 при участии правительства США для регулирования вопросов, связанных с доменными именами, IP-адресами и прочими аспектами функционирования Интернета). ICANN является "высшей инстанцией" в вопросах резервирования диапазонов и имеет свои представительства по всему миру.

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

Маршрутизация (routing) — процесс определения маршрута следования информации в сетях. Разбиение одной большой сети на несколько маленьких подсетей позволяет упростить маршрутизацию.

Компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети. В терминологии сетей TCP/IP маской подсети или маской сети называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.0.0 находится в сети 12.34.0.0. Это бесклассовая адресация, т.е. адресация, основанная на переменной длине маски подсети. Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (логическое И). Например, в случае более сложной маски:

IP-адрес:       00001100 00100010 00111000 01001110 (12.34.56.78)
Маска подсети:  11111111 11111111 11100000 00000000 (255.255.224.0)
Адрес сети:     00001100 00100010 00100000 00000000 (12.34.32.0)

Маску подсети иногда записывают вместе с IP-адресом в нотации CIDR (Classless InterDomain Routing), в формате "IP-адрес/количество бит в маске, установленных в единицу"). Для вышеприведённого примера это будет 12.34.56.78/19.

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

Например, пусть таблица маршрутизации некоего маршрутизатора содержит следующую запись:

Сеть назначения    Маска          Адрес шлюза
12.34.0.0          255.255.0.0    11.22.3.4

Пусть теперь маршрутизатор получает пакет данных с адресом назначения 12.34.56.78. Обрабатывая построчно таблицу маршрутизации, он обнаруживает, что при наложении маски 255.255.0.0 на адрес 12.34.56.78 получается адрес сети 12.34.0.0. В таблице маршрутизации этой сети соответствует шлюз 11.22.3.4, которому и отправляется пакет. Примечание: шлюзом часто называют устройство, предоставляющее доступ к внешней сети.

Если в качестве узла назначения в IP-адресе стоят только единицы, то пакет, имеющий такой адрес, рассылается всем узлам сети с заданным номером сети. Например, в сети 192.190.21.0 пакет с адресом 192.190.21.255 доставляется всем узлам этой сети. Такая рассылка называется широковещательным сообщением (broadcast).

IP-адрес называют динамическим, если он назначается автоматически при подключении устройства к сети и используется в течение ограниченного промежутка времени (как правило, до завершения сеанса подключения). Для получения IP-адреса клиент может использовать протокол DHCP (Dynamic Host Configuration Protocol — протокол динамической конфигурации узла). Компьютер обращается к специальному серверу, называемому сервером DHCP. Сетевой администратор может задать диапазон адресов, распределяемых среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок.

В Windows вы можете узнать настройку протокола IP для своего компьютера, введя команду:

ipconfig /all

Для корректной маршрутизации входящих и исходящих сигналов различных служб TCP/IP сопоставляет различным службам разные порты. Порт представляет собой число, обозначающее виртуальный электронный интерфейс. Например, протокол FTP связывается с портом 21, а серверы Web связываются с портом 80.

MAC-адрес (Media Access Control - управление доступом к носителю) - это уникальный идентификатор, сопоставляемый с различными типами оборудования для компьютерных сетей. MAC-адрес позволяет уникально идентифицировать каждый узел сети и доставлять данные только этому узлу. Существует несколько типов MAC-адресов. Адреса типа MAC-48 наиболее распространены; они используются в таких технологиях, как Ethernet, Token ring, FDDI и др. Они состоят из 48 бит, таким образом, адресное пространство MAC-48 насчитывает 248 (или 281 474 976 710 656) адресов. Согласно подсчётам IEEE (Institute of Electrical and Electronics Engineers - Институт инженеров электротехники и электроники - международная некоммерческая ассоциация специалистов в области техники, мировой лидер в области разработки стандартов по радиоэлектронике и электротехнике), этого запаса адресов хватит по меньшей мере до 2100 года.

Протокол DHCP предоставляет три способа распределения IP-адресов:

Помимо IP-адреса, DHCP также может сообщать клиенту дополнительные параметры, необходимые для нормальной работы в сети (опции DHCP). Некоторыми из наиболее часто используемых опций являются IP-адрес маршрутизатора по умолчанию, маска подсети, адреса серверов DNS, имя домена DNS.

Процесс получения IP-адреса клиентом от сервера DHCP состоит из четырёх этапов:

Если после получения подтверждения от сервера DHCP клиент обнаруживает, что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCP, после чего процедура получения IP-адреса повторяется. Если по каким-то причинам сервер не может предоставить клиенту запрошенный IP-адрес, или если аренда адреса удаляется администратором, сервер рассылает широковещательное сообщение отмены DHCP. При получении такого сообщения соответствующий клиент должен повторить процедуру получения адреса. Клиент может явным образом прекратить аренду IP-адреса; для этого он отправляет сообщение освобождения DHCP тому серверу, который предоставил ему адрес в аренду.

Компания Microsoft впервые включила сервер DHCP в поставку серверной версии Windows NT 3.5, выпущенной в 1994 году. Начиная с Windows 2000 Server реализация DHCP-сервера от Microsoft позволяет динамически обновлять записи DNS, что используется в Active Directory.

DNS (Domain Name System - система доменных имён) - это система, позволяющая преобразовывать символьные имена доменов в IP-адреса (и наоборот) в сетях TCP/IP. DNS важна для работы Интернета, т.к. для соединения с узлом необходима информация о его IP-адресе, а для людей проще запоминать буквенные (обычно осмысленные) адреса, чем последовательность цифр IP-адреса.

Доменное имя содержит, как минимум, две части (которые обычно называются метками), разделённые точкой. Самая правая метка является доменом верхнего уровня (например, для адреса script-coding.com домен верхнего уровня - info). Каждая следующая метка справа налево является поддоменом. Теоретически такое деление может достигать глубины 127 уровней, а каждая метка может содержать до 63 символов, пока общая длина вместе с точками не достигнет 254 символов. Но на практике регистраторы доменных имён используют более строгие ограничения.

Система DNS содержит иерархию серверов DNS, которая совпадает с иерархией доменов. Корневые серверы DNS - это серверы DNS, содержащие информацию о доменах верхнего уровня. Они управляются различными организациями, действующими по согласованию с ICANN. Для повышения устойчивости системы используется множество серверов, содержащих идентичную информацию. Существует 13 корневых серверов, расположенных по всему миру и привязанных к своему региону, их адреса никогда не меняются, а информация о них есть в любой операционной системе.

Предположим, мы набрали в браузере адрес forum.script-coding.com. Браузер знает только IP-адрес сервера DNS, обычно это один из серверов интернет-провайдера (DNS по умолчанию в настройках соединения). Браузер спрашивает у сервера DNS: "какой IP-адрес у forum.script-coding.com?". Сервер DNS обращается к корневому серверу, этот сервер сообщает - "у меня нет информации о данном адресе, но я знаю, что сервер с IP xxx.xx.xxx.x поддерживает доменную зону info". Тогда сервер DNS направляет свой запрос по IP xxx.xx.xxx.x, но тот отвечает - "у меня нет информации о данном сервере, но я знаю, что сервер с IP yyy.yy.yyy.y поддерживает доменную зону script-coding.com". Наконец, тот же запрос отправляется к третьему DNS-серверу, и получается ответ - IP-адрес forum.script-coding.com, который и возвращается клиенту - браузеру. Примечание: DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может выполнять и обратный процесс. Практически запрос на определение имени обычно не идёт дальше кэша DNS, который помнит (ограниченное время) ответы на запросы, проходившие через него ранее. Организации или провайдеры могут по своему усмотрению организовывать кэш DNS.

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

Ethernet ("эзернет", от лат. aether - эфир) - это пакетная технология компьютерных сетей. Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат пакетов и протоколы управления доступом к среде. Сетевая плата (сетевая карта, сетевой адаптер, сетевой интерфейс, Ethernet-адаптер, NIC, т.е. network interface card) - это печатная плата, позволяющая взаимодействовать компьютерам между собой, посредством локальной сети. Обычно сетевая плата идёт как отдельное устройство и вставляется в слоты расширения материнской платы (в основном - PCI, ранние модели использовали шину ISA). На современных материнских платах сетевой адаптер всё чаще является встроенным, таким образом, покупать отдельную плату не нужно до тех пор, пока не требуется организация ещё одного сетевого интерфейса.

Хаб (hub - буквально "ступица колеса") - это в общем смысле узел какой-то сети. В компьютерной технике под этим словом обычно понимают сетевой концентратор, т.е. сетевое устройство для объединения нескольких устройств Ethernet в общий сегмент при помощи витой пары, коаксиального кабеля или оптоволокна. Сетевой коммутатор или свитч (switch - переключатель) - это устройство, предназначенное для тех же целей, что и хаб. В отличие от хаба, который распространяет трафик от одного подключенного устройства ко всем остальным, коммутатор передает данные только непосредственно получателю, что повышает производительность и безопасность сети, избавляя остальные сегменты сети от необходимости (и возможности) обрабатывать данные, которые им не предназначались. Свитч в общем случае может только объединять узлы одной сети по их MAC-адресам, а для соединения нескольких сетей служат маршрутизаторы.

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

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

VPN (Virtual Private Network, виртуальная частная сеть) - это логическая сеть, создаваемая поверх другой сети, например Интернет. При наличии в сети туннелей (например, VPN), связь между двумя хостами, между которыми расположено много узлов, осуществляется за один хоп (узел отправитель - начало туннеля, узел получатель - конец). Задачей, которую можно решать с помощью VPN, может быть, например, связь двух офисов компании через Интернет. Windows XP, 2000 и т.д. можно создать и настроить соединение VPN.

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

Чаще всего прокси-серверы применяются для следующих целей:

Инструменты командной строки в Windows

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

<ИмяКоманды> /?

Команда NETSTAT отображает статистику протокола и текущих сетевых подключений TCP/IP.

Команда PING проверяет наличие связи с указанным узлом.

Команда TRACERT выводит имена и IP-адреса всех маршрутизаторов, через которые проходят пакеты от локального компьютера к указанному узлу.

Команда IPCONFIG выводит различные сведения о текущей конфигурации протокола IP и может осуществлять базовое конфигурирование этого протокола.

Команда NSLOOKUP обращается с запросом к DNS-серверу.

Команда NETSH показывает различные параметры настроек сети.

Протокол HTTP

HTTP (HyperText Transfer Protocol - "протокол передачи гипертекста") - сетевой протокол прикладного уровня для передачи файлов. Основным назначением HTTP является передача веб-страниц (текстовых файлов с разметкой HTML), хотя с помощью него с успехом передаются и другие файлы, как связанные с веб-страницами (изображения и приложения), так и не связанные с ними. HTTP предполагает, что клиентская программа (веб-браузер) способна отображать гипертекстовые веб-страницы и файлы других типов в удобной для пользователя форме.

Сетевой порт - это параметр протоколов TCP и UDP, определяющий назначение пакетов данных, передаваемых на хост по сети. Хост (host - хозяин, принимающий гостей) - это любое устройство, предоставляющее сервисы формата "клиент-сервер" в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах. В более частном случае под хостом могут понимать любой компьютер, сервер, маршрутизатор, подключенный к локальной или глобальной сети. Сетевой порт - это условное число от 1 до 65535, позволяющие различным программам, выполняемым на одном хосте, получать данные независимо друг от друга. Каждая программа обрабатывает данные, поступающие на определённый порт (иногда говорят, что программа "слушает" этот номер порта). Обычно за некоторыми распространёнными сетевыми протоколами закреплены стандартные номера портов (например, веб-серверы обычно принимают данные по протоколу HTTP на порт 80).

HTTPS — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTP, "упаковываются" в криптографический протокол SSL или TLS, и тем самым обеспечивается защита этих данных. В отличие от HTTP, для HTTPS по умолчанию используется порт 443.

Обмен сообщениями идёт по обыкновенной схеме "запрос-ответ". Для идентификации ресурсов HTTP использует глобальные URI(URL). В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами "запрос-ответ". Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер, посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и заголовки запросов последних клиентов. Однако сам протокол не осведомлён о предыдущих запросах и ответах, в нём не предусмотрена внутренняя поддержка состояния, т.к. к нему не предъявляются такие требования.

Стандарт HTTP 1.1 описан в официальном документе RFC 2068, который можно найти в Интернете.

Каждый запрос/ответ состоит из трёх частей:

Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так:

<Метод> <URI> HTTP/<Версия>

Возможные методы (в основном используются методы GET и POST):


OPTIONS Возвращает методы HTTP, которые поддерживаются сервером. Этот метод может служить для определения возможностей веб-сервера.
GET Запрашивает содержимое указанного ресурса. Запрашиваемый ресурс может принимать параметры (например, поисковая система может принимать в качестве параметра искомую строку). Они передаются в строке URI (например: http://www.example.net/resource?param1=value1&param2=value2). Согласно стандарту HTTP, многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET.
HEAD Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Это полезно для извлечения мета-информации, заданной в заголовках ответа, без пересылки всего содержимого.
POST Передаёт пользовательские данные (например, из HTML-формы) заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. В отличие от метода GET, многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться одна копия этого комментария).
PUT Загружает указанный ресурс на сервер.
DELETE Удаляет указанный ресурс.
TRACE Возвращает полученный запрос так, что клиент может увидеть, что промежуточные сервера добавляют или изменяют в запросе.
CONNECT Для использования вместе с прокси-серверами, которые могут динамически переключаться в туннельный режим SSL.

Стартовая строка ответа выглядит так:

HTTP/<Версия> <Код статуса> <Описание статуса>

Первая цифра кода статуса предназначена для определения класса ответа.

Отдельные значения кодов и описаний статуса:


100ContinueКлиент может продолжать запрос.
101Switching ProtocolsСервер принял запрос клиента на переключение на модифицированный протокол.
200Oк (НТТР_ОК)Успешный запрос.
201Created (HTTP_CREATED)Запрос выполнен, в результате этого был создан новый запрос.
202Accepted (HTTP_ACCEPTED)Запрос был принят на обработку, но обработка не завершена.
203Non-Authoritative Information (HTTP_NON_AUTHORITATIVE)Возвращенная информация была собрана с копии третьей стороны.
204No Content (HTTP_NO_CONTENT)Сервер обработал запрос, но в результате данные не получены.
205Reset ContentПользовательский агент переустановит отображение документа.
206Partial ContentСервер выполнил частичный запрос GET к документу.
300Multiple Choices (HTTP_MULTIPLE_CHOICES)Этот заголовок используется для того, чтобы показать, что удовлетворять запрос может более чем один документ.
301Moved Permanently (HTTP_MOVED_PERMANENTLY)Запрошенный документ был перенесен на новый URI.
302Found (HTTP_FOUND)Запрошенный ресурс был временно перемещен на новый URI.
303See Other (HTTP_SEE_OTHER)Ответ на запрос можно найти под различными URI. Он может быть выбран с помощью запроса, сделанного методом GET к этому ресурсу.
304Not Modified (HTTP_NOT_MODIFIED)Сервер отвечает этим кодом, когда клиент выполнил условный запрос GET и запрос был разрешен, но документ не модифицирован.
305Use Proxy (HTTP_USE_PROXY)Доступ к запрошенному ресурсу должен производиться через proxy, заданный в поле Location. Поле Location задает URI для proxy.
307Temporary Redirect (HTTP TEMPORARY REDIRECT)Запрошенный ресурс временно находится под другими URI. Так как переадресация может быть отменена в любой удобный момент, для будущих запросов клиент должен использовать Request-URI.
400Bad RequestЗапрос не понят сервером из-за наличия синтаксической ошибки.
401UnauthorizedЗапрос требует идентификации пользователя.
402Payment RequiredТребуется оплата.
403ForbiddenСервер понял запрос, но он отказывается его выполнять. Запрещено. Идентификация тут не помогает.
404Not FoundСервер не нашел соответствия по запросу Request-URI.
405Method Not AllowedМетод, указанный в Request-Line, не соответствует ресурсу, заданному Request-URI.
406Not AcceptableРесурс, определенный запросом, может генерировать только ответ, характеристики которого не соответствуют заголовкам, посланным в запросе.
407Proxy Authentication RequiredЭтот код подобен коду 401 (unauthorized), но в этом случае клиент должен сначала идентифицировать себя с помощью proxy.
408Request Time-outНа протяжении периода ожидания сервера клиент не сделал запроса.
409ConflictЗапрос не будет завершен вследствие конфликта с текущим состоянием ресурса.
410GoneЗапрошенный ресурс и адрес, по которому можно сделать пересылку, на сервере отсутствуют.
411Length RequiredСервер отказывается принимать запрос без определенного Content-Length.
412Precondition FailedПри проверке на сервере одного или более полей заголовка запроса обнаружено несоответствие.
413Request Entity Too LargeСервер отказывается обрабатывать запрос потому, что размер запроса больше того, что может обработать сервер.
414Request-URI Too LargeСервер отказывается обрабатывать запрос потому, что Request-URI превышает размеры, которые может обработать сервер.
415Unsupported Media TypeНеподдерживаемый медиа тип.
500Internal Server ErrorВнутренняя ошибка сервера.
501Not ImplementedСервер не поддерживает возможностей, необходимых для обработки запроса.
502Bad GatewayСервер, функционирующий как шлюз или proxy, получил ошибочный ответ от подчиненного сервера, к которому он попытался получить доступ для обработки запроса.
503Service UnavailableВ данный момент сервер не в состоянии обработать запрос из-за того, что сервер перегружен или находится на профилактическом обслуживании.
504Gateway Time-outРаботая в режиме шлюза или proxy, сервер не получил вовремя ответ от сервера верхнего уровня.
505HTTP Version not supportedСервер не поддерживает или отказывается поддерживать версию протокола HTTP, которая была использована в последнем запросе.

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

Пример HTTP (запрос):

GET /Python/OOo_Macro.html HTTP/1.1
Host: www.script-coding.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Connection: close

Пример HTTP (ответ):

HTTP/1.0 200 OK
Server: Apache
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<текст запрошенной страницы>

В цепочке запросов/ответов HTTP могут присутствовать один или несколько посредников. Существуют три основных разновидности посредников: прокси-сервера, шлюзы и туннели.

Некоторые опции HTTP-соединения применимы только к соединению с ближайшим не туннельным соседом, некоторые - только к конечным точкам цепочки, а некоторые - ко всем соединениям в цепочке.

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

Некоторые HTTP-заголовки:


allow Список методов, которые поддерживает ресурс. Это поле должно присутствовать в ответе со статусом "405 Method Not Allowed".
content-length Размер тела сообщения в байтах, посланного сервером в ответ на запрос или, в случае запроса HEAD, размер тела сообщения, которое было бы послано в ответ на запрос GET.
content-type Идентифицирует тип информации в теле сообщения, которая посылается получающей стороне или, в случае метода HEAD, тип информации (среды), который был бы послан, если бы использовался метод GET.
last-modified Содержит дату и время, в которое, по мнению отправляющей стороны, ресурс был последний раз модифицирован.
accept Предназначен для информирования сервера о типах данных, которые поддерживаются клиентом (браузером). Вместо списка может указываться значение *.*, что означает "все типы".
set-cookie Установка Cookies сервером.
location URL, куда следует перейти. Производит перенаправление браузера.
pragma Используется для различных целей, одна из которых - запрет кэширования документа.
server Информация о программном обеспечении сервера.
referer Информация о том, откуда пришёл клиент (URL).
user-agent Информация о программном обеспечении клиента.
expires Сообщает, как долго объект может считаться не устаревшим (дата).
vary Информация, используемая клиентом для целей кеширования.
cache-control Информация для клиента о том, что следует кэшировать, что может храниться в кэше, как следует изменить механизм определения срока годности, как выполнять повторную проверку и загрузку.
date Дата-время ответа сервера.
etag При выдаче документа, основанного на файле (картинка, zip-файл и т.д.), Apache передаёт заголовок ETag (объектная метка). ETag - это уникальный идентификатор документа, значение которого меняется при изменении документа. ETag может использоваться клиентом при кэшировании документа.
x-powered-by Информация о программном обеспечении, сгенерировавшем страницу. Признак динамической страницы.
p3p Описание "политики приватности" сайта, может быть проанализировано браузером, что помогает принять решение о том, принимать cookies от данного узла или отклонить их.
connection Состояние HTTP-соединения.

Сокеты

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

Интерфейс сокетов впервые появился в Unix и в той или иной мере поддерживается всеми современными операционными системами.

Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.