Опубликовано

Работа с электронной почтой

Работа с электронной почтой

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

В случае, если Вы решите использовать уже созданный почтовый ящик Gmail, то при доступе к почтовому ящику усложниться механизм авторизации на мобильных устройствах. Лучше создайте новый почтовый ящик именно для веб-порталов.

Почтовый ящик создадим в сервисе Google.com, для получения доступа портала к ящику обязательно необходимо подключить дополнительную защиту (двухфакторную аутентификацию) по ссылке https://myaccount.google.com/u/1/security

C:\gl\YandexDisk\Скриншоты\2020-11-06_10-25-57.jpg

Затем необходимо добавить приложение (веб-портал), имеющие доступ к почтовому ящику. Обращаемся по ссылке https://myaccount.google.com/u/1/apppasswords

Добавим новое устройство (приложение). Для этого необходимо нажать левой кнопкой мыши по надписи «Приложение» и определяем сервис (веб-портал) имеющий доступ к почтовому ящику. Выбираем «Другое»

C:\gl\YandexDisk\Скриншоты\2020-11-06_10-44-21.jpg
C:\gl\YandexDisk\Скриншоты\2020-11-06_10-40-31.jpg

Указываем имя сервиса (веб-портала) имеющего доступ к почтовому ящику.

C:\gl\YandexDisk\Скриншоты\2020-11-06_10-41-49.jpg

Далее нажима кнопку «создать». Пароль приложения создан, данный пароль необходимо сохранить. Так при конфигурировании плагинов веб-портала на WordPress указывается имя почтового ящика, имя приложения и пароль доступа.

C:\gl\YandexDisk\Скриншоты\2020-11-06_10-50-43.jpg

Практическая работа

1. Зарегистрировать почтовый ящик gmail для веб-портала https://support.google.com/mail/answer/56256?hl=ru

2. Включить двухфакторную авторизацию;

3. Разрешить внешним приложениям (веб-порталам) подключаться к электронной почте;

4. Создать приложение (веб-портал) в конфигурации электронной почты для удаленной работы.

Опубликовано

Протоколы электронной почты

Протоколы электронной почты — это набор правил, которые помогают клиенту правильно передавать информацию на почтовый сервер или с него. Для передачи электронной почты используются протоколы SMTP, POP и IMAP.

SMTP

SMTP расшифровывается как Simple Mail Transfer Protocol. Впервые он был предложен в 1982 году. Это стандартный протокол, используемый для эффективной и надежной отправки электронной почты через Интернет.

Ключевые моменты:

  • SMTP — это протокол уровня приложения.
  • SMTP — это протокол, ориентированный на соединение.
  • SMTP — это текстовый протокол.
  • Он обрабатывает обмен сообщениями между почтовыми серверами по сети TCP / IP.
  • Помимо передачи электронной почты, SMPT также предоставляет уведомления о входящей почте.
  • Когда вы отправляете электронную почту, ваш почтовый клиент отправляет ее на ваш почтовый сервер, который далее связывается с почтовым сервером получателя с помощью SMTP-клиента.
  • Эти команды SMTP указывают адрес электронной почты отправителя и получателя, а также сообщение для отправки.
  • Обмен командами между серверами осуществляется без вмешательства какого-либо пользователя.
  • Если сообщение не может быть доставлено, отправителю отправляется отчет об ошибке, что делает SMTP надежным протоколом.

Команды SMTP

В следующей таблице описаны некоторые команды SMTP:

SN Описание команды
1 ПРИВЕТ
Эта команда инициирует диалог SMTP.
2 EHELLO
Это альтернативная команда для начала разговора. ESMTP указывает, что сервер отправителя хочет использовать расширенный протокол SMTP.
3 ПОЧТА ОТ
Это указывает на адрес отправителя.
4 RCPT TO
Он идентифицирует получателя письма. Чтобы доставить подобное сообщение нескольким пользователям, эту команду можно повторить несколько раз.
5 РАЗМЕР
Эта команда сообщает серверу размер прикрепленного сообщения в байтах.
6 ДАННЫЕ
Команда DATA означает, что поток данных будет следовать. Здесь поток данных относится к телу сообщения.
7 УВОЛИТЬСЯ
Эта команда используется для разрыва SMTP-соединения.
8 верфи
Эта команда используется принимающим сервером, чтобы проверить, является ли данное имя пользователя действительным или нет.
9 EXPN
Он такой же, как VRFY, за исключением того, что в нем будут перечислены все имена пользователей, которые использовались со списком рассылки.

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

Схема взаимодействия по протоколу SMTP

Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.

Дисциплины и команды протокола. Обмен сообщениями и инструкциями в SMTP ведется в ASCII-кодах. В протоколе определено несколько видов взаимодействия между отправителем почтового сообщения и его получателем, которые здесь называются дисциплинами.

Наиболее распространенной дисциплиной является отправка почтового сообщения, которая начинается по команде MAIL, идентифицирующей отправителя:

MAIL FROM: paul@quest.polyn.kiae.su

Следующей командой определяется адрес получателя:

RCPT TO: paul@apollo.polyn.kiae.su

После того, как определен отправитель и получатель почтового сообщения, можно отправлять последнее:

DATA

Команда DATA вводится без параметров и идентифицирует начало ввода почтового сообщения. Сообщение вводится до тех пор, пока не будет введена строка с точкой в первой позиции. Согласно стандарту почтового сообщения RFC822 отправитель передает заголовок и тело сообщения, которые разделены пустой строкой. Сам протокол SMTP не накладывает каких-либо ограничений на информацию, которая заключена между командой DATA и «.» в первой позиции последней строки. Приведем пример обмена сообщениями при дисциплине отправки почты:

S: MAIL FROM: <paul@quest.polyn.kiae.su>

R: 250 Ok

S: RCPT TO: <dobr@kiae.su>

R: 250 Ok

S: DATA

R: 354 Start mail input; end with <CRLF>.<CRLF>

S: Это текст почтового сообщения

S: .

R: 250

Другой дисциплиной, определенной в протоколе SMTP является перенаправление почтового сообщения (forwarding). Если получатель не найден, но известно его местоположение, то сервер может выдать сообщение:

R: 251 User not local;

will forward to <user@domain.domain>

Если сервер может сделать только предположение о дальнейшей рассылке, то ответ будет несколько иным:

R: 551 User not local;

please try <user@host.domain>

Верификация и расширение адресов составляют дисциплину верификации. В ней используются команды VRFY и EXPN. По команде VRFY сервер подтверждает наличие или отсутствие указанного пользователя:

S: VRFY paul

R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>

Используя команду EXPN можно получить список местных пользователей:

S: EXPN Example-People

R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>

R: 250-Vladimir Drach-Gorkunov<vovka@quest.polyn.kiae.su>

В список требований, разрешенных протоколом SMTP входит кроме отправки почты еще и прямая рассылка сообщений. В этом случае сообщение будет отправляться не в почтовый ящик, а непосредственно на терминал пользователя, если пользователь в данный момент находится за своим терминалом. Прямая рассылка осуществляется по команде SEND, которая имеет такой же синтаксис, как и команда MAIL. Кроме SEND прямую рассылку осуществляют SOML (Send or Mail) и SAML (Send and Mail). Назначение этих команд легко понять из их названия.

Для инициализации канала обмена почтой и его закрытия используются команды HELO и QUIT соответственно. Первой командой сеанса должна быть команда HELO.

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

Если сообщение по какой-либо причине не может быть разослано, то получатель формирует сообщение о неразосланном сообщении:

S: MAIL FROM:<>

R: 250 Ok

S: RCPT TO: <@host.domain:JOE@host.domain>

R: 250 Ok

S: DATA

R: 354 send the mail data, end with .

S: Date 23 Oct 95 11:23:30

S: From: SMTP@remote.domain

S: To: <JOE@host.domain>

S:

S: Undelivered message. Your message lost. 550 No such user.

S: .

Для отладки или проверки соединения по SMTP можно использовать telnet. Для этого вслед за адресом машины следует ввести номер порта:

/users/local>telnet

apollo.polyn.kiae.su 25

25 порт используется в Internet для обмена сообщениями по протоколу SMTP. В интерактивном режиме пользователь сам изображает клиента SMTP и может посмотреть реакцию удаленной машины на его действия.

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

Формат почтового сообщения Internet определен в документе RFC-822 (Standard for ARPA Internet Text Message). Почтовое сообщение состоит из трех частей: конверта, заголовка и тела сообщения. Пользователь видит только заголовок и тело сообщения. Конверт используется только программами доставки. Заголовок всегда находится перед телом сообщения и отделен от него пустой строкой. RFC-822 регламентирует содержание заголовка сообщения. Заголовок состоит из полей. Поля состоят из имени поля и содержания поля. Имя поля отделено от содержания символом «:». Минимально необходимыми являются поля Date, From, cc или To, например:

Date: 26 Aug 76 1429 EDT

From: Jones@Registry.org

cc:

или

Date: 26 Aug 76 1429 EDT

From: Jones@Registry.org

To: Smith@Registry.org

Поле Date определяет дату отправки сообщения, поле From — отправителя, а поля сс и To — получателя(ей). Чаще заголовок содержит дополнительные поля:

Date: 26 Aug 76 1429 EDT

From: George Jones<Jones@Registry.org>

Sender: Secy@SHOST

To: Smith@Registry.org

Message-ID: <4231.629.XYzi-What@Registry.org>

В данном случае поле Sender указывает, что George Jones не является автором сообщения. Он только переслал сообщение, которое получил из Secy@SHOST. Поле Message-ID содержит уникальный идентификатор сообщения и используется программами доставки почты. Следующее сообщение демонстрирует все возможные поля заголовка:

Date: 27 Aug 76 0932

From: Ken Davis <Kdavis@This-Host.This.net>

Subject: Re: The Syntax in the RFC

Sender: KSecy@Other-host

Reply-To: Sam.Irving@Reg.Organization

To: George Jones <Jones@Registry.org>

cc: Important folks:

Tom Softwood <Balsa@Tree.Root>,

«Sam Irving»@Other-Host;,

Standard Distribution:

/main/davis/people/standard@Other-Host

Comment: Sam is away on bisiness.

In-Reply-To: <some.string@DBM.Group>, George`s message

X-Special-action: This is a sample of user-defined field-

names.

Message-ID: <4331.629.XYzi-What@Other-Host

Поле Subject определяет тему сообщения, Reply-To — пользователя, которому отвечают, Comment — комментарий, In-Reply-To — показывает, что сообщение относится к типу «В ответ на Ваше сообщение, отвечающее на сообщение, отвечающее …», X-Special-action — поле, определенное пользователем, которое не определено в стандарте.

Аналогичный принцип соблюдается для протокола IMAP и POP.

IMAP

IMAP расшифровывается как Internet Mail Access Protocol. Впервые он был предложен в 1986 году. Существует пять следующих версий IMAP:

  1. Оригинальный IMAP
  2. IMAP2
  3. IMAP3
  4. IMAP2bis
  5. IMAP4

Ключевые моменты:

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

IMAP команды

В следующей таблице описаны некоторые команды IMAP:

SN Описание команды
1 IMAP_LOGIN
Эта команда открывает соединение.
2 ВОЗМОЖНОСТЬ
Эта команда запрашивает список возможностей, которые поддерживает сервер.
3 NOOP
Эта команда используется в качестве периодического опроса новых сообщений или обновлений статуса сообщений в течение периода бездействия.
4 ВЫБРАТЬ
Эта команда помогает выбрать почтовый ящик для доступа к сообщениям.
5 EXAMINE
Это то же самое, что и команда SELECT, за исключением того, что изменение почтового ящика не допускается.
6 СОЗДАЙТЕ
Он используется для создания почтового ящика с указанным именем.
7 УДАЛЯТЬ
Он используется для окончательного удаления почтового ящика с заданным именем.
8 ПЕРЕИМЕНОВАТЬ
Используется для изменения имени почтового ящика.
9 ВЫЙТИ
Эта команда сообщает серверу, что клиент завершил сеанс. Сервер должен отправить BYE-ответ без тега до ответа OK, а затем закрыть сетевое соединение.

POP

POP расшифровывается как Post Office Protocol. Обычно используется для поддержки одного клиента. Существует несколько версий POP, но POP 3 является текущим стандартом.

Ключевые моменты

  • POP — это стандартный интернет-протокол прикладного уровня.
  • Поскольку POP поддерживает автономный доступ к сообщениям, следовательно, требуется меньше времени на использование Интернета.
  • POP не позволяет искать средство.
  • Чтобы получить доступ к сообщениям, необходимо скачать их.
  • Это позволяет создавать только один почтовый ящик на сервере.
  • Он не подходит для доступа к не почтовым данным.
  • Команды POP обычно сокращаются до кодов из трех или четырех букв. Например. STAT.

Команды POP

В следующей таблице описаны некоторые команды POP:

SN Описание команды
1 АВТОРИЗОВАТЬСЯ
Эта команда открывает соединение.
2 STAT
Используется для отображения количества сообщений, находящихся в данный момент в почтовом ящике.
3 СПИСОК
Он используется для получения сводки сообщений, в которой отображается каждая сводка сообщений.
4 RETR
Эта команда помогает выбрать почтовый ящик для доступа к сообщениям.
5 DELE
Используется для удаления сообщения.
6 RSET
Он используется для сброса сеанса в исходное состояние.
7 УВОЛИТЬСЯ
Он используется для выхода из сеанса.

Сравнение между протоколами POP и IMAP

SN POP IMAP
1 Обычно используется для поддержки одного клиента. Предназначен для работы с несколькими клиентами.
2 Сообщения доступны в автономном режиме. Сообщения доступны в Интернете, хотя он также поддерживает автономный режим.
3 POP не позволяет искать средство. Он предлагает возможность поиска по электронной почте.
4 Все сообщения должны быть загружены. Это позволяет выборочную передачу сообщений клиенту.
5 На сервере может быть создан только один почтовый ящик. Несколько почтовых ящиков могут быть созданы на сервере.
6 Не подходит для доступа к не-почтовым данным. Подходит для доступа к не-почтовым данным, то есть к вложениям
7 Команды POP обычно сокращаются до кодов из трех или четырех букв. Например. STAT. Команды IMAP не сокращены, они полны. Например. ПОЛОЖЕНИЕ ДЕЛ.
8 Это требует минимального использования ресурсов сервера. Клиенты полностью зависят от сервера.
9 Почта после загрузки не может быть доступна из другого места. Позволяет получать доступ к почте из нескольких мест.
10 Электронные письма не загружаются автоматически. Пользователи могут просматривать заголовки и отправителей электронных писем, а затем принять решение о загрузке.
10 POP требует меньше времени использования интернета. IMAP требует больше времени использования интернета.

Задания для самостоятельной работы

1. Основное назначение протоколов SMTP, POP, IMAP?

2. Какие порты передачи данных используют протоколы электронной почты?

3. Что такое формат почтового сообщения?

4. Приведите примеры программ, работающих с электронной почтой?

Опубликовано

Протокол передачи гипертекста HTTP

В модели ARPANET всегда поддерживалась связь между компьютером-источником и компьютером-приемником. Основной принцип построения сети состоял в том, что любой компьютер мог связаться с любым другим компьютером. Передача данных между компьютерами была организована на основе протокола IP (Internet Protocol).

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

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

Многоуровневая сетевая модель

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

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

  • уровень сетевого доступа;
  • межсетевой уровень;
  • транспортный уровень;
  • уровень приложений.

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

Уровень сетевого доступа

Уровень сетевого доступа является самым низким уровнем взаимодействия в сети. Данный уровень обеспечивает безошибочную передачу блоков данных. Только этот уровень оперирует такими элементами, как битовые последовательности, методы кодирования, маркеры. Уровень сетевого доступа несет ответственность за правильную передачу пакетов на участках между непосредственно связанными элементами сети и обеспечивает управление доступом к среде передачи. Вследствие своей сложности уровень сетевого доступа разделяется на два подуровня:

MAC (Medium Access Control) — управление доступом к среде;

LLC (Logical Link Control) — управление логической связью (каналом).

Уровень MAC управляет доступом к сети (с передачей маркера в сетях Token Ring или распознаванием конфликтов в сетях Ethernet) и обеспечивает управление сетью. Уровень LLC, действующий над уровнем MAC, и есть собственно тот уровень, который посылает и получает сообщения с данными.

Межсетевой уровень

Межсетевой уровень обеспечивает передачу данных в различные точки, разбросанные по всему миру. Различные части Интернета (отдельные локальные сети) соединяются между собой посредством компьютеров, которые называются узлами. Соединяемые сети могут быть сетями Ethernet, Token Ring, сетями на телефонных линиях и т. п. На узлах принимается решение о том, как перемешать данные (пакеты) по сети. Отдельные узлы сети не имеют прямых связей со всеми остальными узлами. Поэтому для работы такой системы необходимо, чтобы каждый узел имел информацию о существующих связях и о том, на какой из узлов следует передать пакет для его оптимальной передачи в точку назначения.

Для осуществления маршрутизации каждый узел имеет таблицу (называемую таблицей маршрутизации), где адресу точки назначения поставлен в соответствие адрес узла, на который следует послать данные. В Интернете составление и модификация таблиц маршрутизации (этот процесс тоже является частью маршрутизации и называется также маршрутизацией) определяются протоколами ICMP (Internet Control Message Protocol), RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First). Узлы, выполняющие функции маршрутизации, называются маршрутизаторами,

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

Каждый компьютер, подключенный к Интернету, имеет уникальный адрес. Однако на межсетевом уровне определяется лишь сеть, в которой находится конкретный компьютер. Для определения места расположения в локальной сети компьютера с данным числовым IP-адресом локальные сети используют свои собственные протоколы сетевого уровня (например, локальные сети Ethernet для отыскания Ethernet-адреса по IP-адресу компьютера, находящегося в данной сети, использует протокол ARP).

Информация, пересылаемая по сетям IP, делится по границам байтов на пакеты. Размер пакета обычно лежит в диапазоне от 1 до 1500 байт.

Транспортный уровень

Транспортный уровень определяет правила поддержки сетевых соединений. Типичным протоколом транспортного уровня является протокол TCP (Transmission Control Protocol). Протокол TCP занимается проблемой пересылки больших объемов информации, основываясь на возможностях протокола IP. TCP делит информацию, которую надо переслать, на несколько частей и нумерует их, чтобы обеспечить возможность последующего восстановления. Каждая порция информации вместе с номером образует TCP-пакет, который затем помещается в отдельный IP-пакет, с которым сеть уже «умеет» обращаться.

Получатель (TCP-процесс) распаковывает IP-пакеты и получает TCP-пакеты, далее распаковывает их и объединяет данные. Если какой-то информации недостает, TCP требует переслать эту часть информации снова. Благодаря такой технологии информация собирается в нужном порядке и полностью восстанавливается.

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

Таким образом, протокол TCP обеспечивает гарантированную доставку пакетов, освобождая прикладные процессы от необходимости использовать режим ожидания и повторные передачи для обеспечения надежности

Уровень приложений

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

передача гипертекстовых документов — протокол HTTP (Hypertext Transfer Protocol);

передача файлов — протокол FTP (File Transfer Protocol);

передача сообщений электронной почты — протоколы SMTP (Simple Mail Transfer Protocol) и POP (Post Office Protocol).

Особенностью протоколов уровня приложений является то, что обмен служебной информацией между ними производится в символьном виде.

Порты и службы

IP-адрес позволяет точно идентифицировать компьютер, но в ряде случаев этого недостаточно. Дело в том, что на каждом узле могут быть запущены самые разные службы Интернета, обеспечивающие передачу электронной почты, файлов, гипертекстовой информации и т. п. Каждая служба использует свой протокол прикладного уровня. Например, для передачи гипертекстовых документов используется протокол HTTP, передача файлов производится по протоколу FTP, для работы с электронной почтой используются протоколы SMTP, POPS и т. д.

Для упорядочения работы каждой службе отведен отдельный порт, представляющий собой число от 0 до 65534. Для наиболее популярных служб зарезервированы стандартные номера портов. Так, для FTP это 21, для HTTP — 80, SMTP — 25, РОРЗ — 110. Однако это всего лишь общепринятые значения по умолчанию, поэтому владелец узла может настроить эти службы на работу с совершенно другими портами. Часто это позволяет легко решать некоторые проблемы, например, обеспечить поддержку различных кодировок кириллицы в web. Для реализации этого достаточно предусмотреть автоматическую перекодировку документа на сервере в зависимости от того, с каким портом общается клиентское приложение.

Протокол передачи гипертекста HTTP

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

Как уже отмечалось выше, протоколы приложений могут обмениваться только текстовой информацией. Для обеспечения возможности передачи двоичных файлов по протоколу HTTP используется спецификация MIME (Multipurpose Internet Mail Extension). Согласно спецификации MIME, формат данных описывается следующим образом:

<тип>/<подтип>

Тип определяет, какого рода информация содержится в двоичном файле (текст, приложение, изображение, видеозапись и т. п.), а подтип — формат файла.

Сеанс взаимодействия с сервером HTTP в наиболее общем виде состоит из следующих шагов:

  • установление TCP-соединения;
  • запрос клиента;
  • ответ сервера;
  • разрыв TCP-соединения.

Запрос клиента представляет собой просто требование на передачу HTML-документа или какого-либо другого ресурса. Ответ сервера — код запрашиваемого ресурса.

Запрос клиента

Запрос клиента состоит из четырех компонентов:

  • строки состояния;
  • поля заголовка;
  • пустой строки;
  • тела запроса.

Строка состояния имеет следующий формат:

<метод эапроса> <URL ресурса> <версия протокола НTTP>

Прокомментируем отдельные структурные блоки этого формата:

Метод запроса определяет вид воздействия на ресурс, указанный с помощью URL. Наиболее важны два метода: GET и’POST:

метод GET предназначается для получения ресурса с указанным URL-адресом. При получении запроса GET сервер должен включить код ресурса в ответ клиенту. При этом ресурс не обязательно является гипертекстовым документом;

основное назначение метода POST — передача данных на сервер. Однако на практике метод POST может применяться по-разному, в том числе и для получения информации с сервера;

Версия протокола обычно задается в следующем формате:

HTTP/<верcия>

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

НТТР/1.0

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

<иня поля>: <значение>

Рассмотрим назначение некоторых наиболее часто используемых полей заголовка:

  • Host — доменное имя или IP-адрес сервера, к которому обращается клиент;
  • From — адрес электронной почты пользователя;
  • Accept — МIME-типы данных, обрабатываемые клиентом. Может содержать несколько значений, разделяемых запятыми. Обычно используется для того, чтобы сообщить серверу о типах графических файлов, поддерживаемых клиентом;
  • Accept-Language — идентификаторы, с помощью которых сообщаются языки, поддерживаемые клиентом. Разделяются запятыми;
  • Accept-Charset — идентификаторы, сообщающие серверу о поддерживаемых клиентом кодировках. Разделяются запятыми;
  • Content-Type — MIME-тип данных, содержащихся в теле запроса;
  • Content-Length — число символов, содержащихся в теле запроса;
  • Connection — управляет TCP-соединением. Если в этом поле задано значение Close, то после обработки запроса соединение разрывается. Если задано значение Keep-Alive, то соединение сохраняется и может быть использовано для последующих запросов;
  • User-Agent — информация о клиенте.

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

Ниже приведен пример запроса:

GET http://www.a1tavista.com НТТР/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.04 [en] (Win95; I)

Host: www.altavista.com

Accept: image/gif, image/jpeg, image/png, *.*

Accept-Language: en, ru

Accept-Charset: IS08859-1, Winl251, *

Ответ сервера

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

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

  • строку состояния;
  • поля заголовка;
  • пустую строку;
  • тело запроса.

Строка состояния имеет следующий формат:

<версия протокола> <код ответа> <пояснения>

Здесь:

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

Коды ответов подразделяются на пять групп. Группа, к которой относится код ответа, определяется старшим разрядом кода:

1 — информационное сообщение. Означает, что сервер продолжает обработку запроса клиента. Используется довольно редко;

2 — сообщение об успешной обработке запроса клиента;

3 — сообщение о перенаправлении запроса;

4 — сообщение об ошибке в запросе клиента;

5 — сообщение об ошибке сервера.

Наиболее часто встречающиеся коды ответов приведены в табл. 20.1.

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

Server — наименование и номер версии web-сервера;

Allow — список методов, доступных для данного сервера;

Content-Language —перечень языков, которые должен поддерживать клиент для корректного отображения передаваемого ресурса;

Content-Type — MIME-тип данных, содержащихся в теле ответа сервера;

Content-Length — размер данных, содержащихся в теле ответа сервера;

Last-Modified — дата и время последнего изменения затребованного ресурса;

Date — дата и время создания ответа сервера;

Expires — дата и время, определяющие момент, когда информация, переданная клиенту, считается устаревшей;

Location — адрес реального расположения ресурса. Используется для переадресации запроса;

Cache -Control — директивы управления кэшированием.

В теле ответа содержится код передаваемого клиенту ресурса. Это может быть HTML-документ или любой другой ресурс. Способ обработки ресурса указывается в поле заголовка Content-type.

Ниже приведен пример ответа сервера, полученный в ответ на запрос HTML-документа:

НТТР/1.1 200 ОК

Date: Sat. 11 Nov 2000 14:23:07 GMT

Server: Apache/1.3.6 (Unix) PHP/3.0.7 rus/PL28.12

Connection: close

Content-Type: text/html: charset-windows-1251

Expires: Thu. 01 Jan 1970 00:00:01 GMT

Last-Modified: Sat. 11 Nov 2000 14:24:44 GMT

Vary: accept-charset. user-agent

<html>

<head>

<meta name-«author» content-«WEBLab»>

<title>Novgorod On-Line. Добро пожаловать в Великий

Новгород.</title>

</head>

<STYLE TYPE-«text/Css»x!—

A {text-decoration: none}

—></STYLE>

Задания для самостоятельной работы

1. Что такое клиент и сервер в глобальной сети интернет?

2. Назовите прикладные протоколы в глобальной сети интернет?

3. Что такое порт соединения?

4. Опишите принцип работы браузера при обращении к Web-узлу?

5. Что такое HTML?

6. Что такое CSS?

7. Какие программы используются для разработки Web-страниц?

Опубликовано

Состав и основные элементы DNS

Изначально вся сеть ARPANET объединяла компьютеры в четырёх различных институтах США:

  • Калифорнийский университет в Лос-Анджелесе;
  • Стэнфордский исследовательский центр;
  • Университет Юты;
  • Калифорнийский университет в Санта-Барбаре.

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

В самом начале компьютеров, подключённых к сети, было несколько десятков, и их идентификаторы было легко запомнить. Можно было записать эти адреса в блокнот и использовать его так же, как и телефонные книги.

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

Файл hosts — как первый шаг к созданию DNS

Для решения задачи разработчики решили использовать словарь, который связывал уникальное имя и IP-адрес каждого компьютера в сети. Таким словарём стал файл hosts.txt, который и отвечал за привязку IP-адреса к имени компьютера. Файл лежал на сервере Стэнфордского исследовательского института, и пользователи сети регулярно вручную скачивали этот файл на свои компьютеры, чтобы сохранять актуальность словаря, ведь новые компьютеры появлялись в сети почти каждый день.

Выглядел hosts.txt тогда (да и сейчас) таким образом:

192.168.10.36 MIKE-STRATE-PC

Сетевой (IP) адрес Имя компьютера

При наличии такого файла на компьютере пользователя для связи с компьютером Майка, можно было не запоминать цифры, а использовать понятное латинское имя «MIKE-STRATE-PC».

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

  • В Unix-системах: /etc/hosts
  • В Windows-системах: %Путь до папки Windows%/system32/drivers/etc/hosts

Компьютеру с IP-адресом 192.168.10.36, который находится внутри локальной сети мы указали имя «MIKE-STRATE-PC». После чего можно воспользоваться командой ping, которая пошлёт специальный запрос на компьютер Майка и будет ждать от него ответа. Похоже на то, как вы стучитесь в дверь или звоните в звонок, чтобы узнать, «есть ли кто дома?» Такой запрос можно послать на любой компьютер.

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

В 1984 году Пол Мокапетрис (Paul Mockapetris) описал новую систему под названием DNS (Domain Name System / Система доменных имён), которая была призвана автоматизировать процессы соотнесения IP-адресов и имён компьютеров, а также процессы обновления имён у пользователей без необходимости ручного скачивания файла со стороннего сервера.

Работа DNS в сети интернет

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

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

dns, hierarchy

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

domain_n….domain_2.domain_l

Чем дальше (правее) расположен в адресе домен, тем шире охватываемая им область. Домен высшего уровня (самый правый) представляет собой либо двухбуквенный шифр страны, либо трехбуквенный код, описывающий род деятельности владельца. Основные двухбуквенные домены: Россия — ru (или su), США — us, Германия — de, Англия — uk и т. д.

Трехбуквенная система ранее первоначально применялась исключительно в США, но в настоящее время множество подобных имен принадлежит компаниям и организациям, расположенным за пределами США. Трехбуквенные домены имеют следующий смысл:

  • com — коммерческие организации;
  • edu — учебные организации;
  • gov — правительственные организации;
  • int — международные организации;
  • mil — военные организации;
  • net — сетевые организации;
  • org — некоммерческие организации.

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

Рассмотрим работу DNS и её составных частей поближе.

Подключение

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

Рассмотрим процесс получения IP-адреса по доменному имени на примере домена ru.hexlet.io.

Возможны два варианта событий:

  1. Компьютер посылает запрос на известный ему DNS-сервер. Чаще всего им является DNS-сервер поставщика интернет-услуг (провайдера): какой IP-адрес у домена ru.hexlet.io?. DNS-сервер провайдера находит в своей базе информацию о том, что домен ru.hexlet.io расположен по IP-адресу 104.25.238.104 и возвращает значение нашему компьютеру. Этот процесс похож на то, как использовался файл hosts.txt.
  2. Ближайший известный DNS-сервер не имеет записи о том, по какому IP-адресу располагается домен ru.hexlet.io. В таком случае запускается цепочка процессов, благодаря которым наш компьютер получит IP-адрес домена:
    • Так как домен является иерархической структурой, и все DNS-сервера знают IP-адреса корневых DNS-серверов, то к ним и происходит запрос на получение IP-адреса домена.
    • Корневые DNS-сервера, в соответствии со своей зоной ответственности знают о том, где располагаются DNS-сервера доменов верхнего уровня. Эти адреса возвращаются DNS-серверу нашего провайдера, после чего на нужный DNS-сервер (в нашем случае на DNS-сервер домена .io) посылается запрос на получение IP-адреса домена ru.hexlet.
    • В соответствии со своей зоной ответственности DNS-сервер домена верхнего уровня возвращает IP-адрес DNS-сервера домена hexlet, на который посылается запрос на получение IP-адреса поддомена ru.
    • DNS-сервер возвращает IP-адреса поддомена ru, после чего DNS-сервер нашего провайдера возвращает полученный адрес на наш компьютер, который уже может обратиться к домену ru.hexlet.io по его IP-адресу.

Рекурсия в DNS

Можно заметить, что оба описанных выше варианта сильно различаются: в первом случае мы просто послали запрос и получили ответ, а во втором — возникла необходимость идти от самого корневого домена в процессе поиска нужной нам записи. Такой процесс является рекурсивным, потому что ближайший DNS-сервер непрерывно посылает запросы к другим DNS-серверам до тех пор, пока не получит необходимые ресурсные записи. Данный процесс можно визуализировать следующим образом:

dns, structure

При запросах 1 и 2 ближайший сервер будет получать информацию о местонахождении DNS-серверов, которые входят в зону ответственности того сервера, на который был послан запрос. При запросе 3 будут получены необходимые ресурсные записи домена hexlet и его поддоменов.

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

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

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

Задания для самостоятельной работы

1. Для чего используется DNS?

2. Как происходит поиск имени в DNS по запросу клиента?

3. Какие есть виды подключения к Интернету? Опишите некоторые из них?

4. Как тестируется соединение с другими хостами в Интернете?

5. Что такое Интранет?

6. Можно ли по IP-адресу открыть известный вам сайт?

7. Может ли быть несколько Web-узлов на одном сервере?

Опубликовано

История и этапы развития интернет

Интернет — всемирная система, состоящая из объединенных компьютерных сетей на базе протокола TCP/IP. Это невероятное изобретение 20 века с последующим развитием в 21 веке. Сейчас интернет — это не просто сеть, а целая информационная вселенная, подчиняющаяся техническим, социальным и государственным законам в различных ее частях.

Дата возникновения интернета

С историей возникновения интернета вы можете познакомиться в Википедии. Датой возникновения интернета считается 29 октября 1969 года:

… в 21:00 между двумя первыми узлами сети ARPANET, находящимися на расстоянии в 640 км — в Калифорнийском университете Лос-Анджелеса (UCLA) и в Стэнфордском исследовательском институте (SRI) — провели сеанс связи. Чарли Клайн (Charley Kline) пытался выполнить удалённое подключение из Лос-Анджелеса к компьютеру в Стэнфорде. Успешную передачу каждого введённого символа его коллега Билл Дювалль (Bill Duvall) из Стэнфорда подтверждал по телефону.
В первый раз удалось отправить всего два символа «LO» (изначально предполагалось передать «LOG») после чего сеть перестала функционировать. LOG должно было быть словом LOGIN (команда входа в систему). В рабочее состояние систему вернули уже к 22:30, и следующая попытка оказалась успешной. Именно эту дату можно считать днём рождения интернета.

В 1961 году Леонард Клейнрок (Leonard Kleinrock) опубликовал работу, посвященную пакетной коммутации. Позже эта технология станет ключевым звеном практически всех сетей. А тогда ею заинтересовались специалисты DARPA (Defense Advanced Research Projects Agency) — Агентства Перспективных Исследовательских Проектов министерства обороны США. Идея Клейнрока была подхвачена заинтересованными людьми, и уже в 1965 году Томас Мерил (Thomas Merrill) совместно с Лоуренсом Робертсом (Lawrence Roberts) соединили посредством телефонной линии два компьютера, находившихся в разных штатах США, доказав, что технология пакетной коммутации позволяет создать географически распределенные сети. Суть новой технологии заключается в разбиении передаваемой информации на так называемые пакеты. Каждому пакету присваивается адрес- своего получателя. Имея эти данные, пакеты от разных отправителей, последовательно, друг за другом могут передаваться по одному каналу связи, достигая нужного адресата. Таким образом, несколько систем могут работать одновременно (в понимании пользователя) посредством одного канала связи. Заинтересованность DARPA объяснялась возможностью применения разработанной технологии в случае ядерного взрыва. Распределенная сеть не нуждалась в некоем центральном звене, без которого она не смогла бы существовать. Наоборот, технология изначально использовала стандартные телефонные линии и с легкостью и универсальностью могла быть распределена на большие географические расстояния.

В августе 1968 года Лоуренс Роберте и DARPA основывают сеть DARPNET. Одновременно совместно с другими исследователями разрабатывается спецификация новой сети. К 1969 году к этому проекту присоединяется Стан-фордский научно-исследовательский институт (Stanford Research Institute), a затем Университет Юты (University of Utah) и другие ВУЗы. Охваченные идеями сотрудничества, ученые быстро осознали возможности глобальной сети. Стали организовываться виртуальные конференции, а в 1972 году в сети DARPNET появляются служба электронной почты (e-mail) и Telnet, a годом позже FTP (File Transfer Protocol). Благодаря внедрению e-mail в существующую сеть, ученые, инженеры и военные — тогдашние основные пользователи DARPNET, вышли на новый этап развития межличностных отношений. За командной строкой операционной системы (ОС) Unix стало возможным увидеть человека. Служба Telnet позволяла входить в сеанс работы Unix с удаленного компьютера, a FTP обеспечивал легкий обмен файлами. Благодаря своей открытой архитектуре, DARPNET соединяла различные платформы и операционные системы. Отсутствие каких-либо серьезных технологических ограничений позволяло объединять подсети с различными топологиями в единые комплексы. В 1977 году был введен протокол TCP/IP (Transmission Control Protocol/Internet Protocol), который до сих пор служит связующим звеном разных систем. К началу семидесятых сеть DARPNET стала называться Интернетом.

Роберт Эллиот Кан и Винтон Серф являются изобретателями протокола TCP/IP. В СМИ часто именуются «отцами интернета». Винтон Серф с 2005 года занимал в Google один из ключевых постов. Их так же можно назвать отцами любых компьютерных сетей, потому как они изобрели фундаментальный протокол, лежащий в основе передачи данных.

1 января 1983 года сеть ARPANET перешла на протокол TCP/IP. Эту дату считают официальной датой рождения интернета.

Этапы развития интернета

1) 50-еы годы 20 века. Начало разработки первых компьютеров и зарождение концепции единой глобальной сети в США, Великобритании и Франции.

2) 60-ые и 70-ые годы 20 века. Разработки различных протоколов передачи данных и возникновения обособленных сетей — ARPANET, NPL, Telenet, CYCLADES и др.

3) В 70-ых годах 20 века революционный прорыв — создание протокола TCP/IP.

4) 80-ые годы 20 век. Объединение гипертесктовых документов в единую глобальную сеть, создание суперкомпьютерных первых сайтов. Возникновение первых провайдеров. Продажи ЭВМ.

5) 90-ые годы 20 век. Закрываются частные сети. Объединение старых и текущих сетей, частные подключения ко всемирной паутине из разных стран мира. В связи с распространением ЭВМ растет число абонентов, появляются первые полноценные сайты-справочники.

6) 2000-ые годы 21 век. Формируется коммерческая часть интернета. Возникают поисковые системы. Эволюционируют ЭВМ в ПК, появляются различные операционные системы. Стремительно развиваются серверные технологии, строятся дата-центры. Растет число сайтов по всему миру.

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

В 2017 году возник новый тренд — мобильный интернет превысил компьютерный и это отразилось на Поиске Google в США. На данный момент во множестве стран, включая Россию, мобильный интернет (с мобильных телефонов) обгоняет десктопный (компьютеры).

https://4.bp.blogspot.com/-F1qAbHTYyTE/W70uXwn81UI/AAAAAAAA25E/It_MyZjEibI-T9dOaU8OC0dOCkuofoyLQCLcBGAs/s620/2018-10-10_01-40-00.png

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



Интернет поглотил в себя:

  • деньги и финансы
  • торговлю
  • СМИ
  • радио
  • телевидение
  • игры
  • рекламу
  • услуги телеграфа и телефонию
  • картографирование
  • образование
  • бизнес
  • интернет-инвестиции

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

Типы интернет-сайтов

Современные интернет сайты:

  • интернет-магазины (электронная коммерция)
  • форумы
  • социальные сети
  • различные агрегаторы
  • порталы
  • форумы
  • блоги
  • мессенджеры
  • электронные платёжные системы
  • email
  • онлайн-игры
  • казино
  • поисковые системы
  • видео-порталы

Задания для самостоятельной работы

1. Для чего нужны цифровые адреса (IP-адреса) компьютеров?

2. Что означает аббревиатура WWW?

3. Что такое протокол TCP/IP?

4. Как распределяются доменные имена?

5. Как зарегистрировать доменное имя?

6. Как распределяются доменные имена?

7. Как зарегистрировать доменное имя?

Опубликовано

Протокол передачи файлов FTP

В настоящее время, когда популярность World Wide Web достаточно велика, объем трафика передаваемого по сети Internet по протоколу FTP занимает тем не менее первое место, несколько опережая объем трафика по протоколу HTTP. В этом свете организация файловых архивов в рамках технологии TCP/IP является крайне актуальной задачей.

Архивы используют для решения разных задач, однако наиболее популярными в сети являются свободно доступные архивы или такие архивы, доступ к которым разрешен по анонимному идентификатору пользователя. Таким образом эти архивы можно использовать в качестве:

  • коллекции свободно распространяемого программного обеспечения;
  • коллекции программ для бета-тестирования;
  • коллекции нормативных и регламентных документов;
  • и т.п.

FTP-архив можно использовать и в качестве архива коммерческого программного обеспечения, которое используется в компании, только в этом случае такой архив не должен разрешать анонимного доступа к хранящимся в нем ресурсам.

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

В настоящее время всю систему взаимодействия компонентов FTP-обмена можно представить в виде схемы представленной на рисунке 1.

Рис. 1. Схема взаимодействия компонентов FTP-обмена

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

FTP (File Transfer Protocol или «Протокол Передачи Файлов») — один из старейших протоколов в Internet и входит в его стандарты. Обмен данными в FTP проходит по TCP-каналу. Построен обмен по технологии «клиент-сервер». На рисунке 2 изображена модель протокола.

Рис. 2. Модель протокола

В FTP соединение инициируется интерпретатором протокола пользователя. Управление обменом осуществляется по каналу управления в стандарте протокола TELNET. Команды FTP генерируются интерпретатором протокола пользователя и передаются на сервер. Ответы сервера отправляются пользователю также по каналу управления. В общем случае пользователь имеет возможность установить контакт с интерпретатором протокола сервера и отличными от интерпретатора пользователя средствами.

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

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

FTP — это интерфейс пользователя при обмене файлами по одноименному протоколу. Программа устанавливает канал управления с удаленным сервером и ожидает команд пользователя. Идентификатор удаленного сервера указывается либо аргументом программы, либо в команде интерфейса open.

Если команда ftp работает с пользователем и ожидает его команд, то на экране отображается приглашение «ftp>».

Синтаксис команды:

ftp [-v][-d][-i][-n][host]

  • v — подавляет ответы сервера и статистику передачи данных;
  • n — управляет режимом идентификации пользователя. Если указан этот ключ, то сначала проверяется файл .netrc;
  • i — выключает подтверждения передачи файла при массовом копировании файлов;
  • d — включает режим отладки;
  • g — отключает прозрачность передачи имен.

Первой такой командой является команда open. По этой команде открывается сеанс работы с удаленным сервером:

ftp>open ftp.cmsbook.ru

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

ftp> user anonymous

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

Следующими по важности командами являются команды cd и ls (dir). Назначение этих команд достаточно прозрачно и понятно всем пользователям — навигация по дереву файловой системы и просмотр содержания каталогов. Здесь следует посоветовать пользоваться при просмотре каталогов командой ls с дополнительными параметрами:

ftp>ls -FC

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

Так как в процессе приема-передачи участвуют две машины, то кроме навигации в удаленной файловой системе нужна еще навигация в локальной файловой системе. Для этой цели служит команда lcd (локальная cd). Кроме этого пользователь может выдать и любую команду локальной оболочки, если предварит ее символом «!»:

ftp> !pwd

По этой команде будет выдано имя текущей директории на локальной машине.

И, наконец, самыми важными являются команды приема/передачи данных get, put, mget, mput и bin. По командам get и put можно принять или передать один файл:

ftp> get README.TXT

Команды mget, mput предназначены для приема/передачи набора файлов:

ftp> mget *.gz

Из примера видно, что в последнем случае применяется маска «*». Обычно при передаче групп файлов для каждого файла запрашивается подтверждение. Для того, чтобы избежать этого перед приемом/передачей, следует выдать команду prompt. Последняя переключает режим запроса подтверждения и при повторном использовании этой команды состояние запроса подтверждения восстанавливается. Другой полезной командой является команда hash:

ftp> hash #

Символ «#» можно заменить на любой другой. При работе по медленным линиям или при передаче больших файлов после включения режима hash пользователь имеет возможность видеть процесс передачи данных (знак «#» выдается после передачи каждого блока). И последнее, на чем следует остановить внимание — это команда bin. После выдачи этой команды по умолчанию данные будут передаваться в режиме передачи двоичных данных. Последнее чрезвычайно важно, т.к. при передачи в ASCII нельзя передать программы и архивированные данные. Часто бывает полезно включить режим bin и для символьных данных с произвольной длиной строки, например файлов postscript (*.ps), т.к. в ASCII режиме есть ограничение на длину строки (обычно 254 символа).

Для выхода из ftp следует выполнить команду quit.

Практическое задание

— необходимо скачать приложение FileZilla Client (https://filezilla-project.org/)

— настроить подключение к серверу ftp.cmsbook.ru

(заранее получите логин и пароль подключения)

— cоздать и скопировать тестовый файл index.php

Содержимое текстового файла:

<html>

<head>

</head>

<body>

<b> Hello world!!!</b>

</body>

</html>

  • запустите браузер и в адресной строке браузера перейдите на веб-портал по адресу http://kurs№.cmsbook.ru/index.php
  • при успешной загрузке главной страницы веб-портала появиться надпись

Hello world!!!

  • затем скопируйте на сервер любой текстовый документ, например file1.doc
  • скачайте данный документ с веб-портала с помощью ссылки

http://kurs№.cmsbook.ru/file1.doc

  • скачайте данный документ по протоколу FTP, пройдя авторизацию в браузере

вызовите ссылку ftp://ftp.cmsbook.ru

  • удалите данный файл на сервере;
  • создайте каталог c именем catalog и скопируйте в данный каталог любой графический файл img1.jpg
  • скачайте данный файл с веб-портала с помощью ссылки

http://kurs№.cmsbook.ru/catalog/img1.jpg

— переименуйте файл img1.jpg в файл с именем img2.jpg

— удалите каталог catalog

  • оформите отчет.